
int ext_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,
              _Bool no_leading_period,int flags)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  undefined1 *puVar6;
  byte bVar10;
  undefined1 *puVar7;
  undefined4 *puVar8;
  uint uVar9;
  int iVar11;
  int iVar12;
  byte *pbVar13;
  int iVar14;
  byte *pbVar15;
  byte *pbVar16;
  int iVar17;
  patternlist *ppVar18;
  undefined4 *puVar19;
  int iVar20;
  uint uVar21;
  int *string_00;
  undefined1 *puVar22;
  uint unaff_s1;
  undefined *unaff_s2;
  byte *pbVar23;
  int *unaff_s4;
  int *piVar24;
  byte *pbVar25;
  int *unaff_s5;
  undefined1 *puVar26;
  wchar_t *pattern_00;
  byte *unaff_s6;
  int *piVar27;
  byte *pbVar28;
  undefined *puVar29;
  code *pcVar30;
  undefined *puVar31;
  byte *pbVar32;
  byte *pbVar33;
  code *pcVar34;
  code *pcVar35;
  undefined1 auStack_68 [24];
  uint local_44;
  patternlist *local_34;
  patternlist *list;
  int *local_2c;
  
  puVar1 = PTR___stack_chk_guard_0005b58c;
  puVar22 = auStack_68;
  pbVar25 = (byte *)(pattern + 1);
  list = (patternlist *)0x0;
  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;
  pbVar15 = (byte *)pattern;
  local_44 = (*(code *)PTR_wcslen_0005b4a8)(pattern);
  puVar29 = PTR_DAT_0005b118;
  iVar12 = pattern[1];
  if (iVar12 != 0) {
    unaff_s5 = (int *)0x0;
    local_34 = (patternlist *)&list;
    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;
    unaff_s1 = (uint)(opt - 0x3f < 2);
    puVar22 = auStack_68;
    unaff_s6 = pbVar25;
    do {
      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {
        pbVar15 = &DAT_c0000601;
        uVar2 = iVar12 - 0x21;
        string = (wchar_t *)(uint)(uVar2 < 0x20);
        if ((byte *)string != (byte *)0x0) {
          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {
            iVar12 = *(int *)(pbVar25 + 4);
            if (iVar12 != 0x28) goto LAB_00028d14;
            string = (wchar_t *)0x1;
            unaff_s5 = (int *)((int)unaff_s5 + 1);
            pbVar25 = pbVar25 + 4;
            uVar2 = 7;
          }
          if (iVar12 != 0x29) goto LAB_00028e9c;
          if (unaff_s5 != (int *)0x0) {
            iVar12 = *(int *)(pbVar25 + 4);
            unaff_s5 = (int *)((int)unaff_s5 + -1);
LAB_00028d14:
            pbVar25 = pbVar25 + 4;
            goto joined_r0x00028e80;
          }
          if (1 < opt - 0x3f) {
            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;
          }
          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {
            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);
            puVar3 = (undefined4 *)
                     (*(code *)PTR_wmempcpy_0005b4a4)
                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);
            *puVar3 = 0;
            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;
            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);
            if (list == (patternlist *)0x0) {
              iVar12 = (*(code *)PTR___assert_fail_0005b410)
                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,
                                  PTR_DAT_0005b2cc + -0x7564);
              return iVar12;
            }
            if (*(int *)(pbVar25 + -4) != 0x29) {
              iVar12 = (*(code *)PTR___assert_fail_0005b410)
                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,
                                  PTR_DAT_0005b2cc + -0x7564);
              return iVar12;
            }
            if (0x1f < opt - 0x21) {
              iVar12 = (*(code *)PTR___assert_fail_0005b410)
                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,
                                  PTR_DAT_0005b2cc + -0x7564);
              return iVar12;
            }
                    /* WARNING: Could not emulate address calculation at 0x00028f94 */
                    /* WARNING: Treating indirect jump as call */
            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();
            return iVar12;
          }
          goto LAB_00028d20;
        }
        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {
          uVar2 = local_44;
          if (unaff_s1 == 0) {
            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;
          }
          pbVar15 = (byte *)0x40000000;
          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {
            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);
            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);
            pbVar32 = pbVar25 + 4;
            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);
            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);
            *puVar3 = 0;
            iVar12 = *(int *)(pbVar25 + 4);
            ppVar18->next = (patternlist *)0x0;
            local_34->next = ppVar18;
            pbVar15 = unaff_s6;
            pbVar25 = pbVar32;
            local_34 = ppVar18;
            puVar22 = puVar22 + iVar4;
            unaff_s6 = pbVar32;
            goto joined_r0x00028e80;
          }
          goto LAB_00028d20;
        }
LAB_00028e9c:
        iVar12 = *(int *)(pbVar25 + 4);
        pbVar25 = pbVar25 + 4;
        if (iVar12 == 0) goto LAB_00028d20;
      }
      if (*(int *)(puVar29 + -0x4730) == 0) {
        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);
        uVar5 = 0xffffffff;
        if (iVar12 != 0) {
          uVar5 = 1;
        }
        *(undefined4 *)(puVar29 + -0x4730) = uVar5;
      }
      iVar12 = *(int *)(pbVar25 + 4);
      pbVar32 = pbVar25 + 4;
      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {
        iVar12 = *(int *)(pbVar25 + 8);
        pbVar32 = pbVar25 + 8;
      }
      if (iVar12 == 0x5d) {
        iVar12 = *(int *)(pbVar32 + 4);
        pbVar32 = pbVar32 + 4;
      }
      pbVar15 = (byte *)0x5d;
      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {
        if (iVar12 == 0) goto LAB_00028d20;
        pbVar32 = pbVar25;
        iVar12 = *(int *)pbVar25;
      }
      iVar12 = *(int *)(pbVar32 + 4);
joined_r0x00028e80:
    } while (iVar12 != 0);
  }
LAB_00028d20:
  if (local_2c == *(int **)puVar1) {
    return -1;
  }
  pcVar34 = internal_fnwmatch;
  piVar24 = local_2c;
  puVar29 = PTR___stack_chk_fail_0005b564;
  (*(code *)PTR___stack_chk_fail_0005b564)();
  puVar31 = puVar29 + 0x39dd0;
  puVar3 = *(undefined4 **)(puVar29 + 0x3226c);
  *(byte **)(puVar22 + -0xc) = pbVar25;
  *(undefined4 **)(puVar22 + -0x558) = puVar3;
  *(undefined **)(puVar22 + -0x570) = puVar31;
  *(undefined1 **)(puVar22 + -8) = auStack_68;
  *(undefined **)(puVar22 + -0x1c) = puVar1;
  *(code **)(puVar22 + -4) = pcVar34;
  *(byte **)(puVar22 + -0x10) = unaff_s6;
  *(int **)(puVar22 + -0x14) = unaff_s5;
  *(int **)(puVar22 + -0x18) = unaff_s4;
  *(undefined **)(puVar22 + -0x20) = unaff_s2;
  *(uint *)(puVar22 + -0x24) = unaff_s1;
  *(wchar_t **)(puVar22 + -0x28) = pattern;
  iVar12 = *piVar24;
  *(undefined4 *)(puVar22 + -0x2c) = *puVar3;
  uVar2 = *(uint *)(puVar22 + 0x10);
  pbVar25 = (byte *)string;
  pbVar32 = pbVar15;
  if (iVar12 != 0) {
    unaff_s1 = uVar2 & 2;
    pattern = (wchar_t *)(uVar2 & 0x10);
    *(uint *)(puVar22 + -0x554) = uVar2 & 5;
    *(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);
    *(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;
    *(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;
    *(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;
    unaff_s5 = piVar24 + 1;
    unaff_s6 = (byte *)string_end;
    do {
      unaff_s4 = unaff_s5;
      if (pattern != (wchar_t *)0x0) {
        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);
        puVar31 = *(undefined **)(puVar22 + -0x570);
      }
      if (iVar12 - 0x21U < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))
                           ();
        return iVar12;
      }
      unaff_s5 = unaff_s4;
      if ((byte *)string == pbVar32) goto LAB_000295c4;
      iVar4 = *(int *)pbVar32;
      if (pattern != (wchar_t *)0x0) {
        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);
        puVar31 = *(undefined **)(puVar22 + -0x570);
      }
      uVar2 = 1;
      if (iVar4 != iVar12) goto LAB_000295c8;
      unaff_s6 = (byte *)0x0;
      iVar12 = *unaff_s4;
      pbVar32 = pbVar32 + 4;
      unaff_s5 = unaff_s4 + 1;
      piVar24 = unaff_s4;
    } while (iVar12 != 0);
  }
  uVar2 = 0;
  piVar24 = unaff_s4;
  if (pbVar32 != (byte *)string) {
    piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);
    if (piVar24 == (int *)0x0) {
LAB_000295c4:
      uVar2 = 1;
    }
    else {
      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);
    }
  }
LAB_000295c8:
  iVar4 = *(int *)(puVar22 + -0x2c);
  if (iVar4 == **(int **)(puVar22 + -0x558)) {
    return uVar2;
  }
  pcVar34 = *(code **)(puVar31 + -0x7b8c);
  pcVar35 = ext_match;
  (*pcVar34)();
  pcVar30 = *(code **)(pcVar34 + 0x315c4);
  *(byte **)(puVar22 + -0x590) = pbVar32;
  *(undefined **)(puVar22 + -0x5a8) = unaff_s2;
  puVar3 = *(undefined4 **)(pcVar34 + 0x3166c);
  *(wchar_t **)(puVar22 + -0x5b0) = pattern;
  *(int *)(puVar22 + -0x594) = iVar12;
  pbVar28 = pbVar15 + 1;
  *(uint *)(puVar22 + -0x5c0) = (uint)(byte)puVar22[-0x575];
  *(int **)(puVar22 + -0x5a0) = piVar24;
  *(code **)(puVar22 + -0x5d8) = pcVar34 + 0x391d0;
  *(int *)(puVar22 + -0x588) = iVar4;
  *(code **)(puVar22 + -0x58c) = pcVar35;
  *(byte **)(puVar22 + -0x598) = unaff_s6;
  *(int **)(puVar22 + -0x59c) = unaff_s5;
  *(wchar_t **)(puVar22 + -0x5a4) = string;
  *(uint *)(puVar22 + -0x5ac) = unaff_s1;
  *(wchar_t **)(puVar22 + -0x5c4) = string_end;
  *(undefined4 *)(puVar22 + -0x5b8) = 0;
  *(undefined4 *)(puVar22 + -0x5b4) = *puVar3;
  pbVar32 = pbVar15;
  pbVar16 = pbVar25;
  uVar5 = (*pcVar30)(pbVar15);
  iVar12 = (int)(char)pbVar15[1];
  iVar4 = *(int *)(puVar22 + -0x5d8);
  *(undefined4 *)(puVar22 + -0x5cc) = uVar5;
  puVar6 = puVar22 + -0x5f0;
  if (iVar12 != 0) {
    unaff_s5 = (int *)0x0;
    string = *(wchar_t **)(iVar4 + -0x7fd8);
    unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);
    *(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;
    *(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;
    puVar26 = puVar22 + -0x5f0;
    unaff_s6 = pbVar28;
    do {
      while (puVar6 = puVar26, iVar12 == 0x5b) {
        if (*(int *)((int)string + -0x4730) == 0) {
          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));
          uVar5 = 0xffffffff;
          iVar4 = *(int *)(puVar22 + -0x5d8);
          if (iVar12 != 0) {
            uVar5 = 1;
          }
          *(undefined4 *)((int)string + -0x4730) = uVar5;
        }
        bVar10 = pbVar28[1];
        pbVar13 = pbVar28 + 1;
        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {
          bVar10 = pbVar28[2];
          pbVar13 = pbVar28 + 2;
        }
        if (bVar10 == 0x5d) {
          bVar10 = pbVar13[1];
          pbVar13 = pbVar13 + 1;
        }
        pbVar32 = (byte *)0x5d;
        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {
          if (bVar10 == 0) goto LAB_0002a034;
          pbVar13 = pbVar28;
          bVar10 = *pbVar28;
        }
        iVar12 = (int)(char)pbVar13[1];
joined_r0x0002a188:
        if (iVar12 == 0) goto LAB_0002a034;
      }
      pbVar32 = &DAT_c0000601;
      uVar2 = iVar12 - 0x21U & 0xff;
      pbVar16 = (byte *)(uint)(uVar2 < 0x20);
      if (pbVar16 != (byte *)0x0) {
        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {
          iVar12 = (int)(char)pbVar28[1];
          if (iVar12 != 0x28) goto LAB_0002a028;
          pbVar16 = (byte *)0x1;
          unaff_s5 = (int *)((int)unaff_s5 + 1);
          pbVar28 = pbVar28 + 1;
          uVar2 = 7;
        }
        if (iVar12 != 0x29) goto LAB_0002a198;
        if (unaff_s5 != (int *)0x0) {
          iVar12 = (int)(char)pbVar28[1];
          unaff_s5 = (int *)((int)unaff_s5 + -1);
LAB_0002a028:
          pbVar28 = pbVar28 + 1;
          goto joined_r0x0002a188;
        }
        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {
          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);
        }
        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {
          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);
          puVar6 = puVar26 + iVar12;
          puVar7 = (undefined1 *)
                   (**(code **)(iVar4 + -0x7b7c))
                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);
          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);
          iVar4 = *(int *)(puVar22 + -0x5d8);
          *puVar7 = 0;
          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;
          *puVar8 = puVar26 + iVar12 + 0x18;
          unaff_s1 = *(uint *)(puVar22 + -0x5b8);
          if (unaff_s1 != 0) {
            if (pbVar28[-1] == 0x29) {
              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);
              if (string < (byte *)0x20) {
                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)
                                   + iVar4))();
                return iVar12;
              }
              (**(code **)(iVar4 + -0x7ce0))
                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,
                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);
            }
            (**(code **)(iVar4 + -0x7ce0))
                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455
                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);
          }
          pbVar16 = (byte *)0x454;
          pcVar34 = *(code **)(iVar4 + -0x7ce0);
          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);
          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);
          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);
          (*pcVar34)();
          goto LAB_0002a608;
        }
        break;
      }
      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {
LAB_0002a198:
        iVar12 = (int)(char)pbVar28[1];
        pbVar28 = pbVar28 + 1;
        goto joined_r0x0002a188;
      }
      pbVar13 = *(byte **)(puVar22 + -0x5cc);
      if (unaff_s1 == 0) {
        pbVar13 = pbVar28 + (1 - (int)unaff_s6);
      }
      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;
      pcVar34 = *(code **)(iVar4 + -0x7b7c);
      pbVar16 = pbVar28 + -(int)unaff_s6;
      pbVar23 = pbVar28 + 1;
      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;
      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);
      iVar4 = *(int *)(puVar22 + -0x5d8);
      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);
      iVar12 = (int)(char)pbVar28[1];
      *puVar6 = 0;
      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);
      *puVar19 = 0;
      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;
      *puVar8 = puVar19;
      pbVar32 = unaff_s6;
      unaff_s6 = pbVar23;
      pbVar28 = pbVar23;
      puVar6 = puVar26 + iVar14;
      puVar26 = puVar26 + iVar14;
    } while (iVar12 != 0);
  }
LAB_0002a034:
  pbVar13 = *(byte **)(puVar22 + -0x5b4);
  pcVar34 = *(code **)(iVar4 + -0x7b8c);
  if (pbVar13 == (byte *)*puVar3) {
    return -1;
  }
LAB_0002a608:
  pcVar35 = internal_fnmatch;
  (*pcVar34)();
  pcVar30 = pcVar34 + 0x38ae0;
  puVar8 = *(undefined4 **)(pcVar34 + 0x30f7c);
  *(undefined1 **)(puVar6 + -8) = puVar22 + -0x5f0;
  *(wchar_t **)(puVar6 + -0x1c) = string;
  *(code **)(puVar6 + -0x160) = pcVar30;
  *(code **)(puVar6 + -4) = pcVar35;
  *(byte **)(puVar6 + -0xc) = pbVar28;
  *(byte **)(puVar6 + -0x10) = unaff_s6;
  *(int **)(puVar6 + -0x14) = unaff_s5;
  *(byte **)(puVar6 + -0x18) = pbVar25;
  *(undefined4 **)(puVar6 + -0x20) = puVar3;
  *(uint *)(puVar6 + -0x24) = unaff_s1;
  *(byte **)(puVar6 + -0x28) = pbVar15;
  *(undefined4 **)(puVar6 + -0x144) = puVar8;
  *(byte **)(puVar6 + -0x154) = pbVar13 + 1;
  pbVar23 = (byte *)(uint)*pbVar13;
  *(undefined4 *)(puVar6 + -0x2c) = *puVar8;
  iVar12 = *(int *)(pcVar34 + 0x30cbc);
  pbVar28 = pbVar16;
  pbVar33 = pbVar32;
  if (pbVar23 != (byte *)0x0) {
    uVar2 = *(uint *)(puVar6 + 0x10);
    unaff_s1 = uVar2 & 2;
    pbVar15 = (byte *)(uVar2 & 0x10);
    *(uint *)(puVar6 + -0x140) = uVar2 & 5;
    *(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);
    *(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;
    *(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;
    *(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;
    pbVar25 = pbVar13;
    unaff_s6 = (byte *)string_end;
    do {
      pbVar13 = pbVar23;
      if (pbVar15 != (byte *)0x0) {
        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();
        pcVar30 = *(code **)(puVar6 + -0x160);
        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);
      }
      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar12 = (*(pcVar30 +
                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();
        return iVar12;
      }
      uVar2 = 1;
      pbVar23 = pbVar13;
      if (pbVar33 == pbVar16) goto LAB_0002a8e4;
      pbVar23 = (byte *)(uint)*pbVar33;
      if (pbVar15 != (byte *)0x0) {
        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();
        pcVar30 = *(code **)(puVar6 + -0x160);
        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);
      }
      uVar2 = 1;
      unaff_s6 = pbVar13;
      if (pbVar23 != pbVar13) goto LAB_0002a8e4;
      pbVar25 = *(byte **)(puVar6 + -0x154);
      unaff_s6 = (byte *)0x0;
      pbVar23 = (byte *)(uint)*pbVar25;
      pbVar33 = pbVar33 + 1;
      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;
    } while (pbVar23 != (byte *)0x0);
  }
  uVar2 = 0;
  if (pbVar33 != pbVar16) {
    pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);
    if (pbVar25 == (byte *)0x0) {
      uVar2 = 1;
    }
    else {
      uVar2 = (uint)(*pbVar33 != 0x2f);
    }
  }
LAB_0002a8e4:
  iVar4 = *(int *)(puVar6 + -0x2c);
  if (iVar4 == **(int **)(puVar6 + -0x144)) {
    return uVar2;
  }
  pcVar34 = *(code **)(pcVar30 + -0x7b8c);
  pcVar35 = rpl_fnmatch;
  (*pcVar34)();
  pcVar30 = *(code **)(pcVar34 + 0x302e0);
  *(uint *)(puVar6 + -0x19c) = unaff_s1;
  piVar24 = *(int **)(pcVar34 + 0x30338);
  *(byte **)(puVar6 + -0x180) = pbVar33;
  *(byte **)(puVar6 + -0x198) = pbVar23;
  *(code **)(puVar6 + -0x1c8) = pcVar34 + 0x37e9c;
  *(code **)(puVar6 + -0x17c) = pcVar35;
  *(int *)(puVar6 + -0x184) = iVar12;
  *(byte **)(puVar6 + -0x188) = unaff_s6;
  *(int **)(puVar6 + -0x18c) = unaff_s5;
  *(byte **)(puVar6 + -400) = pbVar25;
  *(byte **)(puVar6 + -0x194) = pbVar16;
  *(byte **)(puVar6 + -0x1a0) = pbVar15;
  *(int *)(puVar6 + -0x1b4) = iVar4;
  *(byte **)(puVar6 + -0x1b8) = pbVar32;
  *(int *)(puVar6 + -0x1a4) = *piVar24;
  iVar12 = (*pcVar30)();
  iVar4 = *(int *)(puVar6 + -0x1c8);
  if (iVar12 != 1) {
    puVar22 = puVar6 + -0x1ac;
    pcVar34 = *(code **)(iVar4 + -0x7b28);
    puVar26 = puVar6 + -0x1b4;
    *(undefined4 *)(puVar6 + -0x1ac) = 0;
    *(undefined4 *)(puVar6 + -0x1a8) = 0;
    iVar12 = (*pcVar34)(0,puVar26,0,puVar22);
    uVar2 = iVar12 + 1;
    iVar4 = *(int *)(puVar6 + -0x1c8);
    if (uVar2 != 0) {
      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);
      uVar5 = 0x129;
      iVar4 = *(int *)(puVar6 + -0x1c8);
      if (iVar12 == 0) goto LAB_0002b570;
      piVar27 = (int *)(puVar6 + -0x1b8);
      string_00 = piVar27;
      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);
      iVar14 = iVar12 + 1;
      iVar4 = *(int *)(puVar6 + -0x1c8);
      if (iVar14 != 0) {
        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);
        iVar4 = *(int *)(puVar6 + -0x1c8);
        if (iVar20 == 0) {
          uVar5 = 0x12d;
          goto LAB_0002b570;
        }
        uVar21 = uVar2 + iVar14;
        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {
          if (uVar21 < 2000) {
            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);
            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);
            string_00 = pattern_00 + uVar2;
            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);
            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);
            iVar4 = *(int *)(puVar6 + -0x1c8);
            if (iVar11 != 0) {
              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);
              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;
              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,
                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),
                                         *(int *)(puVar6 + iVar20 + -0x1d0));
              iVar4 = *(int *)(puVar6 + -0x1c8);
              goto LAB_0002b300;
            }
          }
          else {
            iVar20 = (**(code **)(iVar4 + -0x7be8))();
            iVar4 = *(int *)(puVar6 + -0x1c8);
            if (iVar20 == 0) goto LAB_0002b490;
            pcVar34 = *(code **)(iVar4 + -0x7b28);
            *(int *)(puVar6 + -0x1bc) = iVar20;
            string_00 = (int *)(iVar20 + uVar2 * 4);
            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);
            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);
            iVar4 = *(int *)(puVar6 + -0x1c8);
            if (iVar20 != 0) {
              pcVar34 = *(code **)(iVar4 + -0x7b28);
              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);
              (*pcVar34)(string_00,piVar27,iVar14,puVar22);
              *(byte **)(puVar6 + -0x1d0) = pbVar28;
              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12
                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),
                                         *(int *)(puVar6 + -0x1d0));
              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));
              iVar4 = *(int *)(puVar6 + -0x1c8);
              goto LAB_0002b300;
            }
          }
          uVar5 = 0x147;
LAB_0002b570:
          iVar12 = (**(code **)(iVar4 + -0x7ce0))
                             (*(int *)(iVar4 + -0x7e24) + -0x7864,
                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,
                              *(int *)(iVar4 + -0x7e24) + -0x7558);
          return iVar12;
        }
LAB_0002b490:
        iVar12 = -1;
        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();
        iVar4 = *(int *)(puVar6 + -0x1c8);
        *puVar3 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  string_00 = *(int **)(puVar6 + -0x1b8);
  iVar12 = (**(code **)(iVar4 + -0x7c0c))(string_00);
  *(byte **)(puVar6 + -0x1d0) = pbVar28;
  iVar12 = internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,
                            (char *)((int)string_00 + iVar12),
                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))
  ;
  iVar4 = *(int *)(puVar6 + -0x1c8);
LAB_0002b300:
  iVar14 = *(int *)(puVar6 + -0x1a4);
  if (iVar14 != *piVar24) {
    (**(code **)(iVar4 + -0x7b8c))();
    iVar12 = string_00[8];
    iVar4 = *string_00;
    uVar2 = (uint)(iVar12 < iVar4);
    uVar21 = string_00[7];
    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {
      iVar11 = iVar4 - iVar12;
      uVar9 = uVar21;
      iVar20 = iVar4;
      do {
        iVar17 = iVar12 - uVar9;
        uVar2 = iVar11 + uVar9;
        if (iVar17 < iVar11) {
          iVar20 = iVar20 - iVar17;
          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);
          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);
          do {
            puVar19 = puVar3 + 1;
            uVar5 = *puVar3;
            *puVar3 = *puVar8;
            *puVar8 = uVar5;
            uVar2 = uVar9;
            puVar3 = puVar19;
            puVar8 = puVar8 + 1;
          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);
        }
        else {
          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);
          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);
          do {
            puVar19 = puVar3 + 1;
            uVar5 = *puVar3;
            *puVar3 = *puVar8;
            *puVar8 = uVar5;
            puVar3 = puVar19;
            puVar8 = puVar8 + 1;
          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));
        }
      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));
    }
    string_00[8] = iVar4;
    string_00[7] = (iVar4 - iVar12) + uVar21;
    return uVar2;
  }
  return iVar12;
}



uint FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  byte bVar8;
  undefined4 *puVar6;
  uint uVar7;
  int iVar9;
  int iVar10;
  byte *pbVar11;
  byte *pbVar12;
  byte *pbVar13;
  int iVar14;
  undefined4 *puVar15;
  int iVar16;
  int iVar17;
  uint uVar18;
  int *piVar19;
  undefined1 *puVar20;
  uint unaff_s1;
  undefined *unaff_s2;
  byte *pbVar21;
  int *unaff_s4;
  int *piVar22;
  int *unaff_s5;
  undefined1 *puVar23;
  undefined1 *puVar24;
  byte *unaff_s6;
  int *piVar25;
  byte *pbVar26;
  byte *pbVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  byte *pbVar33;
  byte *pbVar34;
  code *pcVar35;
  code *pcVar36;
  undefined1 auStack_68 [24];
  uint local_44;
  int *local_34;
  int local_30;
  int *local_2c;
  
  puVar1 = PTR___stack_chk_guard_0005b58c;
  puVar20 = auStack_68;
  pbVar26 = param_2 + 4;
  local_30 = 0;
  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;
  pbVar12 = param_2;
  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);
  puVar28 = PTR_DAT_0005b118;
  iVar10 = *(int *)(param_2 + 4);
  if (iVar10 != 0) {
    unaff_s5 = (int *)0x0;
    local_34 = &local_30;
    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;
    unaff_s1 = (uint)(param_1 - 0x3fU < 2);
    puVar20 = auStack_68;
    unaff_s6 = pbVar26;
    do {
      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {
        pbVar12 = &DAT_c0000601;
        uVar2 = iVar10 - 0x21;
        param_3 = (byte *)(uint)(uVar2 < 0x20);
        if (param_3 != (byte *)0x0) {
          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {
            iVar10 = *(int *)(pbVar26 + 4);
            if (iVar10 != 0x28) goto LAB_00028d14;
            param_3 = (byte *)0x1;
            unaff_s5 = (int *)((int)unaff_s5 + 1);
            pbVar26 = pbVar26 + 4;
            uVar2 = 7;
          }
          if (iVar10 != 0x29) goto LAB_00028e9c;
          if (unaff_s5 != (int *)0x0) {
            iVar10 = *(int *)(pbVar26 + 4);
            unaff_s5 = (int *)((int)unaff_s5 + -1);
LAB_00028d14:
            pbVar26 = pbVar26 + 4;
            goto joined_r0x00028e80;
          }
          if (1 < param_1 - 0x3fU) {
            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;
          }
          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {
            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);
            puVar3 = (undefined4 *)
                     (*(code *)PTR_wmempcpy_0005b4a4)
                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);
            *puVar3 = 0;
            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;
            *local_34 = (int)(puVar20 + iVar10 + 0x18);
            if (local_30 == 0) {
              uVar2 = (*(code *)PTR___assert_fail_0005b410)
                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,
                                 PTR_DAT_0005b2cc + -0x7564);
              return uVar2;
            }
            if (*(int *)(pbVar26 + -4) != 0x29) {
              uVar2 = (*(code *)PTR___assert_fail_0005b410)
                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,
                                 PTR_DAT_0005b2cc + -0x7564);
              return uVar2;
            }
            if (0x1f < param_1 - 0x21U) {
              uVar2 = (*(code *)PTR___assert_fail_0005b410)
                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,
                                 PTR_DAT_0005b2cc + -0x7564);
              return uVar2;
            }
                    /* WARNING: Could not emulate address calculation at 0x00028f94 */
                    /* WARNING: Treating indirect jump as call */
            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)
                              ))();
            return uVar2;
          }
          goto LAB_00028d20;
        }
        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {
          uVar2 = local_44;
          if (unaff_s1 == 0) {
            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;
          }
          pbVar12 = (byte *)0x40000000;
          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {
            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);
            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);
            pbVar33 = pbVar26 + 4;
            piVar22 = (int *)(puVar20 + iVar4 + 0x18);
            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);
            *puVar3 = 0;
            iVar10 = *(int *)(pbVar26 + 4);
            *piVar22 = 0;
            *local_34 = (int)piVar22;
            pbVar12 = unaff_s6;
            pbVar26 = pbVar33;
            local_34 = piVar22;
            puVar20 = puVar20 + iVar4;
            unaff_s6 = pbVar33;
            goto joined_r0x00028e80;
          }
          goto LAB_00028d20;
        }
LAB_00028e9c:
        iVar10 = *(int *)(pbVar26 + 4);
        pbVar26 = pbVar26 + 4;
        if (iVar10 == 0) goto LAB_00028d20;
      }
      if (*(int *)(puVar28 + -0x4730) == 0) {
        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);
        uVar5 = 0xffffffff;
        if (iVar10 != 0) {
          uVar5 = 1;
        }
        *(undefined4 *)(puVar28 + -0x4730) = uVar5;
      }
      iVar10 = *(int *)(pbVar26 + 4);
      pbVar33 = pbVar26 + 4;
      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {
        iVar10 = *(int *)(pbVar26 + 8);
        pbVar33 = pbVar26 + 8;
      }
      if (iVar10 == 0x5d) {
        iVar10 = *(int *)(pbVar33 + 4);
        pbVar33 = pbVar33 + 4;
      }
      pbVar12 = (byte *)0x5d;
      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {
        if (iVar10 == 0) goto LAB_00028d20;
        pbVar33 = pbVar26;
        iVar10 = *(int *)pbVar26;
      }
      iVar10 = *(int *)(pbVar33 + 4);
joined_r0x00028e80:
    } while (iVar10 != 0);
  }
LAB_00028d20:
  if (local_2c == *(int **)puVar1) {
    return 0xffffffff;
  }
  pcVar35 = FUN_00029320;
  piVar22 = local_2c;
  puVar28 = PTR___stack_chk_fail_0005b564;
  (*(code *)PTR___stack_chk_fail_0005b564)();
  puVar30 = puVar28 + 0x39dd0;
  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);
  *(byte **)(puVar20 + -0xc) = pbVar26;
  *(undefined4 **)(puVar20 + -0x558) = puVar3;
  *(undefined **)(puVar20 + -0x570) = puVar30;
  *(undefined1 **)(puVar20 + -8) = auStack_68;
  *(undefined **)(puVar20 + -0x1c) = puVar1;
  *(code **)(puVar20 + -4) = pcVar35;
  *(byte **)(puVar20 + -0x10) = unaff_s6;
  *(int **)(puVar20 + -0x14) = unaff_s5;
  *(int **)(puVar20 + -0x18) = unaff_s4;
  *(undefined **)(puVar20 + -0x20) = unaff_s2;
  *(uint *)(puVar20 + -0x24) = unaff_s1;
  *(byte **)(puVar20 + -0x28) = param_2;
  iVar10 = *piVar22;
  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;
  uVar2 = *(uint *)(puVar20 + 0x10);
  pbVar26 = param_3;
  pbVar33 = pbVar12;
  if (iVar10 != 0) {
    unaff_s1 = uVar2 & 2;
    param_2 = (byte *)(uVar2 & 0x10);
    *(uint *)(puVar20 + -0x554) = uVar2 & 5;
    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);
    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;
    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;
    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;
    unaff_s5 = piVar22 + 1;
    unaff_s6 = param_4;
    do {
      unaff_s4 = unaff_s5;
      if (param_2 != (byte *)0x0) {
        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);
        puVar30 = *(undefined **)(puVar20 + -0x570);
      }
      if (iVar10 - 0x21U < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()
        ;
        return uVar2;
      }
      unaff_s5 = unaff_s4;
      if (param_3 == pbVar33) goto LAB_000295c4;
      iVar4 = *(int *)pbVar33;
      if (param_2 != (byte *)0x0) {
        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);
        puVar30 = *(undefined **)(puVar20 + -0x570);
      }
      uVar2 = 1;
      if (iVar4 != iVar10) goto LAB_000295c8;
      unaff_s6 = (byte *)0x0;
      iVar10 = *unaff_s4;
      pbVar33 = pbVar33 + 4;
      unaff_s5 = unaff_s4 + 1;
      piVar22 = unaff_s4;
    } while (iVar10 != 0);
  }
  uVar2 = 0;
  piVar22 = unaff_s4;
  if (pbVar33 != param_3) {
    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);
    if (piVar22 == (int *)0x0) {
LAB_000295c4:
      uVar2 = 1;
    }
    else {
      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);
    }
  }
LAB_000295c8:
  iVar4 = *(int *)(puVar20 + -0x2c);
  if (iVar4 == **(int **)(puVar20 + -0x558)) {
    return uVar2;
  }
  pcVar35 = *(code **)(puVar30 + -0x7b8c);
  pcVar36 = FUN_00029f20;
  (*pcVar35)();
  puVar31 = puVar20 + -0x5f0;
  pcVar29 = *(code **)(pcVar35 + 0x315c4);
  *(byte **)(puVar20 + -0x590) = pbVar33;
  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;
  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);
  *(byte **)(puVar20 + -0x5b0) = param_2;
  *(int *)(puVar20 + -0x594) = iVar10;
  pbVar27 = pbVar12 + 1;
  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];
  *(int **)(puVar20 + -0x5a0) = piVar22;
  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;
  *(int *)(puVar20 + -0x588) = iVar4;
  *(code **)(puVar20 + -0x58c) = pcVar36;
  *(byte **)(puVar20 + -0x598) = unaff_s6;
  *(int **)(puVar20 + -0x59c) = unaff_s5;
  *(byte **)(puVar20 + -0x5a4) = param_3;
  *(uint *)(puVar20 + -0x5ac) = unaff_s1;
  *(byte **)(puVar20 + -0x5c4) = param_4;
  *(undefined4 *)(puVar20 + -0x5b8) = 0;
  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;
  pbVar33 = pbVar12;
  pbVar13 = pbVar26;
  uVar5 = (*pcVar29)(pbVar12);
  iVar10 = (int)(char)pbVar12[1];
  iVar4 = *(int *)(puVar20 + -0x5d8);
  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;
  if (iVar10 != 0) {
    unaff_s5 = (int *)0x0;
    param_3 = *(byte **)(iVar4 + -0x7fd8);
    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);
    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;
    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;
    puVar23 = puVar20 + -0x5f0;
    unaff_s6 = pbVar27;
    do {
      while (puVar31 = puVar23, iVar10 == 0x5b) {
        if (*(int *)(param_3 + -0x4730) == 0) {
          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));
          uVar5 = 0xffffffff;
          iVar4 = *(int *)(puVar20 + -0x5d8);
          if (iVar10 != 0) {
            uVar5 = 1;
          }
          *(undefined4 *)(param_3 + -0x4730) = uVar5;
        }
        bVar8 = pbVar27[1];
        pbVar11 = pbVar27 + 1;
        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {
          bVar8 = pbVar27[2];
          pbVar11 = pbVar27 + 2;
        }
        if (bVar8 == 0x5d) {
          bVar8 = pbVar11[1];
          pbVar11 = pbVar11 + 1;
        }
        pbVar33 = (byte *)0x5d;
        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {
          if (bVar8 == 0) goto LAB_0002a034;
          pbVar11 = pbVar27;
          bVar8 = *pbVar27;
        }
        iVar10 = (int)(char)pbVar11[1];
joined_r0x0002a188:
        puVar23 = puVar31;
        if (iVar10 == 0) goto LAB_0002a034;
      }
      pbVar33 = &DAT_c0000601;
      uVar2 = iVar10 - 0x21U & 0xff;
      pbVar13 = (byte *)(uint)(uVar2 < 0x20);
      if (pbVar13 != (byte *)0x0) {
        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {
          iVar10 = (int)(char)pbVar27[1];
          if (iVar10 != 0x28) goto LAB_0002a028;
          pbVar13 = (byte *)0x1;
          unaff_s5 = (int *)((int)unaff_s5 + 1);
          pbVar27 = pbVar27 + 1;
          uVar2 = 7;
        }
        if (iVar10 != 0x29) goto LAB_0002a198;
        if (unaff_s5 != (int *)0x0) {
          iVar10 = (int)(char)pbVar27[1];
          unaff_s5 = (int *)((int)unaff_s5 + -1);
LAB_0002a028:
          pbVar27 = pbVar27 + 1;
          goto joined_r0x0002a188;
        }
        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {
          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);
        }
        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {
          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);
          puVar23 = (undefined1 *)
                    (**(code **)(iVar4 + -0x7b7c))
                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);
          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);
          iVar4 = *(int *)(puVar20 + -0x5d8);
          *puVar23 = 0;
          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;
          *puVar3 = puVar31 + iVar10 + 0x18;
          if (*(int *)(puVar20 + -0x5b8) == 0) {
            uVar2 = (**(code **)(iVar4 + -0x7ce0))
                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,
                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,
                               *(int *)(iVar4 + -0x7e24) + -0x7570);
            return uVar2;
          }
          if (pbVar27[-1] != 0x29) {
            uVar2 = (**(code **)(iVar4 + -0x7ce0))
                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,
                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,
                               *(int *)(iVar4 + -0x7e24) + -0x7570);
            return uVar2;
          }
          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {
            uVar2 = (**(code **)(iVar4 + -0x7ce0))
                              (*(int *)(iVar4 + -0x7e24) + -0x7898,
                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,
                               *(int *)(iVar4 + -0x7e24) + -0x7570);
            return uVar2;
          }
                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +
                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();
          return uVar2;
        }
        break;
      }
      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {
LAB_0002a198:
        iVar10 = (int)(char)pbVar27[1];
        pbVar27 = pbVar27 + 1;
        goto joined_r0x0002a188;
      }
      pbVar11 = *(byte **)(puVar20 + -0x5cc);
      if (unaff_s1 == 0) {
        pbVar11 = pbVar27 + (1 - (int)unaff_s6);
      }
      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;
      pcVar35 = *(code **)(iVar4 + -0x7b7c);
      pbVar13 = pbVar27 + -(int)unaff_s6;
      pbVar21 = pbVar27 + 1;
      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
      puVar32 = puVar31 + iVar17;
      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;
      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);
      iVar4 = *(int *)(puVar20 + -0x5d8);
      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);
      iVar10 = (int)(char)pbVar27[1];
      *puVar23 = 0;
      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);
      *puVar15 = 0;
      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;
      *puVar6 = puVar15;
      pbVar33 = unaff_s6;
      unaff_s6 = pbVar21;
      pbVar27 = pbVar21;
      puVar31 = puVar31 + iVar17;
      puVar23 = puVar32;
    } while (iVar10 != 0);
  }
LAB_0002a034:
  pbVar11 = *(byte **)(puVar20 + -0x5b4);
  pcVar35 = *(code **)(iVar4 + -0x7b8c);
  if (pbVar11 == (byte *)*puVar3) {
    return 0xffffffff;
  }
  pcVar36 = FUN_0002a610;
  (*pcVar35)();
  pcVar29 = pcVar35 + 0x38ae0;
  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);
  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;
  *(byte **)(puVar31 + -0x1c) = param_3;
  *(code **)(puVar31 + -0x160) = pcVar29;
  *(code **)(puVar31 + -4) = pcVar36;
  *(byte **)(puVar31 + -0xc) = pbVar27;
  *(byte **)(puVar31 + -0x10) = unaff_s6;
  *(int **)(puVar31 + -0x14) = unaff_s5;
  *(byte **)(puVar31 + -0x18) = pbVar26;
  *(undefined4 **)(puVar31 + -0x20) = puVar3;
  *(uint *)(puVar31 + -0x24) = unaff_s1;
  *(byte **)(puVar31 + -0x28) = pbVar12;
  *(undefined4 **)(puVar31 + -0x144) = puVar6;
  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;
  pbVar21 = (byte *)(uint)*pbVar11;
  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;
  iVar10 = *(int *)(pcVar35 + 0x30cbc);
  pbVar27 = pbVar13;
  pbVar34 = pbVar33;
  if (pbVar21 != (byte *)0x0) {
    uVar2 = *(uint *)(puVar31 + 0x10);
    unaff_s1 = uVar2 & 2;
    pbVar12 = (byte *)(uVar2 & 0x10);
    *(uint *)(puVar31 + -0x140) = uVar2 & 5;
    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);
    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;
    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;
    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;
    pbVar26 = pbVar11;
    unaff_s6 = param_4;
    do {
      pbVar11 = pbVar21;
      if (pbVar12 != (byte *)0x0) {
        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();
        pcVar29 = *(code **)(puVar31 + -0x160);
        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);
      }
      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar2 = (*(pcVar29 +
                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();
        return uVar2;
      }
      uVar2 = 1;
      pbVar21 = pbVar11;
      if (pbVar34 == pbVar13) goto LAB_0002a8e4;
      pbVar21 = (byte *)(uint)*pbVar34;
      if (pbVar12 != (byte *)0x0) {
        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();
        pcVar29 = *(code **)(puVar31 + -0x160);
        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);
      }
      uVar2 = 1;
      unaff_s6 = pbVar11;
      if (pbVar21 != pbVar11) goto LAB_0002a8e4;
      pbVar26 = *(byte **)(puVar31 + -0x154);
      unaff_s6 = (byte *)0x0;
      pbVar21 = (byte *)(uint)*pbVar26;
      pbVar34 = pbVar34 + 1;
      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;
    } while (pbVar21 != (byte *)0x0);
  }
  uVar2 = 0;
  if (pbVar34 != pbVar13) {
    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);
    if (pbVar26 == (byte *)0x0) {
      uVar2 = 1;
    }
    else {
      uVar2 = (uint)(*pbVar34 != 0x2f);
    }
  }
LAB_0002a8e4:
  iVar4 = *(int *)(puVar31 + -0x2c);
  if (iVar4 == **(int **)(puVar31 + -0x144)) {
    return uVar2;
  }
  pcVar35 = *(code **)(pcVar29 + -0x7b8c);
  pcVar36 = rpl_fnmatch;
  (*pcVar35)();
  pcVar29 = *(code **)(pcVar35 + 0x302e0);
  *(uint *)(puVar31 + -0x19c) = unaff_s1;
  piVar22 = *(int **)(pcVar35 + 0x30338);
  *(byte **)(puVar31 + -0x180) = pbVar34;
  *(byte **)(puVar31 + -0x198) = pbVar21;
  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;
  *(code **)(puVar31 + -0x17c) = pcVar36;
  *(int *)(puVar31 + -0x184) = iVar10;
  *(byte **)(puVar31 + -0x188) = unaff_s6;
  *(int **)(puVar31 + -0x18c) = unaff_s5;
  *(byte **)(puVar31 + -400) = pbVar26;
  *(byte **)(puVar31 + -0x194) = pbVar13;
  *(byte **)(puVar31 + -0x1a0) = pbVar12;
  *(int *)(puVar31 + -0x1b4) = iVar4;
  *(byte **)(puVar31 + -0x1b8) = pbVar33;
  *(int *)(puVar31 + -0x1a4) = *piVar22;
  iVar10 = (*pcVar29)();
  iVar4 = *(int *)(puVar31 + -0x1c8);
  if (iVar10 != 1) {
    puVar20 = puVar31 + -0x1ac;
    pcVar35 = *(code **)(iVar4 + -0x7b28);
    puVar23 = puVar31 + -0x1b4;
    *(undefined4 *)(puVar31 + -0x1ac) = 0;
    *(undefined4 *)(puVar31 + -0x1a8) = 0;
    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);
    uVar2 = iVar10 + 1;
    iVar4 = *(int *)(puVar31 + -0x1c8);
    if (uVar2 != 0) {
      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);
      uVar5 = 0x129;
      iVar4 = *(int *)(puVar31 + -0x1c8);
      if (iVar10 == 0) goto LAB_0002b570;
      piVar25 = (int *)(puVar31 + -0x1b8);
      piVar19 = piVar25;
      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);
      iVar17 = iVar10 + 1;
      iVar4 = *(int *)(puVar31 + -0x1c8);
      if (iVar17 != 0) {
        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);
        iVar4 = *(int *)(puVar31 + -0x1c8);
        if (iVar16 == 0) {
          uVar5 = 0x12d;
          goto LAB_0002b570;
        }
        uVar18 = uVar2 + iVar17;
        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {
          if (uVar18 < 2000) {
            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);
            puVar24 = puVar31 + iVar16 + -0x1c8;
            piVar19 = (int *)(puVar24 + uVar2 * 4);
            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);
            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);
            iVar4 = *(int *)(puVar31 + -0x1c8);
            if (iVar9 == 0) {
LAB_0002b590:
              do {
                uVar5 = 0x147;
LAB_0002b570:
                (**(code **)(iVar4 + -0x7ce0))
                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,
                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);
              } while( true );
            }
            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);
            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;
            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            iVar10 = *(int *)(puVar31 + -0x1c8);
            goto LAB_0002b300;
          }
          iVar16 = (**(code **)(iVar4 + -0x7be8))();
          iVar4 = *(int *)(puVar31 + -0x1c8);
          if (iVar16 != 0) {
            pcVar35 = *(code **)(iVar4 + -0x7b28);
            *(int *)(puVar31 + -0x1bc) = iVar16;
            piVar19 = (int *)(iVar16 + uVar2 * 4);
            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);
            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);
            iVar4 = *(int *)(puVar31 + -0x1c8);
            if (iVar16 == 0) goto LAB_0002b590;
            pcVar35 = *(code **)(iVar4 + -0x7b28);
            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);
            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);
            *(byte **)(puVar31 + -0x1d0) = pbVar27;
            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));
            iVar10 = *(int *)(puVar31 + -0x1c8);
            goto LAB_0002b300;
          }
        }
        uVar2 = 0xffffffff;
        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();
        iVar10 = *(int *)(puVar31 + -0x1c8);
        *puVar3 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  piVar19 = *(int **)(puVar31 + -0x1b8);
  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);
  *(byte **)(puVar31 + -0x1d0) = pbVar27;
  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,
                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);
  iVar10 = *(int *)(puVar31 + -0x1c8);
LAB_0002b300:
  iVar4 = *(int *)(puVar31 + -0x1a4);
  if (iVar4 != *piVar22) {
    (**(code **)(iVar10 + -0x7b8c))();
    iVar10 = piVar19[8];
    iVar17 = *piVar19;
    uVar2 = (uint)(iVar10 < iVar17);
    uVar18 = piVar19[7];
    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {
      iVar9 = iVar17 - iVar10;
      uVar7 = uVar18;
      iVar16 = iVar17;
      do {
        iVar14 = iVar10 - uVar7;
        uVar2 = iVar9 + uVar7;
        if (iVar14 < iVar9) {
          iVar16 = iVar16 - iVar14;
          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);
          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);
          do {
            puVar15 = puVar3 + 1;
            uVar5 = *puVar3;
            *puVar3 = *puVar6;
            *puVar6 = uVar5;
            uVar2 = uVar7;
            puVar3 = puVar15;
            puVar6 = puVar6 + 1;
          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);
        }
        else {
          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);
          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);
          do {
            puVar15 = puVar3 + 1;
            uVar5 = *puVar3;
            *puVar3 = *puVar6;
            *puVar6 = uVar5;
            puVar3 = puVar15;
            puVar6 = puVar6 + 1;
          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));
        }
      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));
    }
    piVar19[8] = iVar17;
    piVar19[7] = (iVar17 - iVar10) + uVar18;
    return uVar2;
  }
  return uVar2;
}


lui gp,0x4
addiu gp,gp,-0x5b24
addu gp,gp,t9
addiu sp,sp,-0x68
lw t9,-0x7c48(gp)
sw s8,0x60(sp)
or s8,sp,zero
sw s3,0x4c(sp)
lw s3,-0x7b64(gp)
lbu v0,0x7b(s8)
sw s0,0x40(sp)
or s0,a1,zero
sw s7,0x5c(sp)
addiu s7,a1,0x4
sw v0,0x2c(s8)
sw gp,0x18(sp)
sw a0,0x68(s8)
or a0,a1,zero
sw ra,0x64(sp)
sw s6,0x58(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s2,0x48(sp)
sw s1,0x44(sp)
sw a2,0x30(s8)
sw a3,0x28(s8)
sw zero,0x38(s8)
lw v0,0x0(s3)
sw v0,0x3c(s8)
jalr t9
_nop
lw a0,0x4(s0)
lw gp,0x18(s8)
beq a0,zero,0x00028d1c
_sw v0,0x24(s8)
lw v0,0x68(s8)
or s5,zero,zero
lw s2,-0x7e24(gp)
or s6,s7,zero
lw s4,-0x7fd8(gp)
addiu s1,v0,-0x3f
addiu v0,s8,0x38
addiu s2,s2,-0x78dc
sw v0,0x34(s8)
sltiu s1,s1,0x2
li v0,0x5b
beq a0,v0,0x00028e2c
_lui v0,0xc000
addiu a1,v0,0x601
addiu v0,a0,-0x21
sltiu a2,v0,0x20
beq a2,zero,0x00028d80
_li t2,0x28
srlv v0,a1,v0
ext v0,v0,0x0,0x1
bne v0,zero,0x00028d64
_li v0,0x29
bne a0,v0,0x00028e9c
_nop
beq s5,zero,0x00028ee4
_addiu v0,s5,-0x1
lw a0,0x4(s7)
addiu s7,s7,0x4
or s5,v0,zero
bne a0,zero,0x00028ccc
_li v0,0x5b
li v0,-0x1
lw a0,0x3c(s8)
lw v1,0x0(s3)
bne a0,v1,0x00029318
_lw t9,-0x7b8c(gp)
or sp,s8,zero
lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
lw a0,0x4(s7)
bne a0,t2,0x00028d14
_addiu s7,s7,0x4
addiu v0,a0,-0x21
sltiu a2,v0,0x20
bne a2,zero,0x00028ce8
_addiu s5,s5,0x1
li v0,0x7c
bne a0,v0,0x00028e9c
_nop
bne s5,zero,0x00028e9c
_nop
bne s1,zero,0x00028da8
_lw a0,0x24(s8)
subu a0,s7,s6
sra a0,a0,0x2
addiu a0,a0,0x1
lui a1,0x4000
sll v0,a0,0x2
sltu a0,a0,a1
beq a0,zero,0x00028d1c
_addiu v0,v0,0x4
addiu a0,v0,-0x4
sltiu a0,a0,0x1f3c
beq a0,zero,0x00028d1c
_addiu v0,v0,0x7
lw t9,-0x7c4c(gp)
subu a2,s7,s6
srl v0,v0,0x3
sra a2,a2,0x2
sll v0,v0,0x3
or a1,s6,zero
subu sp,sp,v0
addiu s6,s7,0x4
addiu t2,sp,0x18
addiu a0,sp,0x1c
jalr t9
_sw t2,0x20(s8)
lw gp,0x18(s8)
lw t2,0x20(s8)
sw zero,0x0(v0)
lw v0,0x34(s8)
lw a0,0x4(s7)
or s7,s6,zero
sw zero,0x0(t2)
sw t2,0x34(s8)
bne a0,zero,0x00028cc8
_sw t2,0x0(v0)
b 0x00028d20
_li v0,-0x1
lw v0,-0x4730(s4)
beq v0,zero,0x00028ec4
_lw t9,-0x7be0(gp)
lw v0,0x4(s7)
li a1,0x21
beq v0,a1,0x00028eb8
_addiu a0,s7,0x4
lw a1,-0x4730(s4)
bltz a1,0x00028eb0
_li a1,0x5e
li v1,0x5d
beq v0,v1,0x00028e90
_nop
b 0x00028e74
_li a1,0x5d
beq v0,zero,0x00028d1c
_or a0,s7,zero
lw v0,0x0(s7)
bne v0,a1,0x00028e68
_addiu s7,a0,0x4
lw a0,0x4(a0)
bne a0,zero,0x00028cc8
_li v0,-0x1
b 0x00028d20
_nop
lw v0,0x4(a0)
b 0x00028e60
_addiu a0,a0,0x4
lw a0,0x4(s7)
bne a0,zero,0x00028cc8
_addiu s7,s7,0x4
b 0x00028d20
_li v0,-0x1
bne v0,a1,0x00028e58
_li v1,0x5d
lw v0,0x8(s7)
b 0x00028e54
_addiu a0,s7,0x8
jalr t9
_or a0,s2,zero
li a0,0x1
li a1,-0x1
lw gp,0x18(s8)
movn a1,a0,v0
b 0x00028e38
_sw a1,-0x4730(s4)
lw v0,0x68(s8)
addiu v0,v0,-0x3f
sltiu v0,v0,0x2
bne v0,zero,0x00028f04
_subu v0,s7,s6
sra v0,v0,0x2
addiu v0,v0,0x1
sw v0,0x24(s8)
lw v1,0x24(s8)
lui v0,0x4000
sltu v0,v1,v0
beq v0,zero,0x00028d1c
_sll v1,v1,0x2
sltiu v0,v1,0x1f3c
beq v0,zero,0x00028d1c
_addiu v1,v1,0x4
addiu v0,v1,0x7
lw t9,-0x7c4c(gp)
subu a2,s7,s6
srl v0,v0,0x3
sra a2,a2,0x2
sll v0,v0,0x3
or a1,s6,zero
subu sp,sp,v0
addiu a0,sp,0x1c
jalr t9
_addiu s1,sp,0x18
lw gp,0x18(s8)
sw zero,0x0(v0)
lw v0,0x34(s8)
sw zero,0x0(s1)
sw s1,0x0(v0)
lw s1,0x38(s8)
beq s1,zero,0x000292f4
_li v0,0x29
lw a0,-0x4(s7)
bne a0,v0,0x000292d0
_lw v0,0x68(s8)
addiu s4,v0,-0x21
sltiu v0,s4,0x20
beq v0,zero,0x000292ac
_lw v0,-0x7e24(gp)
sll s4,s4,0x2
addiu v0,v0,-0x7850
addu s4,v0,s4
lw v0,0x0(s4)
addu v0,v0,gp
jr v0
_nop
lw s2,-0x7d60(gp)
or a0,s7,zero
lw v0,0x7c(s8)
lw a3,0x2c(s8)
lw a2,0x28(s8)
addiu s2,s2,-0x6ce0
lw a1,0x30(s8)
or t9,s2,zero
bal 0x00029320
_sw v0,0x10(sp)
beq v0,zero,0x00029104
_lw gp,0x18(s8)
lw v0,0x7c(s8)
lw v1,0x7c(s8)
lw s2,-0x7d60(gp)
andi s4,v0,0x1
li v0,-0x5
addiu s2,s2,-0x6ce0
and v0,v1,v0
movz v1,v0,s4
lw v0,0x7c(s8)
or s4,v1,zero
lw v1,0x28(s8)
andi s6,v0,0x5
addiu v0,s0,-0x4
xori s6,s6,0x5
sw v0,0x34(s8)
sltiu s6,s6,0x1
lw v0,0x30(s8)
sltu v0,v1,v0
sw v0,0x24(s8)
lw v0,0x24(s8)
bne v0,zero,0x00029290
_addiu s0,s1,0x4
b 0x000290b0
_lw s5,0x30(s8)
lw a3,-0x4(s5)
lw a2,0x28(s8)
or a1,s5,zero
sw s4,0x10(sp)
or a0,s7,zero
xori a3,a3,0x2f
movn v0,zero,a3
or t9,s2,zero
bal 0x00029320
_or a3,v0,zero
beq v0,zero,0x00029104
_lw gp,0x18(s8)
lw a3,-0x4(s5)
or v0,s6,zero
lw a2,0x28(s8)
or a1,s5,zero
lw a0,0x34(s8)
or t9,s2,zero
xori a3,a3,0x2f
sw s4,0x10(sp)
movn v0,zero,a3
bal 0x00029320
_or a3,v0,zero
beq v0,zero,0x00029104
_lw gp,0x18(s8)
lw v0,0x28(s8)
addiu s5,s5,0x4
sltu v0,v0,s5
bne v0,zero,0x00029290
_nop
lw a3,0x2c(s8)
or a2,s5,zero
lw a1,0x30(s8)
or a0,s0,zero
or t9,s2,zero
bal 0x00029320
_sw s4,0x10(sp)
bne v0,zero,0x0002909c
_lw gp,0x18(s8)
lw v0,0x30(s8)
bne v0,s5,0x00029038
_or v0,s6,zero
lw a3,0x2c(s8)
or a0,s7,zero
lw a2,0x28(s8)
or t9,s2,zero
lw a1,0x30(s8)
bal 0x00029320
_sw s4,0x10(sp)
bne v0,zero,0x0002909c
_lw gp,0x18(s8)
b 0x00028d20
_or v0,zero,zero
lw v0,0x30(s8)
lw v1,0x28(s8)
sltu v0,v1,v0
bne v0,zero,0x000291e0
_lw v1,0x7c(s8)
lw v0,0x7c(s8)
li s6,0x2f
lw s2,-0x7d60(gp)
andi s4,v0,0x1
lw s0,0x30(s8)
li v0,-0x5
addiu s2,s2,-0x6ce0
and v0,v1,v0
movz v1,v0,s4
lw v0,0x7c(s8)
or s4,v1,zero
andi v0,v0,0x5
xori v0,v0,0x5
sltiu v0,v0,0x1
sw v0,0x34(s8)
or s5,s1,zero
lw a3,0x2c(s8)
addiu a0,s5,0x4
lw a1,0x30(s8)
or a2,s0,zero
or t9,s2,zero
bal 0x00029320
_sw s4,0x10(sp)
beq v0,zero,0x000291cc
_lw gp,0x18(s8)
lw s5,0x0(s5)
bne s5,zero,0x00029164
_lw a3,0x2c(s8)
lw v0,0x30(s8)
beq v0,s0,0x000292a4
_lw v0,0x34(s8)
lw a3,-0x4(s0)
xor a3,a3,s6
movn v0,zero,a3
or a3,v0,zero
lw a2,0x28(s8)
or a1,s0,zero
sw s4,0x10(sp)
or t9,s2,zero
bal 0x00029320
_or a0,s7,zero
beq v0,zero,0x00029104
_lw gp,0x18(s8)
lw v0,0x28(s8)
addiu s0,s0,0x4
sltu v0,v0,s0
beq v0,zero,0x0002915c
_nop
b 0x00028d20
_li v0,0x1
lw s2,-0x7d60(gp)
addiu s2,s2,-0x6ce0
lw v0,0x7c(s8)
lw v1,0x7c(s8)
andi s0,v0,0x1
li v0,-0x5
and v0,v1,v0
movz v1,v0,s0
b 0x0002921c
_or s0,v1,zero
lw s1,0x0(s1)
beq s1,zero,0x000291e0
_sw s1,0x38(s8)
lw t9,-0x7c90(gp)
addiu a0,s1,0x4
jalr t9
_or a1,s7,zero
or t9,s2,zero
lw a3,0x2c(s8)
or a0,v0,zero
lw a2,0x28(s8)
lw a1,0x30(s8)
bal 0x00029320
_sw s0,0x10(sp)
bne v0,zero,0x00029210
_lw gp,0x18(s8)
b 0x00028d20
_or v0,zero,zero
lw s2,-0x7d60(gp)
or a0,s7,zero
lw v0,0x7c(s8)
lw a3,0x2c(s8)
lw a2,0x28(s8)
addiu s2,s2,-0x6ce0
lw a1,0x30(s8)
or t9,s2,zero
bal 0x00029320
_sw v0,0x10(sp)
bne v0,zero,0x000291f0
_lw gp,0x18(s8)
b 0x00028d20
_or v0,zero,zero
lw s1,0x0(s1)
bne s1,zero,0x00029024
_sw s1,0x38(s8)
b 0x00028d20
_li v0,0x1
b 0x000291ac
_lw a3,0x2c(s8)
lw a3,-0x7e24(gp)
li a2,0x4ad
lw a1,-0x7e24(gp)
lw a0,-0x7e24(gp)
lw t9,-0x7ce0(gp)
addiu a3,a3,-0x7564
addiu a1,a1,-0x78cc
jalr t9
_addiu a0,a0,-0x7898
lw a3,-0x7e24(gp)
li a2,0x455
lw a1,-0x7e24(gp)
lw a0,-0x7e24(gp)
lw t9,-0x7ce0(gp)
addiu a3,a3,-0x7564
addiu a1,a1,-0x78cc
jalr t9
_addiu a0,a0,-0x78ac
lw a3,-0x7e24(gp)
li a2,0x454
lw a1,-0x7e24(gp)
lw a0,-0x7e24(gp)
lw t9,-0x7ce0(gp)
addiu a3,a3,-0x7564
addiu a1,a1,-0x78cc
jalr t9
_addiu a0,a0,-0x78bc
jalr t9
_nop
(translation_unit "uint FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}\n\n" (function_definition "uint FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)" identifier (parameter_list "(int param_1,byte *param_2,byte *param_3,byte *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "undefined *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "undefined1 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "byte *pbVar27;" type_identifier (pointer_declarator "*pbVar27" * identifier) ;) (declaration "undefined *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "byte *pbVar34;" type_identifier (pointer_declarator "*pbVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "code *pcVar36;" type_identifier (pointer_declarator "*pcVar36" * identifier) ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0005b58c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0005b58c" identifier = identifier) ;) (expression_statement "puVar20 = auStack_68;" (assignment_expression "puVar20 = auStack_68" identifier = identifier) ;) (expression_statement "pbVar26 = param_2 + 4;" (assignment_expression "pbVar26 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_0005b58c" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_0005b58c" * (cast_expression "(int **)PTR___stack_chk_guard_0005b58c" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);" (assignment_expression "local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2)" identifier = (call_expression "(*(code *)PTR_wcslen_0005b4a8)(param_2)" (parenthesized_expression "(*(code *)PTR_wcslen_0005b4a8)" ( (pointer_expression "*(code *)PTR_wcslen_0005b4a8" * (cast_expression "(code *)PTR_wcslen_0005b4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "puVar28 = PTR_DAT_0005b118;" (assignment_expression "puVar28 = PTR_DAT_0005b118" identifier = identifier) ;) (expression_statement "iVar10 = *(int *)(param_2 + 4);" (assignment_expression "iVar10 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }" { (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = &local_30;" (assignment_expression "local_34 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc" identifier = (binary_expression "PTR_DAT_0005b2cc + -0x78dc" identifier + number_literal)) ;) (expression_statement "unaff_s1 = (uint)(param_1 - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(param_1 - 0x3fU < 2)" identifier = (call_expression "(uint)(param_1 - 0x3fU < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 - 0x3fU < 2)" ( (binary_expression "param_1 - 0x3fU < 2" (binary_expression "param_1 - 0x3fU" identifier - number_literal) < number_literal) )))) ;) (expression_statement "puVar20 = auStack_68;" (assignment_expression "puVar20 = auStack_68" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar26;" (assignment_expression "unaff_s6 = pbVar26" identifier = identifier) ;) (do_statement "do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);" do (compound_statement "{\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    }" { (while_statement "while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }" while (parenthesized_expression "(unaff_s4 = (int *)puVar28, iVar10 != 0x5b)" ( (comma_expression "unaff_s4 = (int *)puVar28, iVar10 != 0x5b" (assignment_expression "unaff_s4 = (int *)puVar28" identifier = (cast_expression "(int *)puVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "iVar10 != 0x5b" identifier != number_literal)) )) (compound_statement "{\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }" { (expression_statement "pbVar12 = &DAT_c0000601;" (assignment_expression "pbVar12 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar2 = iVar10 - 0x21;" (assignment_expression "uVar2 = iVar10 - 0x21" identifier = (binary_expression "iVar10 - 0x21" identifier - number_literal)) ;) (expression_statement "param_3 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "param_3 = (byte *)(uint)(uVar2 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar2 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < 0x20)" ( (binary_expression "uVar2 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }" if (parenthesized_expression "(param_3 != (byte *)0x0)" ( (binary_expression "param_3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }" { (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }" { (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0x28) goto LAB_00028d14;" if (parenthesized_expression "(iVar10 != 0x28)" ( (binary_expression "iVar10 != 0x28" identifier != number_literal) )) (goto_statement "goto LAB_00028d14;" goto statement_identifier ;)) (expression_statement "param_3 = (byte *)0x1;" (assignment_expression "param_3 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar10 != 0x29) goto LAB_00028e9c;" if (parenthesized_expression "(iVar10 != 0x29)" ( (binary_expression "iVar10 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_00028e9c;" goto statement_identifier ;)) (if_statement "if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }" if (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }" { (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" identifier = (cast_expression "(int *)((int)unaff_s5 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + -1)" ( (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (labeled_statement "LAB_00028d14:\n            pbVar26 = pbVar26 + 4;" statement_identifier : (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;)) (goto_statement "goto joined_r0x00028e80;" goto statement_identifier ;) })) (if_statement "if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" if (parenthesized_expression "(1 < param_1 - 0x3fU)" ( (binary_expression "1 < param_1 - 0x3fU" number_literal < (binary_expression "param_1 - 0x3fU" identifier - number_literal)) )) (compound_statement "{\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" { (expression_statement "local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1" identifier = (binary_expression "((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal)) ;) })) (if_statement "if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }" if (parenthesized_expression "((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c))" ( (binary_expression "(local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)" (parenthesized_expression "(local_44 < 0x40000000)" ( (binary_expression "local_44 < 0x40000000" identifier < number_literal) )) && (parenthesized_expression "(local_44 * 4 < 0x1f3c)" ( (binary_expression "local_44 * 4 < 0x1f3c" (binary_expression "local_44 * 4" identifier * number_literal) < number_literal) ))) )) (compound_statement "{\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }" { (expression_statement "iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-(local_44 * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "(local_44 * 4 + 0xb & 0xfffffff8)" ( (binary_expression "local_44 * 4 + 0xb & 0xfffffff8" (binary_expression "local_44 * 4 + 0xb" (binary_expression "local_44 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);" (assignment_expression "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" identifier = (cast_expression "(undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" ( (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" * (cast_expression "(code *)PTR_wmempcpy_0005b4a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "puVar20 + iVar10 + 0x1c" (binary_expression "puVar20 + iVar10" identifier + identifier) + number_literal) , identifier , (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + iVar10 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar20 + iVar10 + 0x18)" * (cast_expression "(undefined4 *)(puVar20 + iVar10 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar10 + 0x18)" ( (binary_expression "puVar20 + iVar10 + 0x18" (binary_expression "puVar20 + iVar10" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*local_34 = (int)(puVar20 + iVar10 + 0x18);" (assignment_expression "*local_34 = (int)(puVar20 + iVar10 + 0x18)" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)(puVar20 + iVar10 + 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar20 + iVar10 + 0x18)" ( (binary_expression "puVar20 + iVar10 + 0x18" (binary_expression "puVar20 + iVar10" identifier + identifier) + number_literal) )))) ;) (if_statement "if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" { (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x78bc" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" if (parenthesized_expression "(*(int *)(pbVar26 + -4) != 0x29)" ( (binary_expression "*(int *)(pbVar26 + -4) != 0x29" (pointer_expression "*(int *)(pbVar26 + -4)" * (cast_expression "(int *)(pbVar26 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + -4)" ( (binary_expression "pbVar26 + -4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" { (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x78ac" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" if (parenthesized_expression "(0x1f < param_1 - 0x21U)" ( (binary_expression "0x1f < param_1 - 0x21U" number_literal < (binary_expression "param_1 - 0x21U" identifier - number_literal)) )) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" { (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x7898" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) comment comment (expression_statement "uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();" (assignment_expression "uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" * (cast_expression "(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" ( (binary_expression "PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850" (binary_expression "PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4" identifier + (binary_expression "(param_1 - 0x21U) * 4" (parenthesized_expression "(param_1 - 0x21U)" ( (binary_expression "param_1 - 0x21U" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;) })) (if_statement "if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" if (parenthesized_expression "((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0))" ( (binary_expression "(iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)" (parenthesized_expression "(iVar10 == 0x7c)" ( (binary_expression "iVar10 == 0x7c" identifier == number_literal) )) && (parenthesized_expression "(unaff_s5 == (int *)0x0)" ( (binary_expression "unaff_s5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" { (expression_statement "uVar2 = local_44;" (assignment_expression "uVar2 = local_44" identifier = identifier) ;) (if_statement "if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" { (expression_statement "uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1" identifier = (binary_expression "((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal)) ;) })) (expression_statement "pbVar12 = (byte *)0x40000000;" (assignment_expression "pbVar12 = (byte *)0x40000000" identifier = (cast_expression "(byte *)0x40000000" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }" if (parenthesized_expression "((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c))" ( (binary_expression "(uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)" (parenthesized_expression "(uVar2 < 0x40000000)" ( (binary_expression "uVar2 < 0x40000000" identifier < number_literal) )) && (parenthesized_expression "(uVar2 * 4 < 0x1f3c)" ( (binary_expression "uVar2 * 4 < 0x1f3c" (binary_expression "uVar2 * 4" identifier * number_literal) < number_literal) ))) )) (compound_statement "{\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }" { (expression_statement "param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);" (assignment_expression "param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2)" identifier = (cast_expression "(byte *)((int)pbVar26 - (int)unaff_s6 >> 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) ;) (expression_statement "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-(uVar2 * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "(uVar2 * 4 + 0xb & 0xfffffff8)" ( (binary_expression "uVar2 * 4 + 0xb & 0xfffffff8" (binary_expression "uVar2 * 4 + 0xb" (binary_expression "uVar2 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "pbVar33 = pbVar26 + 4;" (assignment_expression "pbVar33 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (expression_statement "piVar22 = (int *)(puVar20 + iVar4 + 0x18);" (assignment_expression "piVar22 = (int *)(puVar20 + iVar4 + 0x18)" identifier = (cast_expression "(int *)(puVar20 + iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar4 + 0x18)" ( (binary_expression "puVar20 + iVar4 + 0x18" (binary_expression "puVar20 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);" (assignment_expression "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" ( (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" * (cast_expression "(code *)PTR_wmempcpy_0005b4a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar20 + iVar4 + 0x1c)" ( (binary_expression "puVar20 + iVar4 + 0x1c" (binary_expression "puVar20 + iVar4" identifier + identifier) + number_literal) ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (expression_statement "*piVar22 = 0;" (assignment_expression "*piVar22 = 0" (pointer_expression "*piVar22" * identifier) = number_literal) ;) (expression_statement "*local_34 = (int)piVar22;" (assignment_expression "*local_34 = (int)piVar22" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)piVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar12 = unaff_s6;" (assignment_expression "pbVar12 = unaff_s6" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar33;" (assignment_expression "pbVar26 = pbVar33" identifier = identifier) ;) (expression_statement "local_34 = piVar22;" (assignment_expression "local_34 = piVar22" identifier = identifier) ;) (expression_statement "puVar20 = puVar20 + iVar4;" (assignment_expression "puVar20 = puVar20 + iVar4" identifier = (binary_expression "puVar20 + iVar4" identifier + identifier)) ;) (expression_statement "unaff_s6 = pbVar33;" (assignment_expression "unaff_s6 = pbVar33" identifier = identifier) ;) (goto_statement "goto joined_r0x00028e80;" goto statement_identifier ;) })) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;) })) (labeled_statement "LAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);" statement_identifier : (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) goto LAB_00028d20;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;)) })) (if_statement "if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }" if (parenthesized_expression "(*(int *)(puVar28 + -0x4730) == 0)" ( (binary_expression "*(int *)(puVar28 + -0x4730) == 0" (pointer_expression "*(int *)(puVar28 + -0x4730)" * (cast_expression "(int *)(puVar28 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x4730)" ( (binary_expression "puVar28 + -0x4730" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }" { (expression_statement "iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);" (assignment_expression "iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2)" identifier = (call_expression "(*(code *)PTR_getenv_0005b510)(unaff_s2)" (parenthesized_expression "(*(code *)PTR_getenv_0005b510)" ( (pointer_expression "*(code *)PTR_getenv_0005b510" * (cast_expression "(code *)PTR_getenv_0005b510" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s2)" ( identifier )))) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar10 != 0) {\n          uVar5 = 1;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar5 = 1;\n        }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(puVar28 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(puVar28 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(puVar28 + -0x4730)" * (cast_expression "(undefined4 *)(puVar28 + -0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x4730)" ( (binary_expression "puVar28 + -0x4730" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar33 = pbVar26 + 4;" (assignment_expression "pbVar33 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (if_statement "if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }" if (parenthesized_expression "((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e))))" ( (binary_expression "(iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))" (parenthesized_expression "(iVar10 == 0x21)" ( (binary_expression "iVar10 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))" ( (parenthesized_expression "(*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e))" ( (binary_expression "*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)" (binary_expression "*(int *)(puVar28 + -0x4730) < 0" (pointer_expression "*(int *)(puVar28 + -0x4730)" * (cast_expression "(int *)(puVar28 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x4730)" ( (binary_expression "puVar28 + -0x4730" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(iVar10 == 0x5e)" ( (binary_expression "iVar10 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }" { (expression_statement "iVar10 = *(int *)(pbVar26 + 8);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 8)" identifier = (pointer_expression "*(int *)(pbVar26 + 8)" * (cast_expression "(int *)(pbVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 8)" ( (binary_expression "pbVar26 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar33 = pbVar26 + 8;" (assignment_expression "pbVar33 = pbVar26 + 8" identifier = (binary_expression "pbVar26 + 8" identifier + number_literal)) ;) })) (if_statement "if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }" if (parenthesized_expression "(iVar10 == 0x5d)" ( (binary_expression "iVar10 == 0x5d" identifier == number_literal) )) (compound_statement "{\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }" { (expression_statement "iVar10 = *(int *)(pbVar33 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar33 + 4)" identifier = (pointer_expression "*(int *)(pbVar33 + 4)" * (cast_expression "(int *)(pbVar33 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar33 + 4)" ( (binary_expression "pbVar33 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar33 = pbVar33 + 4;" (assignment_expression "pbVar33 = pbVar33 + 4" identifier = (binary_expression "pbVar33 + 4" identifier + number_literal)) ;) })) (expression_statement "pbVar12 = (byte *)0x5d;" (assignment_expression "pbVar12 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }" while (parenthesized_expression "(pbVar26 = pbVar33 + 4, iVar10 != 0x5d)" ( (comma_expression "pbVar26 = pbVar33 + 4, iVar10 != 0x5d" (assignment_expression "pbVar26 = pbVar33 + 4" identifier = (binary_expression "pbVar33 + 4" identifier + number_literal)) , (binary_expression "iVar10 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }" { (if_statement "if (iVar10 == 0) goto LAB_00028d20;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;)) (expression_statement "pbVar33 = pbVar26;" (assignment_expression "pbVar33 = pbVar26" identifier = identifier) ;) (expression_statement "iVar10 = *(int *)pbVar26;" (assignment_expression "iVar10 = *(int *)pbVar26" identifier = (pointer_expression "*(int *)pbVar26" * (cast_expression "(int *)pbVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "iVar10 = *(int *)(pbVar33 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar33 + 4)" identifier = (pointer_expression "*(int *)(pbVar33 + 4)" * (cast_expression "(int *)(pbVar33 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar33 + 4)" ( (binary_expression "pbVar33 + 4" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x00028e80:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }" statement_identifier : (if_statement "if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(local_2c == *(int **)puVar1)" ( (binary_expression "local_2c == *(int **)puVar1" identifier == (pointer_expression "*(int **)puVar1" * (cast_expression "(int **)puVar1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) }))) (expression_statement "pcVar35 = FUN_00029320;" (assignment_expression "pcVar35 = FUN_00029320" identifier = identifier) ;) (expression_statement "piVar22 = local_2c;" (assignment_expression "piVar22 = local_2c" identifier = identifier) ;) (expression_statement "puVar28 = PTR___stack_chk_fail_0005b564;" (assignment_expression "puVar28 = PTR___stack_chk_fail_0005b564" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0005b564)();" (call_expression "(*(code *)PTR___stack_chk_fail_0005b564)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0005b564)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0005b564" * (cast_expression "(code *)PTR___stack_chk_fail_0005b564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar28 + 0x39dd0;" (assignment_expression "puVar30 = puVar28 + 0x39dd0" identifier = (binary_expression "puVar28 + 0x39dd0" identifier + number_literal)) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar28 + 0x3226c);" (assignment_expression "puVar3 = *(undefined4 **)(puVar28 + 0x3226c)" identifier = (pointer_expression "*(undefined4 **)(puVar28 + 0x3226c)" * (cast_expression "(undefined4 **)(puVar28 + 0x3226c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x3226c)" ( (binary_expression "puVar28 + 0x3226c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar20 + -0xc) = pbVar26;" (assignment_expression "*(byte **)(puVar20 + -0xc) = pbVar26" (pointer_expression "*(byte **)(puVar20 + -0xc)" * (cast_expression "(byte **)(puVar20 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0xc)" ( (binary_expression "puVar20 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar20 + -0x558) = puVar3;" (assignment_expression "*(undefined4 **)(puVar20 + -0x558) = puVar3" (pointer_expression "*(undefined4 **)(puVar20 + -0x558)" * (cast_expression "(undefined4 **)(puVar20 + -0x558)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x558)" ( (binary_expression "puVar20 + -0x558" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x570) = puVar30;" (assignment_expression "*(undefined **)(puVar20 + -0x570) = puVar30" (pointer_expression "*(undefined **)(puVar20 + -0x570)" * (cast_expression "(undefined **)(puVar20 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x570)" ( (binary_expression "puVar20 + -0x570" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar20 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar20 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar20 + -8)" * (cast_expression "(undefined1 **)(puVar20 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -8)" ( (binary_expression "puVar20 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x1c) = puVar1;" (assignment_expression "*(undefined **)(puVar20 + -0x1c) = puVar1" (pointer_expression "*(undefined **)(puVar20 + -0x1c)" * (cast_expression "(undefined **)(puVar20 + -0x1c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x1c)" ( (binary_expression "puVar20 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -4) = pcVar35;" (assignment_expression "*(code **)(puVar20 + -4) = pcVar35" (pointer_expression "*(code **)(puVar20 + -4)" * (cast_expression "(code **)(puVar20 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -4)" ( (binary_expression "puVar20 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar20 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar20 + -0x10)" * (cast_expression "(byte **)(puVar20 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x10)" ( (binary_expression "puVar20 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar20 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar20 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar20 + -0x14)" * (cast_expression "(int **)(puVar20 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x14)" ( (binary_expression "puVar20 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar20 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar20 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar20 + -0x18)" * (cast_expression "(int **)(puVar20 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x18)" ( (binary_expression "puVar20 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x20) = unaff_s2;" (assignment_expression "*(undefined **)(puVar20 + -0x20) = unaff_s2" (pointer_expression "*(undefined **)(puVar20 + -0x20)" * (cast_expression "(undefined **)(puVar20 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x20)" ( (binary_expression "puVar20 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar20 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar20 + -0x24)" * (cast_expression "(uint *)(puVar20 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x24)" ( (binary_expression "puVar20 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x28) = param_2;" (assignment_expression "*(byte **)(puVar20 + -0x28) = param_2" (pointer_expression "*(byte **)(puVar20 + -0x28)" * (cast_expression "(byte **)(puVar20 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x28)" ( (binary_expression "puVar20 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = *piVar22;" (assignment_expression "iVar10 = *piVar22" identifier = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar20 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)(puVar20 + -0x2c)" * (cast_expression "(undefined4 *)(puVar20 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x2c)" ( (binary_expression "puVar20 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "uVar2 = *(uint *)(puVar20 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar20 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar20 + 0x10)" * (cast_expression "(uint *)(puVar20 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pbVar26 = param_3;" (assignment_expression "pbVar26 = param_3" identifier = identifier) ;) (expression_statement "pbVar33 = pbVar12;" (assignment_expression "pbVar33 = pbVar12" identifier = identifier) ;) (if_statement "if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }" { (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" identifier = (binary_expression "uVar2 & 2" identifier & number_literal)) ;) (expression_statement "param_2 = (byte *)(uVar2 & 0x10);" (assignment_expression "param_2 = (byte *)(uVar2 & 0x10)" identifier = (cast_expression "(byte *)(uVar2 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar20 + -0x554) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar20 + -0x554) = uVar2 & 5" (pointer_expression "*(uint *)(puVar20 + -0x554)" * (cast_expression "(uint *)(puVar20 + -0x554)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x554)" ( (binary_expression "puVar20 + -0x554" identifier + number_literal) )))) = (binary_expression "uVar2 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);" (assignment_expression "*(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8)" (pointer_expression "*(undefined4 *)(puVar20 + -0x55c)" * (cast_expression "(undefined4 *)(puVar20 + -0x55c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x55c)" ( (binary_expression "puVar20 + -0x55c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar28 + 0x31df8)" * (cast_expression "(undefined4 *)(puVar28 + 0x31df8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x31df8)" ( (binary_expression "puVar28 + 0x31df8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;" (assignment_expression "*(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar20 + -0x560)" * (cast_expression "(int *)(puVar20 + -0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x560)" ( (binary_expression "puVar20 + -0x560" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar28 + 0x31fac)" * (cast_expression "(int *)(puVar28 + 0x31fac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x31fac)" ( (binary_expression "puVar28 + 0x31fac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;" (assignment_expression "*(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar20 + -0x544)" * (cast_expression "(int *)(puVar20 + -0x544)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x544)" ( (binary_expression "puVar20 + -0x544" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar28 + 0x32070)" * (cast_expression "(int *)(puVar28 + 0x32070)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x32070)" ( (binary_expression "puVar28 + 0x32070" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;" (assignment_expression "*(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar20 + -0x54c)" * (cast_expression "(int *)(puVar20 + -0x54c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x54c)" ( (binary_expression "puVar20 + -0x54c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar28 + 0x31fac)" * (cast_expression "(int *)(puVar28 + 0x31fac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x31fac)" ( (binary_expression "puVar28 + 0x31fac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "unaff_s5 = piVar22 + 1;" (assignment_expression "unaff_s5 = piVar22 + 1" identifier = (binary_expression "piVar22 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" identifier = identifier) ;) (do_statement "do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);" do (compound_statement "{\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    }" { (expression_statement "unaff_s4 = unaff_s5;" (assignment_expression "unaff_s4 = unaff_s5" identifier = identifier) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" if (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" { (expression_statement "iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);" (assignment_expression "iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10)" identifier = (call_expression "(**(code **)(puVar30 + -0x7b70))(iVar10)" (parenthesized_expression "(**(code **)(puVar30 + -0x7b70))" ( (pointer_expression "**(code **)(puVar30 + -0x7b70)" * (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) )) (argument_list "(iVar10)" ( identifier )))) ;) (expression_statement "puVar30 = *(undefined **)(puVar20 + -0x570);" (assignment_expression "puVar30 = *(undefined **)(puVar20 + -0x570)" identifier = (pointer_expression "*(undefined **)(puVar20 + -0x570)" * (cast_expression "(undefined **)(puVar20 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x570)" ( (binary_expression "puVar20 + -0x570" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar10 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }" if (parenthesized_expression "(iVar10 - 0x21U < 0x3c)" ( (binary_expression "iVar10 - 0x21U < 0x3c" (binary_expression "iVar10 - 0x21U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }" { comment comment (expression_statement "uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;" (assignment_expression "uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()" identifier = (call_expression "(*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()" (parenthesized_expression "(*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))" ( (pointer_expression "*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" * (cast_expression "(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" ( (binary_expression "puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" * (cast_expression "(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" ( (binary_expression "*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4" (pointer_expression "*(int *)(puVar20 + -0x560)" * (cast_expression "(int *)(puVar20 + -0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x560)" ( (binary_expression "puVar20 + -0x560" identifier + number_literal) )))) + (binary_expression "(iVar10 - 0x21U) * 4" (parenthesized_expression "(iVar10 - 0x21U)" ( (binary_expression "iVar10 - 0x21U" identifier - number_literal) )) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "unaff_s5 = unaff_s4;" (assignment_expression "unaff_s5 = unaff_s4" identifier = identifier) ;) (if_statement "if (param_3 == pbVar33) goto LAB_000295c4;" if (parenthesized_expression "(param_3 == pbVar33)" ( (binary_expression "param_3 == pbVar33" identifier == identifier) )) (goto_statement "goto LAB_000295c4;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)pbVar33;" (assignment_expression "iVar4 = *(int *)pbVar33" identifier = (pointer_expression "*(int *)pbVar33" * (cast_expression "(int *)pbVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" if (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" { (expression_statement "iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);" (assignment_expression "iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4)" identifier = (call_expression "(**(code **)(puVar30 + -0x7b70))(iVar4)" (parenthesized_expression "(**(code **)(puVar30 + -0x7b70))" ( (pointer_expression "**(code **)(puVar30 + -0x7b70)" * (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "puVar30 = *(undefined **)(puVar20 + -0x570);" (assignment_expression "puVar30 = *(undefined **)(puVar20 + -0x570)" identifier = (pointer_expression "*(undefined **)(puVar20 + -0x570)" * (cast_expression "(undefined **)(puVar20 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x570)" ( (binary_expression "puVar20 + -0x570" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (iVar4 != iVar10) goto LAB_000295c8;" if (parenthesized_expression "(iVar4 != iVar10)" ( (binary_expression "iVar4 != iVar10" identifier != identifier) )) (goto_statement "goto LAB_000295c8;" goto statement_identifier ;)) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar10 = *unaff_s4;" (assignment_expression "iVar10 = *unaff_s4" identifier = (pointer_expression "*unaff_s4" * identifier)) ;) (expression_statement "pbVar33 = pbVar33 + 4;" (assignment_expression "pbVar33 = pbVar33 + 4" identifier = (binary_expression "pbVar33 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s5 = unaff_s4 + 1;" (assignment_expression "unaff_s5 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "piVar22 = unaff_s4;" (assignment_expression "piVar22 = unaff_s4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "piVar22 = unaff_s4;" (assignment_expression "piVar22 = unaff_s4" identifier = identifier) ;) (if_statement "if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar33 != param_3)" ( (binary_expression "pbVar33 != param_3" identifier != identifier) )) (compound_statement "{\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }" { (expression_statement "piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);" (assignment_expression "piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8)" identifier = (cast_expression "(int *)(*(uint *)(puVar20 + 0x10) & 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar20 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar20 + 0x10) & 8" (pointer_expression "*(uint *)(puVar20 + 0x10)" * (cast_expression "(uint *)(puVar20 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" if (parenthesized_expression "(piVar22 == (int *)0x0)" ( (binary_expression "piVar22 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000295c4:\n      uVar2 = 1;\n    }" { (labeled_statement "LAB_000295c4:\n      uVar2 = 1;" statement_identifier : (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" else (compound_statement "{\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" { (expression_statement "uVar2 = (uint)(*(int *)pbVar33 != 0x2f);" (assignment_expression "uVar2 = (uint)(*(int *)pbVar33 != 0x2f)" identifier = (call_expression "(uint)(*(int *)pbVar33 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)pbVar33 != 0x2f)" ( (binary_expression "*(int *)pbVar33 != 0x2f" (pointer_expression "*(int *)pbVar33" * (cast_expression "(int *)pbVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar20 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar20 + -0x2c)" * (cast_expression "(int *)(puVar20 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x2c)" ( (binary_expression "puVar20 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 == **(int **)(puVar20 + -0x558))" ( (binary_expression "iVar4 == **(int **)(puVar20 + -0x558)" identifier == (pointer_expression "**(int **)(puVar20 + -0x558)" * (pointer_expression "*(int **)(puVar20 + -0x558)" * (cast_expression "(int **)(puVar20 + -0x558)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x558)" ( (binary_expression "puVar20 + -0x558" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar35 = *(code **)(puVar30 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(puVar30 + -0x7b8c)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7b8c)" * (cast_expression "(code **)(puVar30 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b8c)" ( (binary_expression "puVar30 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = FUN_00029f20;" (assignment_expression "pcVar36 = FUN_00029f20" identifier = identifier) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar31 = puVar20 + -0x5f0;" (assignment_expression "puVar31 = puVar20 + -0x5f0" identifier = (binary_expression "puVar20 + -0x5f0" identifier + number_literal)) ;) (expression_statement "pcVar29 = *(code **)(pcVar35 + 0x315c4);" (assignment_expression "pcVar29 = *(code **)(pcVar35 + 0x315c4)" identifier = (pointer_expression "*(code **)(pcVar35 + 0x315c4)" * (cast_expression "(code **)(pcVar35 + 0x315c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x315c4)" ( (binary_expression "pcVar35 + 0x315c4" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar20 + -0x590) = pbVar33;" (assignment_expression "*(byte **)(puVar20 + -0x590) = pbVar33" (pointer_expression "*(byte **)(puVar20 + -0x590)" * (cast_expression "(byte **)(puVar20 + -0x590)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x590)" ( (binary_expression "puVar20 + -0x590" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x5a8) = unaff_s2;" (assignment_expression "*(undefined **)(puVar20 + -0x5a8) = unaff_s2" (pointer_expression "*(undefined **)(puVar20 + -0x5a8)" * (cast_expression "(undefined **)(puVar20 + -0x5a8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5a8)" ( (binary_expression "puVar20 + -0x5a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);" (assignment_expression "puVar3 = *(undefined4 **)(pcVar35 + 0x3166c)" identifier = (pointer_expression "*(undefined4 **)(pcVar35 + 0x3166c)" * (cast_expression "(undefined4 **)(pcVar35 + 0x3166c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x3166c)" ( (binary_expression "pcVar35 + 0x3166c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar20 + -0x5b0) = param_2;" (assignment_expression "*(byte **)(puVar20 + -0x5b0) = param_2" (pointer_expression "*(byte **)(puVar20 + -0x5b0)" * (cast_expression "(byte **)(puVar20 + -0x5b0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5b0)" ( (binary_expression "puVar20 + -0x5b0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar20 + -0x594) = iVar10;" (assignment_expression "*(int *)(puVar20 + -0x594) = iVar10" (pointer_expression "*(int *)(puVar20 + -0x594)" * (cast_expression "(int *)(puVar20 + -0x594)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x594)" ( (binary_expression "puVar20 + -0x594" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar27 = pbVar12 + 1;" (assignment_expression "pbVar27 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];" (assignment_expression "*(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575]" (pointer_expression "*(uint *)(puVar20 + -0x5c0)" * (cast_expression "(uint *)(puVar20 + -0x5c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c0)" ( (binary_expression "puVar20 + -0x5c0" identifier + number_literal) )))) = (cast_expression "(uint)(byte)puVar20[-0x575]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar20[-0x575]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar20[-0x575]" identifier [ number_literal ])))) ;) (expression_statement "*(int **)(puVar20 + -0x5a0) = piVar22;" (assignment_expression "*(int **)(puVar20 + -0x5a0) = piVar22" (pointer_expression "*(int **)(puVar20 + -0x5a0)" * (cast_expression "(int **)(puVar20 + -0x5a0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5a0)" ( (binary_expression "puVar20 + -0x5a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;" (assignment_expression "*(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0" (pointer_expression "*(code **)(puVar20 + -0x5d8)" * (cast_expression "(code **)(puVar20 + -0x5d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) )))) = (binary_expression "pcVar35 + 0x391d0" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x588) = iVar4;" (assignment_expression "*(int *)(puVar20 + -0x588) = iVar4" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -0x58c) = pcVar36;" (assignment_expression "*(code **)(puVar20 + -0x58c) = pcVar36" (pointer_expression "*(code **)(puVar20 + -0x58c)" * (cast_expression "(code **)(puVar20 + -0x58c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x58c)" ( (binary_expression "puVar20 + -0x58c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x598) = unaff_s6;" (assignment_expression "*(byte **)(puVar20 + -0x598) = unaff_s6" (pointer_expression "*(byte **)(puVar20 + -0x598)" * (cast_expression "(byte **)(puVar20 + -0x598)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x598)" ( (binary_expression "puVar20 + -0x598" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar20 + -0x59c) = unaff_s5;" (assignment_expression "*(int **)(puVar20 + -0x59c) = unaff_s5" (pointer_expression "*(int **)(puVar20 + -0x59c)" * (cast_expression "(int **)(puVar20 + -0x59c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x59c)" ( (binary_expression "puVar20 + -0x59c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x5a4) = param_3;" (assignment_expression "*(byte **)(puVar20 + -0x5a4) = param_3" (pointer_expression "*(byte **)(puVar20 + -0x5a4)" * (cast_expression "(byte **)(puVar20 + -0x5a4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5a4)" ( (binary_expression "puVar20 + -0x5a4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -0x5ac) = unaff_s1;" (assignment_expression "*(uint *)(puVar20 + -0x5ac) = unaff_s1" (pointer_expression "*(uint *)(puVar20 + -0x5ac)" * (cast_expression "(uint *)(puVar20 + -0x5ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5ac)" ( (binary_expression "puVar20 + -0x5ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x5c4) = param_4;" (assignment_expression "*(byte **)(puVar20 + -0x5c4) = param_4" (pointer_expression "*(byte **)(puVar20 + -0x5c4)" * (cast_expression "(byte **)(puVar20 + -0x5c4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5c4)" ( (binary_expression "puVar20 + -0x5c4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5b8) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5b8) = 0" (pointer_expression "*(undefined4 *)(puVar20 + -0x5b8)" * (cast_expression "(undefined4 *)(puVar20 + -0x5b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5b8)" ( (binary_expression "puVar20 + -0x5b8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5b4) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5b4) = *puVar3" (pointer_expression "*(undefined4 *)(puVar20 + -0x5b4)" * (cast_expression "(undefined4 *)(puVar20 + -0x5b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5b4)" ( (binary_expression "puVar20 + -0x5b4" identifier + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "pbVar33 = pbVar12;" (assignment_expression "pbVar33 = pbVar12" identifier = identifier) ;) (expression_statement "pbVar13 = pbVar26;" (assignment_expression "pbVar13 = pbVar26" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar29)(pbVar12);" (assignment_expression "uVar5 = (*pcVar29)(pbVar12)" identifier = (call_expression "(*pcVar29)(pbVar12)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(pbVar12)" ( identifier )))) ;) (expression_statement "iVar10 = (int)(char)pbVar12[1];" (assignment_expression "iVar10 = (int)(char)pbVar12[1]" identifier = (cast_expression "(int)(char)pbVar12[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar12[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar12[1]" identifier [ number_literal ])))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5cc) = uVar5;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5cc) = uVar5" (pointer_expression "*(undefined4 *)(puVar20 + -0x5cc)" * (cast_expression "(undefined4 *)(puVar20 + -0x5cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }" { (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = *(byte **)(iVar4 + -0x7fd8);" (assignment_expression "param_3 = *(byte **)(iVar4 + -0x7fd8)" identifier = (pointer_expression "*(byte **)(iVar4 + -0x7fd8)" * (cast_expression "(byte **)(iVar4 + -0x7fd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7fd8)" ( (binary_expression "iVar4 + -0x7fd8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" identifier = (call_expression "(uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" ( (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU < 2" (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal) < number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;" (assignment_expression "*(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8" (pointer_expression "*(undefined1 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined1 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) )))) = (binary_expression "puVar20 + -0x5b8" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;" (assignment_expression "*(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(puVar20 + -0x5c8)" * (cast_expression "(int *)(puVar20 + -0x5c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c8)" ( (binary_expression "puVar20 + -0x5c8" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar23 = puVar20 + -0x5f0;" (assignment_expression "puVar23 = puVar20 + -0x5f0" identifier = (binary_expression "puVar20 + -0x5f0" identifier + number_literal)) ;) (expression_statement "unaff_s6 = pbVar27;" (assignment_expression "unaff_s6 = pbVar27" identifier = identifier) ;) (do_statement "do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);" do (compound_statement "{\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    }" { (while_statement "while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }" while (parenthesized_expression "(puVar31 = puVar23, iVar10 == 0x5b)" ( (comma_expression "puVar31 = puVar23, iVar10 == 0x5b" (assignment_expression "puVar31 = puVar23" identifier = identifier) , (binary_expression "iVar10 == 0x5b" identifier == number_literal)) )) (compound_statement "{\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }" { (if_statement "if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }" if (parenthesized_expression "(*(int *)(param_3 + -0x4730) == 0)" ( (binary_expression "*(int *)(param_3 + -0x4730) == 0" (pointer_expression "*(int *)(param_3 + -0x4730)" * (cast_expression "(int *)(param_3 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -0x4730)" ( (binary_expression "param_3 + -0x4730" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }" { (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8))" identifier = (call_expression "(**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8))" (parenthesized_expression "(**(code **)(iVar4 + -0x7be0))" ( (pointer_expression "**(code **)(iVar4 + -0x7be0)" * (pointer_expression "*(code **)(iVar4 + -0x7be0)" * (cast_expression "(code **)(iVar4 + -0x7be0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7be0)" ( (binary_expression "iVar4 + -0x7be0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar20 + -0x5c8))" ( (pointer_expression "*(undefined4 *)(puVar20 + -0x5c8)" * (cast_expression "(undefined4 *)(puVar20 + -0x5c8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c8)" ( (binary_expression "puVar20 + -0x5c8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n            uVar5 = 1;\n          }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = 1;\n          }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(param_3 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(param_3 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(param_3 + -0x4730)" * (cast_expression "(undefined4 *)(param_3 + -0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -0x4730)" ( (binary_expression "param_3 + -0x4730" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "bVar8 = pbVar27[1];" (assignment_expression "bVar8 = pbVar27[1]" identifier = (subscript_expression "pbVar27[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar27 + 1;" (assignment_expression "pbVar11 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }" if (parenthesized_expression "((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e))))" ( (binary_expression "(bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))" (parenthesized_expression "(bVar8 == 0x21)" ( (binary_expression "bVar8 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))" ( (parenthesized_expression "(*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e))" ( (binary_expression "*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)" (binary_expression "*(int *)(param_3 + -0x4730) < 0" (pointer_expression "*(int *)(param_3 + -0x4730)" * (cast_expression "(int *)(param_3 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -0x4730)" ( (binary_expression "param_3 + -0x4730" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(bVar8 == 0x5e)" ( (binary_expression "bVar8 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }" { (expression_statement "bVar8 = pbVar27[2];" (assignment_expression "bVar8 = pbVar27[2]" identifier = (subscript_expression "pbVar27[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar27 + 2;" (assignment_expression "pbVar11 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (if_statement "if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }" if (parenthesized_expression "(bVar8 == 0x5d)" ( (binary_expression "bVar8 == 0x5d" identifier == number_literal) )) (compound_statement "{\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }" { (expression_statement "bVar8 = pbVar11[1];" (assignment_expression "bVar8 = pbVar11[1]" identifier = (subscript_expression "pbVar11[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar33 = (byte *)0x5d;" (assignment_expression "pbVar33 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }" while (parenthesized_expression "(pbVar27 = pbVar11 + 1, bVar8 != 0x5d)" ( (comma_expression "pbVar27 = pbVar11 + 1, bVar8 != 0x5d" (assignment_expression "pbVar27 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) , (binary_expression "bVar8 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }" { (if_statement "if (bVar8 == 0) goto LAB_0002a034;" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) (expression_statement "pbVar11 = pbVar27;" (assignment_expression "pbVar11 = pbVar27" identifier = identifier) ;) (expression_statement "bVar8 = *pbVar27;" (assignment_expression "bVar8 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) })) (expression_statement "iVar10 = (int)(char)pbVar11[1];" (assignment_expression "iVar10 = (int)(char)pbVar11[1]" identifier = (cast_expression "(int)(char)pbVar11[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar11[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar11[1]" identifier [ number_literal ])))) ;) (labeled_statement "joined_r0x0002a188:\n        puVar23 = puVar31;" statement_identifier : (expression_statement "puVar23 = puVar31;" (assignment_expression "puVar23 = puVar31" identifier = identifier) ;)) (if_statement "if (iVar10 == 0) goto LAB_0002a034;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) })) (expression_statement "pbVar33 = &DAT_c0000601;" (assignment_expression "pbVar33 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar2 = iVar10 - 0x21U & 0xff;" (assignment_expression "uVar2 = iVar10 - 0x21U & 0xff" identifier = (binary_expression "iVar10 - 0x21U & 0xff" (binary_expression "iVar10 - 0x21U" identifier - number_literal) & number_literal)) ;) (expression_statement "pbVar13 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "pbVar13 = (byte *)(uint)(uVar2 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar2 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < 0x20)" ( (binary_expression "uVar2 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }" if (parenthesized_expression "(pbVar13 != (byte *)0x0)" ( (binary_expression "pbVar13 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }" { (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }" { (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;) (if_statement "if (iVar10 != 0x28) goto LAB_0002a028;" if (parenthesized_expression "(iVar10 != 0x28)" ( (binary_expression "iVar10 != 0x28" identifier != number_literal) )) (goto_statement "goto LAB_0002a028;" goto statement_identifier ;)) (expression_statement "pbVar13 = (byte *)0x1;" (assignment_expression "pbVar13 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar10 != 0x29) goto LAB_0002a198;" if (parenthesized_expression "(iVar10 != 0x29)" ( (binary_expression "iVar10 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_0002a198;" goto statement_identifier ;)) (if_statement "if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }" if (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }" { (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" identifier = (cast_expression "(int *)((int)unaff_s5 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + -1)" ( (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (labeled_statement "LAB_0002a028:\n          pbVar27 = pbVar27 + 1;" statement_identifier : (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;)) (goto_statement "goto joined_r0x0002a188;" goto statement_identifier ;) })) (if_statement "if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }" if (parenthesized_expression "(1 < *(int *)(puVar20 + -0x588) - 0x3fU)" ( (binary_expression "1 < *(int *)(puVar20 + -0x588) - 0x3fU" number_literal < (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }" { (expression_statement "*(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "*(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6)" (pointer_expression "*(byte **)(puVar20 + -0x5cc)" * (cast_expression "(byte **)(puVar20 + -0x5cc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) = (binary_expression "pbVar27 + (1 - (int)unaff_s6)" identifier + (parenthesized_expression "(1 - (int)unaff_s6)" ( (binary_expression "1 - (int)unaff_s6" number_literal - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }" if (parenthesized_expression "((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c)" ( (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4" (parenthesized_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc)" ( (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar20 + -0x5cc)" * (cast_expression "(int *)(puVar20 + -0x5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) + number_literal) & number_literal) )) - number_literal) < number_literal) )) (compound_statement "{\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }" { (expression_statement "iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7" (parenthesized_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc)" ( (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar20 + -0x5cc)" * (cast_expression "(int *)(puVar20 + -0x5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) + number_literal) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);" (assignment_expression "puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b7c))" ( (pointer_expression "**(code **)(iVar4 + -0x7b7c)" * (pointer_expression "*(code **)(iVar4 + -0x7b7c)" * (cast_expression "(code **)(iVar4 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b7c)" ( (binary_expression "iVar4 + -0x7b7c" identifier + number_literal) ))))) )) (argument_list "(puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (binary_expression "puVar31 + iVar10 + 0x1c" (binary_expression "puVar31 + iVar10" identifier + identifier) + number_literal) , identifier , (binary_expression "(int)pbVar27 - (int)unaff_s6" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar20 + -0x5bc);" (assignment_expression "puVar3 = *(undefined4 **)(puVar20 + -0x5bc)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + iVar10 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar31 + iVar10 + 0x18)" * (cast_expression "(undefined4 *)(puVar31 + iVar10 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + iVar10 + 0x18)" ( (binary_expression "puVar31 + iVar10 + 0x18" (binary_expression "puVar31 + iVar10" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = puVar31 + iVar10 + 0x18;" (assignment_expression "*puVar3 = puVar31 + iVar10 + 0x18" (pointer_expression "*puVar3" * identifier) = (binary_expression "puVar31 + iVar10 + 0x18" (binary_expression "puVar31 + iVar10" identifier + identifier) + number_literal)) ;) (if_statement "if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" if (parenthesized_expression "(*(int *)(puVar20 + -0x5b8) == 0)" ( (binary_expression "*(int *)(puVar20 + -0x5b8) == 0" (pointer_expression "*(int *)(puVar20 + -0x5b8)" * (cast_expression "(int *)(puVar20 + -0x5b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5b8)" ( (binary_expression "puVar20 + -0x5b8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" { (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78bc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" if (parenthesized_expression "(pbVar27[-1] != 0x29)" ( (binary_expression "pbVar27[-1] != 0x29" (subscript_expression "pbVar27[-1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" { (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78ac" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" if (parenthesized_expression "(0x1f < *(int *)(puVar20 + -0x588) - 0x21U)" ( (binary_expression "0x1f < *(int *)(puVar20 + -0x588) - 0x21U" number_literal < (binary_expression "*(int *)(puVar20 + -0x588) - 0x21U" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" { (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7898" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) comment comment (expression_statement "uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();" (assignment_expression "uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))()" identifier = (call_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))()" (parenthesized_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))" ( (pointer_expression "*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" * (cast_expression "(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" ( (binary_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4" (pointer_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" * (cast_expression "(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4" (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) + (binary_expression "(*(int *)(puVar20 + -0x588) - 0x21U) * 4" (parenthesized_expression "(*(int *)(puVar20 + -0x588) - 0x21U)" ( (binary_expression "*(int *)(puVar20 + -0x588) - 0x21U" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal) )) * number_literal)) )))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (break_statement "break;" break ;) })) (if_statement "if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }" if (parenthesized_expression "((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0))" ( (binary_expression "(iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)" (parenthesized_expression "(iVar10 != 0x7c)" ( (binary_expression "iVar10 != 0x7c" identifier != number_literal) )) || (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }" { (labeled_statement "LAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];" statement_identifier : (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;)) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (goto_statement "goto joined_r0x0002a188;" goto statement_identifier ;) })) (expression_statement "pbVar11 = *(byte **)(puVar20 + -0x5cc);" (assignment_expression "pbVar11 = *(byte **)(puVar20 + -0x5cc)" identifier = (pointer_expression "*(byte **)(puVar20 + -0x5cc)" * (cast_expression "(byte **)(puVar20 + -0x5cc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) ))))) ;) (if_statement "if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }" { (expression_statement "pbVar11 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "pbVar11 = pbVar27 + (1 - (int)unaff_s6)" identifier = (binary_expression "pbVar27 + (1 - (int)unaff_s6)" identifier + (parenthesized_expression "(1 - (int)unaff_s6)" ( (binary_expression "1 - (int)unaff_s6" number_literal - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;" if (parenthesized_expression "(0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4)" ( (binary_expression "0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4" number_literal < (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar11 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar11 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar11 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + 7)" ( (binary_expression "pbVar11 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b7c);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b7c)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b7c)" * (cast_expression "(code **)(iVar4 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b7c)" ( (binary_expression "iVar4 + -0x7b7c" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = pbVar27 + -(int)unaff_s6;" (assignment_expression "pbVar13 = pbVar27 + -(int)unaff_s6" identifier = (binary_expression "pbVar27 + -(int)unaff_s6" identifier + (unary_expression "-(int)unaff_s6" - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pbVar21 = pbVar27 + 1;" (assignment_expression "pbVar21 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar11 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar11 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar11 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + 7)" ( (binary_expression "pbVar11 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar32 = puVar31 + iVar17;" (assignment_expression "puVar32 = puVar31 + iVar17" identifier = (binary_expression "puVar31 + iVar17" identifier + identifier)) ;) (expression_statement "*(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;" (assignment_expression "*(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18" (pointer_expression "*(undefined1 **)(puVar20 + -0x5d0)" * (cast_expression "(undefined1 **)(puVar20 + -0x5d0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5d0)" ( (binary_expression "puVar20 + -0x5d0" identifier + number_literal) )))) = (binary_expression "puVar31 + iVar17 + 0x18" (binary_expression "puVar31 + iVar17" identifier + identifier) + number_literal)) ;) (expression_statement "puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);" (assignment_expression "puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c)" identifier = (cast_expression "(undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(puVar31 + iVar17 + 0x1c)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(puVar31 + iVar17 + 0x1c)" ( (binary_expression "puVar31 + iVar17 + 0x1c" (binary_expression "puVar31 + iVar17" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = *(undefined4 **)(puVar20 + -0x5d0);" (assignment_expression "puVar15 = *(undefined4 **)(puVar20 + -0x5d0)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + -0x5d0)" * (cast_expression "(undefined4 **)(puVar20 + -0x5d0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5d0)" ( (binary_expression "puVar20 + -0x5d0" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (expression_statement "puVar6 = *(undefined4 **)(puVar20 + -0x5bc);" (assignment_expression "puVar6 = *(undefined4 **)(puVar20 + -0x5bc)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) ))))) ;) (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar20 + -0x5bc) = puVar15;" (assignment_expression "*(undefined4 **)(puVar20 + -0x5bc) = puVar15" (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar6 = puVar15;" (assignment_expression "*puVar6 = puVar15" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "pbVar33 = unaff_s6;" (assignment_expression "pbVar33 = unaff_s6" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar21;" (assignment_expression "unaff_s6 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar27 = pbVar21;" (assignment_expression "pbVar27 = pbVar21" identifier = identifier) ;) (expression_statement "puVar31 = puVar31 + iVar17;" (assignment_expression "puVar31 = puVar31 + iVar17" identifier = (binary_expression "puVar31 + iVar17" identifier + identifier)) ;) (expression_statement "puVar23 = puVar32;" (assignment_expression "puVar23 = puVar32" identifier = identifier) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);" statement_identifier : (expression_statement "pbVar11 = *(byte **)(puVar20 + -0x5b4);" (assignment_expression "pbVar11 = *(byte **)(puVar20 + -0x5b4)" identifier = (pointer_expression "*(byte **)(puVar20 + -0x5b4)" * (cast_expression "(byte **)(puVar20 + -0x5b4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5b4)" ( (binary_expression "puVar20 + -0x5b4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b8c)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b8c)" * (cast_expression "(code **)(iVar4 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b8c)" ( (binary_expression "iVar4 + -0x7b8c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(pbVar11 == (byte *)*puVar3)" ( (binary_expression "pbVar11 == (byte *)*puVar3" identifier == (cast_expression "(byte *)*puVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "pcVar36 = FUN_0002a610;" (assignment_expression "pcVar36 = FUN_0002a610" identifier = identifier) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar29 = pcVar35 + 0x38ae0;" (assignment_expression "pcVar29 = pcVar35 + 0x38ae0" identifier = (binary_expression "pcVar35 + 0x38ae0" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);" (assignment_expression "puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c)" identifier = (pointer_expression "*(undefined4 **)(pcVar35 + 0x30f7c)" * (cast_expression "(undefined4 **)(pcVar35 + 0x30f7c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x30f7c)" ( (binary_expression "pcVar35 + 0x30f7c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0" (pointer_expression "*(undefined1 **)(puVar31 + -8)" * (cast_expression "(undefined1 **)(puVar31 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -8)" ( (binary_expression "puVar31 + -8" identifier + number_literal) )))) = (binary_expression "puVar20 + -0x5f0" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar31 + -0x1c) = param_3;" (assignment_expression "*(byte **)(puVar31 + -0x1c) = param_3" (pointer_expression "*(byte **)(puVar31 + -0x1c)" * (cast_expression "(byte **)(puVar31 + -0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c)" ( (binary_expression "puVar31 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar31 + -0x160) = pcVar29;" (assignment_expression "*(code **)(puVar31 + -0x160) = pcVar29" (pointer_expression "*(code **)(puVar31 + -0x160)" * (cast_expression "(code **)(puVar31 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x160)" ( (binary_expression "puVar31 + -0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar31 + -4) = pcVar36;" (assignment_expression "*(code **)(puVar31 + -4) = pcVar36" (pointer_expression "*(code **)(puVar31 + -4)" * (cast_expression "(code **)(puVar31 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -4)" ( (binary_expression "puVar31 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0xc) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0xc) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0xc)" * (cast_expression "(byte **)(puVar31 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0xc)" ( (binary_expression "puVar31 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar31 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar31 + -0x10)" * (cast_expression "(byte **)(puVar31 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x10)" ( (binary_expression "puVar31 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x14)" * (cast_expression "(int **)(puVar31 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x14)" ( (binary_expression "puVar31 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x18) = pbVar26;" (assignment_expression "*(byte **)(puVar31 + -0x18) = pbVar26" (pointer_expression "*(byte **)(puVar31 + -0x18)" * (cast_expression "(byte **)(puVar31 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x18)" ( (binary_expression "puVar31 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x20) = puVar3;" (assignment_expression "*(undefined4 **)(puVar31 + -0x20) = puVar3" (pointer_expression "*(undefined4 **)(puVar31 + -0x20)" * (cast_expression "(undefined4 **)(puVar31 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x20)" ( (binary_expression "puVar31 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar31 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar31 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar31 + -0x24)" * (cast_expression "(uint *)(puVar31 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x24)" ( (binary_expression "puVar31 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x28) = pbVar12;" (assignment_expression "*(byte **)(puVar31 + -0x28) = pbVar12" (pointer_expression "*(byte **)(puVar31 + -0x28)" * (cast_expression "(byte **)(puVar31 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x28)" ( (binary_expression "puVar31 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x144) = puVar6;" (assignment_expression "*(undefined4 **)(puVar31 + -0x144) = puVar6" (pointer_expression "*(undefined4 **)(puVar31 + -0x144)" * (cast_expression "(undefined4 **)(puVar31 + -0x144)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x144)" ( (binary_expression "puVar31 + -0x144" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x154) = pbVar11 + 1;" (assignment_expression "*(byte **)(puVar31 + -0x154) = pbVar11 + 1" (pointer_expression "*(byte **)(puVar31 + -0x154)" * (cast_expression "(byte **)(puVar31 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x154)" ( (binary_expression "puVar31 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar21 = (byte *)(uint)*pbVar11;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar11" identifier = (binary_expression "(byte *)(uint)*pbVar11" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x2c) = *puVar6;" (assignment_expression "*(undefined4 *)(puVar31 + -0x2c) = *puVar6" (pointer_expression "*(undefined4 *)(puVar31 + -0x2c)" * (cast_expression "(undefined4 *)(puVar31 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "iVar10 = *(int *)(pcVar35 + 0x30cbc);" (assignment_expression "iVar10 = *(int *)(pcVar35 + 0x30cbc)" identifier = (pointer_expression "*(int *)(pcVar35 + 0x30cbc)" * (cast_expression "(int *)(pcVar35 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30cbc)" ( (binary_expression "pcVar35 + 0x30cbc" identifier + number_literal) ))))) ;) (expression_statement "pbVar27 = pbVar13;" (assignment_expression "pbVar27 = pbVar13" identifier = identifier) ;) (expression_statement "pbVar34 = pbVar33;" (assignment_expression "pbVar34 = pbVar33" identifier = identifier) ;) (if_statement "if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }" if (parenthesized_expression "(pbVar21 != (byte *)0x0)" ( (binary_expression "pbVar21 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }" { (expression_statement "uVar2 = *(uint *)(puVar31 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar31 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar31 + 0x10)" * (cast_expression "(uint *)(puVar31 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" identifier = (binary_expression "uVar2 & 2" identifier & number_literal)) ;) (expression_statement "pbVar12 = (byte *)(uVar2 & 0x10);" (assignment_expression "pbVar12 = (byte *)(uVar2 & 0x10)" identifier = (cast_expression "(byte *)(uVar2 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar31 + -0x140) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar31 + -0x140) = uVar2 & 5" (pointer_expression "*(uint *)(puVar31 + -0x140)" * (cast_expression "(uint *)(puVar31 + -0x140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x140)" ( (binary_expression "puVar31 + -0x140" identifier + number_literal) )))) = (binary_expression "uVar2 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar31 + -0x148)" * (cast_expression "(undefined4 *)(puVar31 + -0x148)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x148)" ( (binary_expression "puVar31 + -0x148" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(pcVar35 + 0x30b08)" * (cast_expression "(undefined4 *)(pcVar35 + 0x30b08)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30b08)" ( (binary_expression "pcVar35 + 0x30b08" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;" (assignment_expression "*(int *)(puVar31 + -0x14c) = iVar10 + -0x7660" (pointer_expression "*(int *)(puVar31 + -0x14c)" * (cast_expression "(int *)(puVar31 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x14c)" ( (binary_expression "puVar31 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar10 + -0x7660" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar31 + -0x138)" * (cast_expression "(int *)(puVar31 + -0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x138)" ( (binary_expression "puVar31 + -0x138" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar35 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(pcVar35 + 0x30d80)" * (cast_expression "(int *)(pcVar35 + 0x30d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30d80)" ( (binary_expression "pcVar35 + 0x30d80" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar31 + -0x13c)" * (cast_expression "(int *)(puVar31 + -0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x13c)" ( (binary_expression "puVar31 + -0x13c" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar35 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(pcVar35 + 0x30cbc)" * (cast_expression "(int *)(pcVar35 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30cbc)" ( (binary_expression "pcVar35 + 0x30cbc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "pbVar26 = pbVar11;" (assignment_expression "pbVar26 = pbVar11" identifier = identifier) ;) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" identifier = identifier) ;) (do_statement "do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);" do (compound_statement "{\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    }" { (expression_statement "pbVar11 = pbVar21;" (assignment_expression "pbVar11 = pbVar21" identifier = identifier) ;) (if_statement "if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }" if (parenthesized_expression "(pbVar12 != (byte *)0x0)" ( (binary_expression "pbVar12 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }" { (expression_statement "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();" (assignment_expression "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar29 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar29 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar29 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar29 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar29 + -0x7cdc)" * (cast_expression "(code **)(pcVar29 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + -0x7cdc)" ( (binary_expression "pcVar29 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar29 = *(code **)(puVar31 + -0x160);" (assignment_expression "pcVar29 = *(code **)(puVar31 + -0x160)" identifier = (pointer_expression "*(code **)(puVar31 + -0x160)" * (cast_expression "(code **)(puVar31 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x160)" ( (binary_expression "puVar31 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);" (assignment_expression "pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" identifier = (binary_expression "(byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar22 + (int)pbVar21 * 4 + 3)" ( (binary_expression "*piVar22 + (int)pbVar21 * 4 + 3" (binary_expression "*piVar22 + (int)pbVar21 * 4" (pointer_expression "*piVar22" * identifier) + (binary_expression "(int)pbVar21 * 4" (cast_expression "(int)pbVar21" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))) ;) })) (if_statement "if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }" if (parenthesized_expression "(((uint)(pbVar11 + -0x21) & 0xff) < 0x3c)" ( (binary_expression "((uint)(pbVar11 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar11 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar11 + -0x21) & 0xff" (call_expression "(uint)(pbVar11 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + -0x21)" ( (binary_expression "pbVar11 + -0x21" identifier + number_literal) ))) & number_literal) )) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }" { comment comment (expression_statement "uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();" (assignment_expression "uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))()" identifier = (call_expression "(*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))" ( (pointer_expression "*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4))" * (parenthesized_expression "(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4))" ( (binary_expression "pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" * (cast_expression "(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" ( (binary_expression "*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar31 + -0x14c)" * (cast_expression "(int *)(puVar31 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x14c)" ( (binary_expression "puVar31 + -0x14c" identifier + number_literal) )))) + (binary_expression "((uint)(pbVar11 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar11 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar11 + -0x21) & 0xff" (call_expression "(uint)(pbVar11 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + -0x21)" ( (binary_expression "pbVar11 + -0x21" identifier + number_literal) ))) & number_literal) )) * number_literal)) ))))) ))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "pbVar21 = pbVar11;" (assignment_expression "pbVar21 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar34 == pbVar13) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar34 == pbVar13)" ( (binary_expression "pbVar34 == pbVar13" identifier == identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar21 = (byte *)(uint)*pbVar34;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar34" identifier = (binary_expression "(byte *)(uint)*pbVar34" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }" if (parenthesized_expression "(pbVar12 != (byte *)0x0)" ( (binary_expression "pbVar12 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }" { (expression_statement "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();" (assignment_expression "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar29 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar29 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar29 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar29 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar29 + -0x7cdc)" * (cast_expression "(code **)(pcVar29 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + -0x7cdc)" ( (binary_expression "pcVar29 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar29 = *(code **)(puVar31 + -0x160);" (assignment_expression "pcVar29 = *(code **)(puVar31 + -0x160)" identifier = (pointer_expression "*(code **)(puVar31 + -0x160)" * (cast_expression "(code **)(puVar31 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x160)" ( (binary_expression "puVar31 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);" (assignment_expression "pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4)" identifier = (pointer_expression "*(byte **)(*piVar22 + (int)pbVar21 * 4)" * (cast_expression "(byte **)(*piVar22 + (int)pbVar21 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar22 + (int)pbVar21 * 4)" ( (binary_expression "*piVar22 + (int)pbVar21 * 4" (pointer_expression "*piVar22" * identifier) + (binary_expression "(int)pbVar21 * 4" (cast_expression "(int)pbVar21" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = pbVar11;" (assignment_expression "unaff_s6 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar21 != pbVar11) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar21 != pbVar11)" ( (binary_expression "pbVar21 != pbVar11" identifier != identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar26 = *(byte **)(puVar31 + -0x154);" (assignment_expression "pbVar26 = *(byte **)(puVar31 + -0x154)" identifier = (pointer_expression "*(byte **)(puVar31 + -0x154)" * (cast_expression "(byte **)(puVar31 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x154)" ( (binary_expression "puVar31 + -0x154" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar21 = (byte *)(uint)*pbVar26;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar26" identifier = (binary_expression "(byte *)(uint)*pbVar26" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar34 = pbVar34 + 1;" (assignment_expression "pbVar34 = pbVar34 + 1" identifier = (binary_expression "pbVar34 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar31 + -0x154) = pbVar26 + 1;" (assignment_expression "*(byte **)(puVar31 + -0x154) = pbVar26 + 1" (pointer_expression "*(byte **)(puVar31 + -0x154)" * (cast_expression "(byte **)(puVar31 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x154)" ( (binary_expression "puVar31 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar21 != (byte *)0x0)" ( (binary_expression "pbVar21 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar34 != pbVar13)" ( (binary_expression "pbVar34 != pbVar13" identifier != identifier) )) (compound_statement "{\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }" { (expression_statement "pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);" (assignment_expression "pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8)" identifier = (cast_expression "(byte *)(*(uint *)(puVar31 + 0x10) & 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar31 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar31 + 0x10) & 8" (pointer_expression "*(uint *)(puVar31 + 0x10)" * (cast_expression "(uint *)(puVar31 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" if (parenthesized_expression "(pbVar26 == (byte *)0x0)" ( (binary_expression "pbVar26 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar2 = 1;\n    }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" else (compound_statement "{\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" { (expression_statement "uVar2 = (uint)(*pbVar34 != 0x2f);" (assignment_expression "uVar2 = (uint)(*pbVar34 != 0x2f)" identifier = (call_expression "(uint)(*pbVar34 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar34 != 0x2f)" ( (binary_expression "*pbVar34 != 0x2f" (pointer_expression "*pbVar34" * identifier) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar31 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar31 + -0x2c)" * (cast_expression "(int *)(puVar31 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 == **(int **)(puVar31 + -0x144))" ( (binary_expression "iVar4 == **(int **)(puVar31 + -0x144)" identifier == (pointer_expression "**(int **)(puVar31 + -0x144)" * (pointer_expression "*(int **)(puVar31 + -0x144)" * (cast_expression "(int **)(puVar31 + -0x144)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x144)" ( (binary_expression "puVar31 + -0x144" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar35 = *(code **)(pcVar29 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(pcVar29 + -0x7b8c)" identifier = (pointer_expression "*(code **)(pcVar29 + -0x7b8c)" * (cast_expression "(code **)(pcVar29 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + -0x7b8c)" ( (binary_expression "pcVar29 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = rpl_fnmatch;" (assignment_expression "pcVar36 = rpl_fnmatch" identifier = identifier) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar29 = *(code **)(pcVar35 + 0x302e0);" (assignment_expression "pcVar29 = *(code **)(pcVar35 + 0x302e0)" identifier = (pointer_expression "*(code **)(pcVar35 + 0x302e0)" * (cast_expression "(code **)(pcVar35 + 0x302e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x302e0)" ( (binary_expression "pcVar35 + 0x302e0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar31 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar31 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar31 + -0x19c)" * (cast_expression "(uint *)(puVar31 + -0x19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x19c)" ( (binary_expression "puVar31 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar22 = *(int **)(pcVar35 + 0x30338);" (assignment_expression "piVar22 = *(int **)(pcVar35 + 0x30338)" identifier = (pointer_expression "*(int **)(pcVar35 + 0x30338)" * (cast_expression "(int **)(pcVar35 + 0x30338)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x30338)" ( (binary_expression "pcVar35 + 0x30338" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar31 + -0x180) = pbVar34;" (assignment_expression "*(byte **)(puVar31 + -0x180) = pbVar34" (pointer_expression "*(byte **)(puVar31 + -0x180)" * (cast_expression "(byte **)(puVar31 + -0x180)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x180)" ( (binary_expression "puVar31 + -0x180" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x198) = pbVar21;" (assignment_expression "*(byte **)(puVar31 + -0x198) = pbVar21" (pointer_expression "*(byte **)(puVar31 + -0x198)" * (cast_expression "(byte **)(puVar31 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x198)" ( (binary_expression "puVar31 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;" (assignment_expression "*(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c" (pointer_expression "*(code **)(puVar31 + -0x1c8)" * (cast_expression "(code **)(puVar31 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar35 + 0x37e9c" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar31 + -0x17c) = pcVar36;" (assignment_expression "*(code **)(puVar31 + -0x17c) = pcVar36" (pointer_expression "*(code **)(puVar31 + -0x17c)" * (cast_expression "(code **)(puVar31 + -0x17c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x17c)" ( (binary_expression "puVar31 + -0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x184) = iVar10;" (assignment_expression "*(int *)(puVar31 + -0x184) = iVar10" (pointer_expression "*(int *)(puVar31 + -0x184)" * (cast_expression "(int *)(puVar31 + -0x184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x184)" ( (binary_expression "puVar31 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar31 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar31 + -0x188)" * (cast_expression "(byte **)(puVar31 + -0x188)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x188)" ( (binary_expression "puVar31 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x18c) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x18c) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x18c)" * (cast_expression "(int **)(puVar31 + -0x18c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x18c)" ( (binary_expression "puVar31 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -400) = pbVar26;" (assignment_expression "*(byte **)(puVar31 + -400) = pbVar26" (pointer_expression "*(byte **)(puVar31 + -400)" * (cast_expression "(byte **)(puVar31 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -400)" ( (binary_expression "puVar31 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x194) = pbVar13;" (assignment_expression "*(byte **)(puVar31 + -0x194) = pbVar13" (pointer_expression "*(byte **)(puVar31 + -0x194)" * (cast_expression "(byte **)(puVar31 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x194)" ( (binary_expression "puVar31 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x1a0) = pbVar12;" (assignment_expression "*(byte **)(puVar31 + -0x1a0) = pbVar12" (pointer_expression "*(byte **)(puVar31 + -0x1a0)" * (cast_expression "(byte **)(puVar31 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1a0)" ( (binary_expression "puVar31 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x1b4) = iVar4;" (assignment_expression "*(int *)(puVar31 + -0x1b4) = iVar4" (pointer_expression "*(int *)(puVar31 + -0x1b4)" * (cast_expression "(int *)(puVar31 + -0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1b4)" ( (binary_expression "puVar31 + -0x1b4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x1b8) = pbVar33;" (assignment_expression "*(byte **)(puVar31 + -0x1b8) = pbVar33" (pointer_expression "*(byte **)(puVar31 + -0x1b8)" * (cast_expression "(byte **)(puVar31 + -0x1b8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1b8)" ( (binary_expression "puVar31 + -0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x1a4) = *piVar22;" (assignment_expression "*(int *)(puVar31 + -0x1a4) = *piVar22" (pointer_expression "*(int *)(puVar31 + -0x1a4)" * (cast_expression "(int *)(puVar31 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1a4)" ( (binary_expression "puVar31 + -0x1a4" identifier + number_literal) )))) = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "iVar10 = (*pcVar29)();" (assignment_expression "iVar10 = (*pcVar29)()" identifier = (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" { (expression_statement "puVar20 = puVar31 + -0x1ac;" (assignment_expression "puVar20 = puVar31 + -0x1ac" identifier = (binary_expression "puVar31 + -0x1ac" identifier + number_literal)) ;) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = puVar31 + -0x1b4;" (assignment_expression "puVar23 = puVar31 + -0x1b4" identifier = (binary_expression "puVar31 + -0x1b4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar31 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1ac)" ( (binary_expression "puVar31 + -0x1ac" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x1a8)" * (cast_expression "(undefined4 *)(puVar31 + -0x1a8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1a8)" ( (binary_expression "puVar31 + -0x1a8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar35)(0,puVar23,0,puVar20);" (assignment_expression "iVar10 = (*pcVar35)(0,puVar23,0,puVar20)" identifier = (call_expression "(*pcVar35)(0,puVar23,0,puVar20)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(0,puVar23,0,puVar20)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "uVar2 = iVar10 + 1;" (assignment_expression "uVar2 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" { (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" ( (pointer_expression "**(code **)(iVar4 + -0x7b68)" * (pointer_expression "*(code **)(iVar4 + -0x7b68)" * (cast_expression "(code **)(iVar4 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b68)" ( (binary_expression "iVar4 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "uVar5 = 0x129;" (assignment_expression "uVar5 = 0x129" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) goto LAB_0002b570;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;)) (expression_statement "piVar25 = (int *)(puVar31 + -0x1b8);" (assignment_expression "piVar25 = (int *)(puVar31 + -0x1b8)" identifier = (cast_expression "(int *)(puVar31 + -0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1b8)" ( (binary_expression "puVar31 + -0x1b8" identifier + number_literal) )))) ;) (expression_statement "piVar19 = piVar25;" (assignment_expression "piVar19 = piVar25" identifier = identifier) ;) (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(0,piVar25,0,puVar20)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "iVar17 = iVar10 + 1;" (assignment_expression "iVar17 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" { (expression_statement "iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);" (assignment_expression "iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" ( (pointer_expression "**(code **)(iVar4 + -0x7b68)" * (pointer_expression "*(code **)(iVar4 + -0x7b68)" * (cast_expression "(code **)(iVar4 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b68)" ( (binary_expression "iVar4 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" { (expression_statement "uVar5 = 0x12d;" (assignment_expression "uVar5 = 0x12d" identifier = number_literal) ;) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;) })) (expression_statement "uVar18 = uVar2 + iVar17;" (assignment_expression "uVar18 = uVar2 + iVar17" identifier = (binary_expression "uVar2 + iVar17" identifier + identifier)) ;) (if_statement "if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" if (parenthesized_expression "((uVar2 <= uVar18) && (uVar18 < 0x40000000))" ( (binary_expression "(uVar2 <= uVar18) && (uVar18 < 0x40000000)" (parenthesized_expression "(uVar2 <= uVar18)" ( (binary_expression "uVar2 <= uVar18" identifier <= identifier) )) && (parenthesized_expression "(uVar18 < 0x40000000)" ( (binary_expression "uVar18 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" { (if_statement "if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(uVar18 < 2000)" ( (binary_expression "uVar18 < 2000" identifier < number_literal) )) (compound_statement "{\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar18 * 4 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar18 * 4 + 7 & 0xfffffff8)" ( (binary_expression "uVar18 * 4 + 7 & 0xfffffff8" (binary_expression "uVar18 * 4 + 7" (binary_expression "uVar18 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar24 = puVar31 + iVar16 + -0x1c8;" (assignment_expression "puVar24 = puVar31 + iVar16 + -0x1c8" identifier = (binary_expression "puVar31 + iVar16 + -0x1c8" (binary_expression "puVar31 + iVar16" identifier + identifier) + number_literal)) ;) (expression_statement "piVar19 = (int *)(puVar24 + uVar2 * 4);" (assignment_expression "piVar19 = (int *)(puVar24 + uVar2 * 4)" identifier = (cast_expression "(int *)(puVar24 + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + uVar2 * 4)" ( (binary_expression "puVar24 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) ;) (expression_statement "(**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);" (call_expression "(**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(puVar24,puVar23,uVar2,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }" { (labeled_statement "LAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );" statement_identifier : (do_statement "do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );" do (compound_statement "{\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              }" { (expression_statement "uVar5 = 0x147;" (assignment_expression "uVar5 = 0x147" identifier = number_literal) ;) (labeled_statement "LAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);" statement_identifier : (expression_statement "(**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);" (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , identifier , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "(**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);" (call_expression "(**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(piVar19,piVar25,iVar17,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + iVar16 + -0x1d0)" * (cast_expression "(byte **)(puVar31 + iVar16 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + iVar16 + -0x1d0)" ( (binary_expression "puVar31 + iVar16 + -0x1d0" (binary_expression "puVar31 + iVar16" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( identifier , identifier , (binary_expression "piVar19 + iVar10" identifier + identifier) , (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar27 << 0x1d)" ( (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) (expression_statement "iVar16 = (**(code **)(iVar4 + -0x7be8))();" (assignment_expression "iVar16 = (**(code **)(iVar4 + -0x7be8))()" identifier = (call_expression "(**(code **)(iVar4 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7be8))" ( (pointer_expression "**(code **)(iVar4 + -0x7be8)" * (pointer_expression "*(code **)(iVar4 + -0x7be8)" * (cast_expression "(code **)(iVar4 + -0x7be8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7be8)" ( (binary_expression "iVar4 + -0x7be8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar31 + -0x1bc) = iVar16;" (assignment_expression "*(int *)(puVar31 + -0x1bc) = iVar16" (pointer_expression "*(int *)(puVar31 + -0x1bc)" * (cast_expression "(int *)(puVar31 + -0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar19 = (int *)(iVar16 + uVar2 * 4);" (assignment_expression "piVar19 = (int *)(iVar16 + uVar2 * 4)" identifier = (cast_expression "(int *)(iVar16 + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar2 * 4)" ( (binary_expression "iVar16 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) ;) (expression_statement "(*pcVar35)(iVar16,puVar23,uVar2,puVar20);" (call_expression "(*pcVar35)(iVar16,puVar23,uVar2,puVar20)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(iVar16,puVar23,uVar2,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) goto LAB_0002b590;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b590;" goto statement_identifier ;)) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar35)(piVar19,piVar25,iVar17,puVar20);" (call_expression "(*pcVar35)(piVar19,piVar25,iVar17,puVar20)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(piVar19,piVar25,iVar17,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar31 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0x1d0)" * (cast_expression "(byte **)(puVar31 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1d0)" ( (binary_expression "puVar31 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) , identifier , (binary_expression "piVar19 + iVar10" identifier + identifier) , (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar27 << 0x1d)" ( (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))" ( (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" * (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b54)" ( (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar31 + -0x1bc))" ( (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();" (assignment_expression "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar4 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7c3c))" ( (pointer_expression "**(code **)(iVar4 + -0x7c3c)" * (pointer_expression "*(code **)(iVar4 + -0x7c3c)" * (cast_expression "(code **)(iVar4 + -0x7c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7c3c)" ( (binary_expression "iVar4 + -0x7c3c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (expression_statement "*puVar3 = 0xc;" (assignment_expression "*puVar3 = 0xc" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) })) (expression_statement "piVar19 = *(int **)(puVar31 + -0x1b8);" (assignment_expression "piVar19 = *(int **)(puVar31 + -0x1b8)" identifier = (pointer_expression "*(int **)(puVar31 + -0x1b8)" * (cast_expression "(int **)(puVar31 + -0x1b8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1b8)" ( (binary_expression "puVar31 + -0x1b8" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19)" identifier = (call_expression "(**(code **)(iVar4 + -0x7c0c))(piVar19)" (parenthesized_expression "(**(code **)(iVar4 + -0x7c0c))" ( (pointer_expression "**(code **)(iVar4 + -0x7c0c)" * (pointer_expression "*(code **)(iVar4 + -0x7c0c)" * (cast_expression "(code **)(iVar4 + -0x7c0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7c0c)" ( (binary_expression "iVar4 + -0x7c0c" identifier + number_literal) ))))) )) (argument_list "(piVar19)" ( identifier )))) ;) (expression_statement "*(byte **)(puVar31 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0x1d0)" * (cast_expression "(byte **)(puVar31 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1d0)" ( (binary_expression "puVar31 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar31 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar31 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1b4)" ( (binary_expression "puVar31 + -0x1b4" identifier + number_literal) )))) , identifier , (binary_expression "(int)piVar19 + iVar10" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar27 << 0x1d)" ( (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar31 + -0x1a4);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1a4)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1a4)" * (cast_expression "(int *)(puVar31 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1a4)" ( (binary_expression "puVar31 + -0x1a4" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 != *piVar22)" ( (binary_expression "iVar4 != *piVar22" identifier != (pointer_expression "*piVar22" * identifier)) )) (compound_statement "{\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }" { (expression_statement "(**(code **)(iVar10 + -0x7b8c))();" (call_expression "(**(code **)(iVar10 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar10 + -0x7b8c))" ( (pointer_expression "**(code **)(iVar10 + -0x7b8c)" * (pointer_expression "*(code **)(iVar10 + -0x7b8c)" * (cast_expression "(code **)(iVar10 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7b8c)" ( (binary_expression "iVar10 + -0x7b8c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar10 = piVar19[8];" (assignment_expression "iVar10 = piVar19[8]" identifier = (subscript_expression "piVar19[8]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = *piVar19;" (assignment_expression "iVar17 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "uVar2 = (uint)(iVar10 < iVar17);" (assignment_expression "uVar2 = (uint)(iVar10 < iVar17)" identifier = (call_expression "(uint)(iVar10 < iVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 < iVar17)" ( (binary_expression "iVar10 < iVar17" identifier < identifier) )))) ;) (expression_statement "uVar18 = piVar19[7];" (assignment_expression "uVar18 = piVar19[7]" identifier = (subscript_expression "piVar19[7]" identifier [ number_literal ])) ;) (if_statement "if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }" if (parenthesized_expression "((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0))" ( (binary_expression "(uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)" ( (comma_expression "uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0" (assignment_expression "uVar2 = (uint)((int)uVar18 < iVar10)" identifier = (call_expression "(uint)((int)uVar18 < iVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < iVar10)" ( (binary_expression "(int)uVar18 < iVar10" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) , (binary_expression "uVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }" { (expression_statement "iVar9 = iVar17 - iVar10;" (assignment_expression "iVar9 = iVar17 - iVar10" identifier = (binary_expression "iVar17 - iVar10" identifier - identifier)) ;) (expression_statement "uVar7 = uVar18;" (assignment_expression "uVar7 = uVar18" identifier = identifier) ;) (expression_statement "iVar16 = iVar17;" (assignment_expression "iVar16 = iVar17" identifier = identifier) ;) (do_statement "do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));" do (compound_statement "{\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      }" { (expression_statement "iVar14 = iVar10 - uVar7;" (assignment_expression "iVar14 = iVar10 - uVar7" identifier = (binary_expression "iVar10 - uVar7" identifier - identifier)) ;) (expression_statement "uVar2 = iVar9 + uVar7;" (assignment_expression "uVar2 = iVar9 + uVar7" identifier = (binary_expression "iVar9 + uVar7" identifier + identifier)) ;) (if_statement "if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" if (parenthesized_expression "(iVar14 < iVar9)" ( (binary_expression "iVar14 < iVar9" identifier < identifier) )) (compound_statement "{\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }" { (expression_statement "iVar16 = iVar16 - iVar14;" (assignment_expression "iVar16 = iVar16 - iVar14" identifier = (binary_expression "iVar16 - iVar14" identifier - identifier)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar7 * 4)" ( (binary_expression "iVar4 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);" (assignment_expression "puVar6 = (undefined4 *)(iVar4 + iVar16 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + iVar16 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar16 * 4)" ( (binary_expression "iVar4 + iVar16 * 4" identifier + (binary_expression "iVar16 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);" do (compound_statement "{\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          }" { (expression_statement "puVar15 = puVar3 + 1;" (assignment_expression "puVar15 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar6;" (assignment_expression "*puVar3 = *puVar6" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "uVar2 = uVar7;" (assignment_expression "uVar2 = uVar7" identifier = identifier) ;) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15)" ( (binary_expression "(undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15" (cast_expression "(undefined4 *)(iVar4 + (iVar14 + uVar7) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + (iVar14 + uVar7) * 4)" ( (binary_expression "iVar4 + (iVar14 + uVar7) * 4" identifier + (binary_expression "(iVar14 + uVar7) * 4" (parenthesized_expression "(iVar14 + uVar7)" ( (binary_expression "iVar14 + uVar7" identifier + identifier) )) * number_literal)) ))) != identifier) )) ;) }) (else_clause "else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" else (compound_statement "{\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar7 * 4)" ( (binary_expression "iVar4 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);" (assignment_expression "puVar6 = (undefined4 *)(iVar4 + iVar10 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + iVar10 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar10 * 4)" ( (binary_expression "iVar4 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));" do (compound_statement "{\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          }" { (expression_statement "puVar15 = puVar3 + 1;" (assignment_expression "puVar15 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar6;" (assignment_expression "*puVar3 = *puVar6" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != (undefined4 *)(iVar4 + uVar2 * 4))" ( (binary_expression "puVar15 != (undefined4 *)(iVar4 + uVar2 * 4)" identifier != (cast_expression "(undefined4 *)(iVar4 + uVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar2 * 4)" ( (binary_expression "iVar4 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) )) ;) }))) }) while (parenthesized_expression "((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10))" ( (binary_expression "(iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10)" (parenthesized_expression "(iVar10 < iVar16)" ( (binary_expression "iVar10 < iVar16" identifier < identifier) )) && (parenthesized_expression "(iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10)" ( (comma_expression "iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10" (assignment_expression "iVar9 = iVar16 - iVar10" identifier = (binary_expression "iVar16 - iVar10" identifier - identifier)) , (comma_expression "uVar7 = uVar2, (int)uVar2 < iVar10" (assignment_expression "uVar7 = uVar2" identifier = identifier) , (binary_expression "(int)uVar2 < iVar10" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier))) ))) )) ;) })) (expression_statement "piVar19[8] = iVar17;" (assignment_expression "piVar19[8] = iVar17" (subscript_expression "piVar19[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar19[7] = (iVar17 - iVar10) + uVar18;" (assignment_expression "piVar19[7] = (iVar17 - iVar10) + uVar18" (subscript_expression "piVar19[7]" identifier [ number_literal ]) = (binary_expression "(iVar17 - iVar10) + uVar18" (parenthesized_expression "(iVar17 - iVar10)" ( (binary_expression "iVar17 - iVar10" identifier - identifier) )) + identifier)) ;) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "int ext_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,\n              _Bool no_leading_period,int flags)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  byte bVar10;\n  undefined1 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  int iVar17;\n  patternlist *ppVar18;\n  undefined4 *puVar19;\n  int iVar20;\n  uint uVar21;\n  int *string_00;\n  undefined1 *puVar22;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar23;\n  int *unaff_s4;\n  int *piVar24;\n  byte *pbVar25;\n  int *unaff_s5;\n  undefined1 *puVar26;\n  wchar_t *pattern_00;\n  byte *unaff_s6;\n  int *piVar27;\n  byte *pbVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  undefined *puVar31;\n  byte *pbVar32;\n  byte *pbVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  patternlist *local_34;\n  patternlist *list;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar22 = auStack_68;\n  pbVar25 = (byte *)(pattern + 1);\n  list = (patternlist *)0x0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar15 = (byte *)pattern;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(pattern);\n  puVar29 = PTR_DAT_0005b118;\n  iVar12 = pattern[1];\n  if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = (patternlist *)&list;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(opt - 0x3f < 2);\n    puVar22 = auStack_68;\n    unaff_s6 = pbVar25;\n    do {\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    } while (iVar12 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return -1;\n  }\n  pcVar34 = internal_fnwmatch;\n  piVar24 = local_2c;\n  puVar29 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar31 = puVar29 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar29 + 0x3226c);\n  *(byte **)(puVar22 + -0xc) = pbVar25;\n  *(undefined4 **)(puVar22 + -0x558) = puVar3;\n  *(undefined **)(puVar22 + -0x570) = puVar31;\n  *(undefined1 **)(puVar22 + -8) = auStack_68;\n  *(undefined **)(puVar22 + -0x1c) = puVar1;\n  *(code **)(puVar22 + -4) = pcVar34;\n  *(byte **)(puVar22 + -0x10) = unaff_s6;\n  *(int **)(puVar22 + -0x14) = unaff_s5;\n  *(int **)(puVar22 + -0x18) = unaff_s4;\n  *(undefined **)(puVar22 + -0x20) = unaff_s2;\n  *(uint *)(puVar22 + -0x24) = unaff_s1;\n  *(wchar_t **)(puVar22 + -0x28) = pattern;\n  iVar12 = *piVar24;\n  *(undefined4 *)(puVar22 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar22 + 0x10);\n  pbVar25 = (byte *)string;\n  pbVar32 = pbVar15;\n  if (iVar12 != 0) {\n    unaff_s1 = uVar2 & 2;\n    pattern = (wchar_t *)(uVar2 & 0x10);\n    *(uint *)(puVar22 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);\n    *(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;\n    *(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;\n    *(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar24 + 1;\n    unaff_s6 = (byte *)string_end;\n    do {\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    } while (iVar12 != 0);\n  }\n  uVar2 = 0;\n  piVar24 = unaff_s4;\n  if (pbVar32 != (byte *)string) {\n    piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);\n    if (piVar24 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar22 + -0x2c);\n  if (iVar4 == **(int **)(puVar22 + -0x558)) {\n    return uVar2;\n  }\n  pcVar34 = *(code **)(puVar31 + -0x7b8c);\n  pcVar35 = ext_match;\n  (*pcVar34)();\n  pcVar30 = *(code **)(pcVar34 + 0x315c4);\n  *(byte **)(puVar22 + -0x590) = pbVar32;\n  *(undefined **)(puVar22 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar34 + 0x3166c);\n  *(wchar_t **)(puVar22 + -0x5b0) = pattern;\n  *(int *)(puVar22 + -0x594) = iVar12;\n  pbVar28 = pbVar15 + 1;\n  *(uint *)(puVar22 + -0x5c0) = (uint)(byte)puVar22[-0x575];\n  *(int **)(puVar22 + -0x5a0) = piVar24;\n  *(code **)(puVar22 + -0x5d8) = pcVar34 + 0x391d0;\n  *(int *)(puVar22 + -0x588) = iVar4;\n  *(code **)(puVar22 + -0x58c) = pcVar35;\n  *(byte **)(puVar22 + -0x598) = unaff_s6;\n  *(int **)(puVar22 + -0x59c) = unaff_s5;\n  *(wchar_t **)(puVar22 + -0x5a4) = string;\n  *(uint *)(puVar22 + -0x5ac) = unaff_s1;\n  *(wchar_t **)(puVar22 + -0x5c4) = string_end;\n  *(undefined4 *)(puVar22 + -0x5b8) = 0;\n  *(undefined4 *)(puVar22 + -0x5b4) = *puVar3;\n  pbVar32 = pbVar15;\n  pbVar16 = pbVar25;\n  uVar5 = (*pcVar30)(pbVar15);\n  iVar12 = (int)(char)pbVar15[1];\n  iVar4 = *(int *)(puVar22 + -0x5d8);\n  *(undefined4 *)(puVar22 + -0x5cc) = uVar5;\n  puVar6 = puVar22 + -0x5f0;\n  if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    string = *(wchar_t **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;\n    *(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar26 = puVar22 + -0x5f0;\n    unaff_s6 = pbVar28;\n    do {\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    } while (iVar12 != 0);\n  }\nLAB_0002a034:\n  pbVar13 = *(byte **)(puVar22 + -0x5b4);\n  pcVar34 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar13 == (byte *)*puVar3) {\n    return -1;\n  }\nLAB_0002a608:\n  pcVar35 = internal_fnmatch;\n  (*pcVar34)();\n  pcVar30 = pcVar34 + 0x38ae0;\n  puVar8 = *(undefined4 **)(pcVar34 + 0x30f7c);\n  *(undefined1 **)(puVar6 + -8) = puVar22 + -0x5f0;\n  *(wchar_t **)(puVar6 + -0x1c) = string;\n  *(code **)(puVar6 + -0x160) = pcVar30;\n  *(code **)(puVar6 + -4) = pcVar35;\n  *(byte **)(puVar6 + -0xc) = pbVar28;\n  *(byte **)(puVar6 + -0x10) = unaff_s6;\n  *(int **)(puVar6 + -0x14) = unaff_s5;\n  *(byte **)(puVar6 + -0x18) = pbVar25;\n  *(undefined4 **)(puVar6 + -0x20) = puVar3;\n  *(uint *)(puVar6 + -0x24) = unaff_s1;\n  *(byte **)(puVar6 + -0x28) = pbVar15;\n  *(undefined4 **)(puVar6 + -0x144) = puVar8;\n  *(byte **)(puVar6 + -0x154) = pbVar13 + 1;\n  pbVar23 = (byte *)(uint)*pbVar13;\n  *(undefined4 *)(puVar6 + -0x2c) = *puVar8;\n  iVar12 = *(int *)(pcVar34 + 0x30cbc);\n  pbVar28 = pbVar16;\n  pbVar33 = pbVar32;\n  if (pbVar23 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar6 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar15 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar6 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);\n    *(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;\n    *(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;\n    *(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;\n    pbVar25 = pbVar13;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    } while (pbVar23 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar33 != pbVar16) {\n    pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);\n    if (pbVar25 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar6 + -0x2c);\n  if (iVar4 == **(int **)(puVar6 + -0x144)) {\n    return uVar2;\n  }\n  pcVar34 = *(code **)(pcVar30 + -0x7b8c);\n  pcVar35 = rpl_fnmatch;\n  (*pcVar34)();\n  pcVar30 = *(code **)(pcVar34 + 0x302e0);\n  *(uint *)(puVar6 + -0x19c) = unaff_s1;\n  piVar24 = *(int **)(pcVar34 + 0x30338);\n  *(byte **)(puVar6 + -0x180) = pbVar33;\n  *(byte **)(puVar6 + -0x198) = pbVar23;\n  *(code **)(puVar6 + -0x1c8) = pcVar34 + 0x37e9c;\n  *(code **)(puVar6 + -0x17c) = pcVar35;\n  *(int *)(puVar6 + -0x184) = iVar12;\n  *(byte **)(puVar6 + -0x188) = unaff_s6;\n  *(int **)(puVar6 + -0x18c) = unaff_s5;\n  *(byte **)(puVar6 + -400) = pbVar25;\n  *(byte **)(puVar6 + -0x194) = pbVar16;\n  *(byte **)(puVar6 + -0x1a0) = pbVar15;\n  *(int *)(puVar6 + -0x1b4) = iVar4;\n  *(byte **)(puVar6 + -0x1b8) = pbVar32;\n  *(int *)(puVar6 + -0x1a4) = *piVar24;\n  iVar12 = (*pcVar30)();\n  iVar4 = *(int *)(puVar6 + -0x1c8);\n  if (iVar12 != 1) {\n    puVar22 = puVar6 + -0x1ac;\n    pcVar34 = *(code **)(iVar4 + -0x7b28);\n    puVar26 = puVar6 + -0x1b4;\n    *(undefined4 *)(puVar6 + -0x1ac) = 0;\n    *(undefined4 *)(puVar6 + -0x1a8) = 0;\n    iVar12 = (*pcVar34)(0,puVar26,0,puVar22);\n    uVar2 = iVar12 + 1;\n    iVar4 = *(int *)(puVar6 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  string_00 = *(int **)(puVar6 + -0x1b8);\n  iVar12 = (**(code **)(iVar4 + -0x7c0c))(string_00);\n  *(byte **)(puVar6 + -0x1d0) = pbVar28;\n  iVar12 = internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))\n  ;\n  iVar4 = *(int *)(puVar6 + -0x1c8);\nLAB_0002b300:\n  iVar14 = *(int *)(puVar6 + -0x1a4);\n  if (iVar14 != *piVar24) {\n    (**(code **)(iVar4 + -0x7b8c))();\n    iVar12 = string_00[8];\n    iVar4 = *string_00;\n    uVar2 = (uint)(iVar12 < iVar4);\n    uVar21 = string_00[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }\n    string_00[8] = iVar4;\n    string_00[7] = (iVar4 - iVar12) + uVar21;\n    return uVar2;\n  }\n  return iVar12;\n}\n\n" (function_definition "int ext_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,\n              _Bool no_leading_period,int flags)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  byte bVar10;\n  undefined1 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  int iVar17;\n  patternlist *ppVar18;\n  undefined4 *puVar19;\n  int iVar20;\n  uint uVar21;\n  int *string_00;\n  undefined1 *puVar22;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar23;\n  int *unaff_s4;\n  int *piVar24;\n  byte *pbVar25;\n  int *unaff_s5;\n  undefined1 *puVar26;\n  wchar_t *pattern_00;\n  byte *unaff_s6;\n  int *piVar27;\n  byte *pbVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  undefined *puVar31;\n  byte *pbVar32;\n  byte *pbVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  patternlist *local_34;\n  patternlist *list;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar22 = auStack_68;\n  pbVar25 = (byte *)(pattern + 1);\n  list = (patternlist *)0x0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar15 = (byte *)pattern;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(pattern);\n  puVar29 = PTR_DAT_0005b118;\n  iVar12 = pattern[1];\n  if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = (patternlist *)&list;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(opt - 0x3f < 2);\n    puVar22 = auStack_68;\n    unaff_s6 = pbVar25;\n    do {\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    } while (iVar12 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return -1;\n  }\n  pcVar34 = internal_fnwmatch;\n  piVar24 = local_2c;\n  puVar29 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar31 = puVar29 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar29 + 0x3226c);\n  *(byte **)(puVar22 + -0xc) = pbVar25;\n  *(undefined4 **)(puVar22 + -0x558) = puVar3;\n  *(undefined **)(puVar22 + -0x570) = puVar31;\n  *(undefined1 **)(puVar22 + -8) = auStack_68;\n  *(undefined **)(puVar22 + -0x1c) = puVar1;\n  *(code **)(puVar22 + -4) = pcVar34;\n  *(byte **)(puVar22 + -0x10) = unaff_s6;\n  *(int **)(puVar22 + -0x14) = unaff_s5;\n  *(int **)(puVar22 + -0x18) = unaff_s4;\n  *(undefined **)(puVar22 + -0x20) = unaff_s2;\n  *(uint *)(puVar22 + -0x24) = unaff_s1;\n  *(wchar_t **)(puVar22 + -0x28) = pattern;\n  iVar12 = *piVar24;\n  *(undefined4 *)(puVar22 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar22 + 0x10);\n  pbVar25 = (byte *)string;\n  pbVar32 = pbVar15;\n  if (iVar12 != 0) {\n    unaff_s1 = uVar2 & 2;\n    pattern = (wchar_t *)(uVar2 & 0x10);\n    *(uint *)(puVar22 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);\n    *(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;\n    *(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;\n    *(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar24 + 1;\n    unaff_s6 = (byte *)string_end;\n    do {\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    } while (iVar12 != 0);\n  }\n  uVar2 = 0;\n  piVar24 = unaff_s4;\n  if (pbVar32 != (byte *)string) {\n    piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);\n    if (piVar24 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar22 + -0x2c);\n  if (iVar4 == **(int **)(puVar22 + -0x558)) {\n    return uVar2;\n  }\n  pcVar34 = *(code **)(puVar31 + -0x7b8c);\n  pcVar35 = ext_match;\n  (*pcVar34)();\n  pcVar30 = *(code **)(pcVar34 + 0x315c4);\n  *(byte **)(puVar22 + -0x590) = pbVar32;\n  *(undefined **)(puVar22 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar34 + 0x3166c);\n  *(wchar_t **)(puVar22 + -0x5b0) = pattern;\n  *(int *)(puVar22 + -0x594) = iVar12;\n  pbVar28 = pbVar15 + 1;\n  *(uint *)(puVar22 + -0x5c0) = (uint)(byte)puVar22[-0x575];\n  *(int **)(puVar22 + -0x5a0) = piVar24;\n  *(code **)(puVar22 + -0x5d8) = pcVar34 + 0x391d0;\n  *(int *)(puVar22 + -0x588) = iVar4;\n  *(code **)(puVar22 + -0x58c) = pcVar35;\n  *(byte **)(puVar22 + -0x598) = unaff_s6;\n  *(int **)(puVar22 + -0x59c) = unaff_s5;\n  *(wchar_t **)(puVar22 + -0x5a4) = string;\n  *(uint *)(puVar22 + -0x5ac) = unaff_s1;\n  *(wchar_t **)(puVar22 + -0x5c4) = string_end;\n  *(undefined4 *)(puVar22 + -0x5b8) = 0;\n  *(undefined4 *)(puVar22 + -0x5b4) = *puVar3;\n  pbVar32 = pbVar15;\n  pbVar16 = pbVar25;\n  uVar5 = (*pcVar30)(pbVar15);\n  iVar12 = (int)(char)pbVar15[1];\n  iVar4 = *(int *)(puVar22 + -0x5d8);\n  *(undefined4 *)(puVar22 + -0x5cc) = uVar5;\n  puVar6 = puVar22 + -0x5f0;\n  if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    string = *(wchar_t **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;\n    *(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar26 = puVar22 + -0x5f0;\n    unaff_s6 = pbVar28;\n    do {\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    } while (iVar12 != 0);\n  }\nLAB_0002a034:\n  pbVar13 = *(byte **)(puVar22 + -0x5b4);\n  pcVar34 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar13 == (byte *)*puVar3) {\n    return -1;\n  }\nLAB_0002a608:\n  pcVar35 = internal_fnmatch;\n  (*pcVar34)();\n  pcVar30 = pcVar34 + 0x38ae0;\n  puVar8 = *(undefined4 **)(pcVar34 + 0x30f7c);\n  *(undefined1 **)(puVar6 + -8) = puVar22 + -0x5f0;\n  *(wchar_t **)(puVar6 + -0x1c) = string;\n  *(code **)(puVar6 + -0x160) = pcVar30;\n  *(code **)(puVar6 + -4) = pcVar35;\n  *(byte **)(puVar6 + -0xc) = pbVar28;\n  *(byte **)(puVar6 + -0x10) = unaff_s6;\n  *(int **)(puVar6 + -0x14) = unaff_s5;\n  *(byte **)(puVar6 + -0x18) = pbVar25;\n  *(undefined4 **)(puVar6 + -0x20) = puVar3;\n  *(uint *)(puVar6 + -0x24) = unaff_s1;\n  *(byte **)(puVar6 + -0x28) = pbVar15;\n  *(undefined4 **)(puVar6 + -0x144) = puVar8;\n  *(byte **)(puVar6 + -0x154) = pbVar13 + 1;\n  pbVar23 = (byte *)(uint)*pbVar13;\n  *(undefined4 *)(puVar6 + -0x2c) = *puVar8;\n  iVar12 = *(int *)(pcVar34 + 0x30cbc);\n  pbVar28 = pbVar16;\n  pbVar33 = pbVar32;\n  if (pbVar23 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar6 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar15 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar6 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);\n    *(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;\n    *(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;\n    *(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;\n    pbVar25 = pbVar13;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    } while (pbVar23 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar33 != pbVar16) {\n    pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);\n    if (pbVar25 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar6 + -0x2c);\n  if (iVar4 == **(int **)(puVar6 + -0x144)) {\n    return uVar2;\n  }\n  pcVar34 = *(code **)(pcVar30 + -0x7b8c);\n  pcVar35 = rpl_fnmatch;\n  (*pcVar34)();\n  pcVar30 = *(code **)(pcVar34 + 0x302e0);\n  *(uint *)(puVar6 + -0x19c) = unaff_s1;\n  piVar24 = *(int **)(pcVar34 + 0x30338);\n  *(byte **)(puVar6 + -0x180) = pbVar33;\n  *(byte **)(puVar6 + -0x198) = pbVar23;\n  *(code **)(puVar6 + -0x1c8) = pcVar34 + 0x37e9c;\n  *(code **)(puVar6 + -0x17c) = pcVar35;\n  *(int *)(puVar6 + -0x184) = iVar12;\n  *(byte **)(puVar6 + -0x188) = unaff_s6;\n  *(int **)(puVar6 + -0x18c) = unaff_s5;\n  *(byte **)(puVar6 + -400) = pbVar25;\n  *(byte **)(puVar6 + -0x194) = pbVar16;\n  *(byte **)(puVar6 + -0x1a0) = pbVar15;\n  *(int *)(puVar6 + -0x1b4) = iVar4;\n  *(byte **)(puVar6 + -0x1b8) = pbVar32;\n  *(int *)(puVar6 + -0x1a4) = *piVar24;\n  iVar12 = (*pcVar30)();\n  iVar4 = *(int *)(puVar6 + -0x1c8);\n  if (iVar12 != 1) {\n    puVar22 = puVar6 + -0x1ac;\n    pcVar34 = *(code **)(iVar4 + -0x7b28);\n    puVar26 = puVar6 + -0x1b4;\n    *(undefined4 *)(puVar6 + -0x1ac) = 0;\n    *(undefined4 *)(puVar6 + -0x1a8) = 0;\n    iVar12 = (*pcVar34)(0,puVar26,0,puVar22);\n    uVar2 = iVar12 + 1;\n    iVar4 = *(int *)(puVar6 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  string_00 = *(int **)(puVar6 + -0x1b8);\n  iVar12 = (**(code **)(iVar4 + -0x7c0c))(string_00);\n  *(byte **)(puVar6 + -0x1d0) = pbVar28;\n  iVar12 = internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))\n  ;\n  iVar4 = *(int *)(puVar6 + -0x1c8);\nLAB_0002b300:\n  iVar14 = *(int *)(puVar6 + -0x1a4);\n  if (iVar14 != *piVar24) {\n    (**(code **)(iVar4 + -0x7b8c))();\n    iVar12 = string_00[8];\n    iVar4 = *string_00;\n    uVar2 = (uint)(iVar12 < iVar4);\n    uVar21 = string_00[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }\n    string_00[8] = iVar4;\n    string_00[7] = (iVar4 - iVar12) + uVar21;\n    return uVar2;\n  }\n  return iVar12;\n}" primitive_type (function_declarator "ext_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,\n              _Bool no_leading_period,int flags)" identifier (parameter_list "(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,\n              _Bool no_leading_period,int flags)" ( (parameter_declaration "wint_t opt" type_identifier identifier) , (parameter_declaration "wchar_t *pattern" type_identifier (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "wchar_t *string" type_identifier (pointer_declarator "*string" * identifier)) , (parameter_declaration "wchar_t *string_end" type_identifier (pointer_declarator "*string_end" * identifier)) , (parameter_declaration "_Bool no_leading_period" type_identifier identifier) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined1 *puVar6;\n  byte bVar10;\n  undefined1 *puVar7;\n  undefined4 *puVar8;\n  uint uVar9;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  int iVar14;\n  byte *pbVar15;\n  byte *pbVar16;\n  int iVar17;\n  patternlist *ppVar18;\n  undefined4 *puVar19;\n  int iVar20;\n  uint uVar21;\n  int *string_00;\n  undefined1 *puVar22;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar23;\n  int *unaff_s4;\n  int *piVar24;\n  byte *pbVar25;\n  int *unaff_s5;\n  undefined1 *puVar26;\n  wchar_t *pattern_00;\n  byte *unaff_s6;\n  int *piVar27;\n  byte *pbVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  undefined *puVar31;\n  byte *pbVar32;\n  byte *pbVar33;\n  code *pcVar34;\n  code *pcVar35;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  patternlist *local_34;\n  patternlist *list;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar22 = auStack_68;\n  pbVar25 = (byte *)(pattern + 1);\n  list = (patternlist *)0x0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar15 = (byte *)pattern;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(pattern);\n  puVar29 = PTR_DAT_0005b118;\n  iVar12 = pattern[1];\n  if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = (patternlist *)&list;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(opt - 0x3f < 2);\n    puVar22 = auStack_68;\n    unaff_s6 = pbVar25;\n    do {\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    } while (iVar12 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return -1;\n  }\n  pcVar34 = internal_fnwmatch;\n  piVar24 = local_2c;\n  puVar29 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar31 = puVar29 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar29 + 0x3226c);\n  *(byte **)(puVar22 + -0xc) = pbVar25;\n  *(undefined4 **)(puVar22 + -0x558) = puVar3;\n  *(undefined **)(puVar22 + -0x570) = puVar31;\n  *(undefined1 **)(puVar22 + -8) = auStack_68;\n  *(undefined **)(puVar22 + -0x1c) = puVar1;\n  *(code **)(puVar22 + -4) = pcVar34;\n  *(byte **)(puVar22 + -0x10) = unaff_s6;\n  *(int **)(puVar22 + -0x14) = unaff_s5;\n  *(int **)(puVar22 + -0x18) = unaff_s4;\n  *(undefined **)(puVar22 + -0x20) = unaff_s2;\n  *(uint *)(puVar22 + -0x24) = unaff_s1;\n  *(wchar_t **)(puVar22 + -0x28) = pattern;\n  iVar12 = *piVar24;\n  *(undefined4 *)(puVar22 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar22 + 0x10);\n  pbVar25 = (byte *)string;\n  pbVar32 = pbVar15;\n  if (iVar12 != 0) {\n    unaff_s1 = uVar2 & 2;\n    pattern = (wchar_t *)(uVar2 & 0x10);\n    *(uint *)(puVar22 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);\n    *(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;\n    *(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;\n    *(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar24 + 1;\n    unaff_s6 = (byte *)string_end;\n    do {\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    } while (iVar12 != 0);\n  }\n  uVar2 = 0;\n  piVar24 = unaff_s4;\n  if (pbVar32 != (byte *)string) {\n    piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);\n    if (piVar24 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar22 + -0x2c);\n  if (iVar4 == **(int **)(puVar22 + -0x558)) {\n    return uVar2;\n  }\n  pcVar34 = *(code **)(puVar31 + -0x7b8c);\n  pcVar35 = ext_match;\n  (*pcVar34)();\n  pcVar30 = *(code **)(pcVar34 + 0x315c4);\n  *(byte **)(puVar22 + -0x590) = pbVar32;\n  *(undefined **)(puVar22 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar34 + 0x3166c);\n  *(wchar_t **)(puVar22 + -0x5b0) = pattern;\n  *(int *)(puVar22 + -0x594) = iVar12;\n  pbVar28 = pbVar15 + 1;\n  *(uint *)(puVar22 + -0x5c0) = (uint)(byte)puVar22[-0x575];\n  *(int **)(puVar22 + -0x5a0) = piVar24;\n  *(code **)(puVar22 + -0x5d8) = pcVar34 + 0x391d0;\n  *(int *)(puVar22 + -0x588) = iVar4;\n  *(code **)(puVar22 + -0x58c) = pcVar35;\n  *(byte **)(puVar22 + -0x598) = unaff_s6;\n  *(int **)(puVar22 + -0x59c) = unaff_s5;\n  *(wchar_t **)(puVar22 + -0x5a4) = string;\n  *(uint *)(puVar22 + -0x5ac) = unaff_s1;\n  *(wchar_t **)(puVar22 + -0x5c4) = string_end;\n  *(undefined4 *)(puVar22 + -0x5b8) = 0;\n  *(undefined4 *)(puVar22 + -0x5b4) = *puVar3;\n  pbVar32 = pbVar15;\n  pbVar16 = pbVar25;\n  uVar5 = (*pcVar30)(pbVar15);\n  iVar12 = (int)(char)pbVar15[1];\n  iVar4 = *(int *)(puVar22 + -0x5d8);\n  *(undefined4 *)(puVar22 + -0x5cc) = uVar5;\n  puVar6 = puVar22 + -0x5f0;\n  if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    string = *(wchar_t **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;\n    *(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar26 = puVar22 + -0x5f0;\n    unaff_s6 = pbVar28;\n    do {\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    } while (iVar12 != 0);\n  }\nLAB_0002a034:\n  pbVar13 = *(byte **)(puVar22 + -0x5b4);\n  pcVar34 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar13 == (byte *)*puVar3) {\n    return -1;\n  }\nLAB_0002a608:\n  pcVar35 = internal_fnmatch;\n  (*pcVar34)();\n  pcVar30 = pcVar34 + 0x38ae0;\n  puVar8 = *(undefined4 **)(pcVar34 + 0x30f7c);\n  *(undefined1 **)(puVar6 + -8) = puVar22 + -0x5f0;\n  *(wchar_t **)(puVar6 + -0x1c) = string;\n  *(code **)(puVar6 + -0x160) = pcVar30;\n  *(code **)(puVar6 + -4) = pcVar35;\n  *(byte **)(puVar6 + -0xc) = pbVar28;\n  *(byte **)(puVar6 + -0x10) = unaff_s6;\n  *(int **)(puVar6 + -0x14) = unaff_s5;\n  *(byte **)(puVar6 + -0x18) = pbVar25;\n  *(undefined4 **)(puVar6 + -0x20) = puVar3;\n  *(uint *)(puVar6 + -0x24) = unaff_s1;\n  *(byte **)(puVar6 + -0x28) = pbVar15;\n  *(undefined4 **)(puVar6 + -0x144) = puVar8;\n  *(byte **)(puVar6 + -0x154) = pbVar13 + 1;\n  pbVar23 = (byte *)(uint)*pbVar13;\n  *(undefined4 *)(puVar6 + -0x2c) = *puVar8;\n  iVar12 = *(int *)(pcVar34 + 0x30cbc);\n  pbVar28 = pbVar16;\n  pbVar33 = pbVar32;\n  if (pbVar23 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar6 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar15 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar6 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);\n    *(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;\n    *(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;\n    *(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;\n    pbVar25 = pbVar13;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    } while (pbVar23 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar33 != pbVar16) {\n    pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);\n    if (pbVar25 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar6 + -0x2c);\n  if (iVar4 == **(int **)(puVar6 + -0x144)) {\n    return uVar2;\n  }\n  pcVar34 = *(code **)(pcVar30 + -0x7b8c);\n  pcVar35 = rpl_fnmatch;\n  (*pcVar34)();\n  pcVar30 = *(code **)(pcVar34 + 0x302e0);\n  *(uint *)(puVar6 + -0x19c) = unaff_s1;\n  piVar24 = *(int **)(pcVar34 + 0x30338);\n  *(byte **)(puVar6 + -0x180) = pbVar33;\n  *(byte **)(puVar6 + -0x198) = pbVar23;\n  *(code **)(puVar6 + -0x1c8) = pcVar34 + 0x37e9c;\n  *(code **)(puVar6 + -0x17c) = pcVar35;\n  *(int *)(puVar6 + -0x184) = iVar12;\n  *(byte **)(puVar6 + -0x188) = unaff_s6;\n  *(int **)(puVar6 + -0x18c) = unaff_s5;\n  *(byte **)(puVar6 + -400) = pbVar25;\n  *(byte **)(puVar6 + -0x194) = pbVar16;\n  *(byte **)(puVar6 + -0x1a0) = pbVar15;\n  *(int *)(puVar6 + -0x1b4) = iVar4;\n  *(byte **)(puVar6 + -0x1b8) = pbVar32;\n  *(int *)(puVar6 + -0x1a4) = *piVar24;\n  iVar12 = (*pcVar30)();\n  iVar4 = *(int *)(puVar6 + -0x1c8);\n  if (iVar12 != 1) {\n    puVar22 = puVar6 + -0x1ac;\n    pcVar34 = *(code **)(iVar4 + -0x7b28);\n    puVar26 = puVar6 + -0x1b4;\n    *(undefined4 *)(puVar6 + -0x1ac) = 0;\n    *(undefined4 *)(puVar6 + -0x1a8) = 0;\n    iVar12 = (*pcVar34)(0,puVar26,0,puVar22);\n    uVar2 = iVar12 + 1;\n    iVar4 = *(int *)(puVar6 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  string_00 = *(int **)(puVar6 + -0x1b8);\n  iVar12 = (**(code **)(iVar4 + -0x7c0c))(string_00);\n  *(byte **)(puVar6 + -0x1d0) = pbVar28;\n  iVar12 = internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))\n  ;\n  iVar4 = *(int *)(puVar6 + -0x1c8);\nLAB_0002b300:\n  iVar14 = *(int *)(puVar6 + -0x1a4);\n  if (iVar14 != *piVar24) {\n    (**(code **)(iVar4 + -0x7b8c))();\n    iVar12 = string_00[8];\n    iVar4 = *string_00;\n    uVar2 = (uint)(iVar12 < iVar4);\n    uVar21 = string_00[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }\n    string_00[8] = iVar4;\n    string_00[7] = (iVar4 - iVar12) + uVar21;\n    return uVar2;\n  }\n  return iVar12;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "patternlist *ppVar18;" type_identifier (pointer_declarator "*ppVar18" * identifier) ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int *string_00;" primitive_type (pointer_declarator "*string_00" * identifier) ;) (declaration "undefined1 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "undefined *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "byte *pbVar25;" type_identifier (pointer_declarator "*pbVar25" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "wchar_t *pattern_00;" type_identifier (pointer_declarator "*pattern_00" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "code *pcVar30;" type_identifier (pointer_declarator "*pcVar30" * identifier) ;) (declaration "undefined *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "byte *pbVar32;" type_identifier (pointer_declarator "*pbVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "patternlist *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "patternlist *list;" type_identifier (pointer_declarator "*list" * identifier) ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0005b58c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0005b58c" identifier = identifier) ;) (expression_statement "puVar22 = auStack_68;" (assignment_expression "puVar22 = auStack_68" identifier = identifier) ;) (expression_statement "pbVar25 = (byte *)(pattern + 1);" (assignment_expression "pbVar25 = (byte *)(pattern + 1)" identifier = (cast_expression "(byte *)(pattern + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pattern + 1)" ( (binary_expression "pattern + 1" identifier + number_literal) )))) ;) (expression_statement "list = (patternlist *)0x0;" (assignment_expression "list = (patternlist *)0x0" identifier = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_0005b58c" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_0005b58c" * (cast_expression "(int **)PTR___stack_chk_guard_0005b58c" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbVar15 = (byte *)pattern;" (assignment_expression "pbVar15 = (byte *)pattern" identifier = (cast_expression "(byte *)pattern" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_44 = (*(code *)PTR_wcslen_0005b4a8)(pattern);" (assignment_expression "local_44 = (*(code *)PTR_wcslen_0005b4a8)(pattern)" identifier = (call_expression "(*(code *)PTR_wcslen_0005b4a8)(pattern)" (parenthesized_expression "(*(code *)PTR_wcslen_0005b4a8)" ( (pointer_expression "*(code *)PTR_wcslen_0005b4a8" * (cast_expression "(code *)PTR_wcslen_0005b4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pattern)" ( identifier )))) ;) (expression_statement "puVar29 = PTR_DAT_0005b118;" (assignment_expression "puVar29 = PTR_DAT_0005b118" identifier = identifier) ;) (expression_statement "iVar12 = pattern[1];" (assignment_expression "iVar12 = pattern[1]" identifier = (subscript_expression "pattern[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = (patternlist *)&list;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(opt - 0x3f < 2);\n    puVar22 = auStack_68;\n    unaff_s6 = pbVar25;\n    do {\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    } while (iVar12 != 0);\n  }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    local_34 = (patternlist *)&list;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(opt - 0x3f < 2);\n    puVar22 = auStack_68;\n    unaff_s6 = pbVar25;\n    do {\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    } while (iVar12 != 0);\n  }" { (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (patternlist *)&list;" (assignment_expression "local_34 = (patternlist *)&list" identifier = (cast_expression "(patternlist *)&list" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&list" & identifier))) ;) (expression_statement "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc" identifier = (binary_expression "PTR_DAT_0005b2cc + -0x78dc" identifier + number_literal)) ;) (expression_statement "unaff_s1 = (uint)(opt - 0x3f < 2);" (assignment_expression "unaff_s1 = (uint)(opt - 0x3f < 2)" identifier = (call_expression "(uint)(opt - 0x3f < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(opt - 0x3f < 2)" ( (binary_expression "opt - 0x3f < 2" (binary_expression "opt - 0x3f" identifier - number_literal) < number_literal) )))) ;) (expression_statement "puVar22 = auStack_68;" (assignment_expression "puVar22 = auStack_68" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar25;" (assignment_expression "unaff_s6 = pbVar25" identifier = identifier) ;) (do_statement "do {\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    } while (iVar12 != 0);" do (compound_statement "{\n      while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }\n      iVar12 = *(int *)(pbVar25 + 4);\n      pbVar32 = pbVar25 + 4;\n      if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }\n      if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }\n      pbVar15 = (byte *)0x5d;\n      while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }\n      iVar12 = *(int *)(pbVar32 + 4);\njoined_r0x00028e80:\n    }" { (while_statement "while (unaff_s4 = (int *)puVar29, iVar12 != 0x5b) {\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }" while (parenthesized_expression "(unaff_s4 = (int *)puVar29, iVar12 != 0x5b)" ( (comma_expression "unaff_s4 = (int *)puVar29, iVar12 != 0x5b" (assignment_expression "unaff_s4 = (int *)puVar29" identifier = (cast_expression "(int *)puVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "iVar12 != 0x5b" identifier != number_literal)) )) (compound_statement "{\n        pbVar15 = &DAT_c0000601;\n        uVar2 = iVar12 - 0x21;\n        string = (wchar_t *)(uint)(uVar2 < 0x20);\n        if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);\n        pbVar25 = pbVar25 + 4;\n        if (iVar12 == 0) goto LAB_00028d20;\n      }" { (expression_statement "pbVar15 = &DAT_c0000601;" (assignment_expression "pbVar15 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar2 = iVar12 - 0x21;" (assignment_expression "uVar2 = iVar12 - 0x21" identifier = (binary_expression "iVar12 - 0x21" identifier - number_literal)) ;) (expression_statement "string = (wchar_t *)(uint)(uVar2 < 0x20);" (assignment_expression "string = (wchar_t *)(uint)(uVar2 < 0x20)" identifier = (cast_expression "(wchar_t *)(uint)(uVar2 < 0x20)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < 0x20)" ( (binary_expression "uVar2 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if ((byte *)string != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }" if (parenthesized_expression "((byte *)string != (byte *)0x0)" ( (binary_expression "(byte *)string != (byte *)0x0" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }\n          if (iVar12 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }\n          goto LAB_00028d20;\n        }" { (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar12 = *(int *)(pbVar25 + 4);\n            if (iVar12 != 0x28) goto LAB_00028d14;\n            string = (wchar_t *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar25 = pbVar25 + 4;\n            uVar2 = 7;\n          }" { (expression_statement "iVar12 = *(int *)(pbVar25 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar25 + 4)" identifier = (pointer_expression "*(int *)(pbVar25 + 4)" * (cast_expression "(int *)(pbVar25 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + 4)" ( (binary_expression "pbVar25 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 != 0x28) goto LAB_00028d14;" if (parenthesized_expression "(iVar12 != 0x28)" ( (binary_expression "iVar12 != 0x28" identifier != number_literal) )) (goto_statement "goto LAB_00028d14;" goto statement_identifier ;)) (expression_statement "string = (wchar_t *)0x1;" (assignment_expression "string = (wchar_t *)0x1" identifier = (cast_expression "(wchar_t *)0x1" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar25 = pbVar25 + 4;" (assignment_expression "pbVar25 = pbVar25 + 4" identifier = (binary_expression "pbVar25 + 4" identifier + number_literal)) ;) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar12 != 0x29) goto LAB_00028e9c;" if (parenthesized_expression "(iVar12 != 0x29)" ( (binary_expression "iVar12 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_00028e9c;" goto statement_identifier ;)) (if_statement "if (unaff_s5 != (int *)0x0) {\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }" if (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar12 = *(int *)(pbVar25 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar25 = pbVar25 + 4;\n            goto joined_r0x00028e80;\n          }" { (expression_statement "iVar12 = *(int *)(pbVar25 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar25 + 4)" identifier = (pointer_expression "*(int *)(pbVar25 + 4)" * (cast_expression "(int *)(pbVar25 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + 4)" ( (binary_expression "pbVar25 + 4" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" identifier = (cast_expression "(int *)((int)unaff_s5 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + -1)" ( (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (labeled_statement "LAB_00028d14:\n            pbVar25 = pbVar25 + 4;" statement_identifier : (expression_statement "pbVar25 = pbVar25 + 4;" (assignment_expression "pbVar25 = pbVar25 + 4" identifier = (binary_expression "pbVar25 + 4" identifier + number_literal)) ;)) (goto_statement "goto joined_r0x00028e80;" goto statement_identifier ;) })) (if_statement "if (1 < opt - 0x3f) {\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }" if (parenthesized_expression "(1 < opt - 0x3f)" ( (binary_expression "1 < opt - 0x3f" number_literal < (binary_expression "opt - 0x3f" identifier - number_literal)) )) (compound_statement "{\n            local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }" { (expression_statement "local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "local_44 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1" identifier = (binary_expression "((int)pbVar25 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar25 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar25 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar25 - (int)unaff_s6" (cast_expression "(int)pbVar25" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal)) ;) })) (if_statement "if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }" if (parenthesized_expression "((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c))" ( (binary_expression "(local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)" (parenthesized_expression "(local_44 < 0x40000000)" ( (binary_expression "local_44 < 0x40000000" identifier < number_literal) )) && (parenthesized_expression "(local_44 * 4 < 0x1f3c)" ( (binary_expression "local_44 * 4 < 0x1f3c" (binary_expression "local_44 * 4" identifier * number_literal) < number_literal) ))) )) (compound_statement "{\n            iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            ((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;\n            local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);\n            if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n            if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }\n                    /* WARNING: Could not emulate address calculation at 0x00028f94 */\n                    /* WARNING: Treating indirect jump as call */\n            iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();\n            return iVar12;\n          }" { (expression_statement "iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar12 = -(local_44 * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-(local_44 * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "(local_44 * 4 + 0xb & 0xfffffff8)" ( (binary_expression "local_44 * 4 + 0xb & 0xfffffff8" (binary_expression "local_44 * 4 + 0xb" (binary_expression "local_44 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2);" (assignment_expression "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2)" identifier = (cast_expression "(undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" ( (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" * (cast_expression "(code *)PTR_wmempcpy_0005b4a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar12 + 0x1c,unaff_s6,(int)pbVar25 - (int)unaff_s6 >> 2)" ( (binary_expression "puVar22 + iVar12 + 0x1c" (binary_expression "puVar22 + iVar12" identifier + identifier) + number_literal) , identifier , (binary_expression "(int)pbVar25 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar25 - (int)unaff_s6" (cast_expression "(int)pbVar25" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0;" (assignment_expression "((patternlist *)(puVar22 + iVar12 + 0x18))->next = (patternlist *)0x0" (field_expression "((patternlist *)(puVar22 + iVar12 + 0x18))->next" (parenthesized_expression "((patternlist *)(puVar22 + iVar12 + 0x18))" ( (cast_expression "(patternlist *)(puVar22 + iVar12 + 0x18)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + iVar12 + 0x18)" ( (binary_expression "puVar22 + iVar12 + 0x18" (binary_expression "puVar22 + iVar12" identifier + identifier) + number_literal) ))) )) -> field_identifier) = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18);" (assignment_expression "local_34->next = (patternlist *)(puVar22 + iVar12 + 0x18)" (field_expression "local_34->next" identifier -> field_identifier) = (cast_expression "(patternlist *)(puVar22 + iVar12 + 0x18)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + iVar12 + 0x18)" ( (binary_expression "puVar22 + iVar12 + 0x18" (binary_expression "puVar22 + iVar12" identifier + identifier) + number_literal) )))) ;) (if_statement "if (list == (patternlist *)0x0) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }" if (parenthesized_expression "(list == (patternlist *)0x0)" ( (binary_expression "list == (patternlist *)0x0" identifier == (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }" { (expression_statement "iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                  PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x78bc" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return iVar12;" return identifier ;) })) (if_statement "if (*(int *)(pbVar25 + -4) != 0x29) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }" if (parenthesized_expression "(*(int *)(pbVar25 + -4) != 0x29)" ( (binary_expression "*(int *)(pbVar25 + -4) != 0x29" (pointer_expression "*(int *)(pbVar25 + -4)" * (cast_expression "(int *)(pbVar25 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + -4)" ( (binary_expression "pbVar25 + -4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }" { (expression_statement "iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                  PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x78ac" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return iVar12;" return identifier ;) })) (if_statement "if (0x1f < opt - 0x21) {\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }" if (parenthesized_expression "(0x1f < opt - 0x21)" ( (binary_expression "0x1f < opt - 0x21" number_literal < (binary_expression "opt - 0x21" identifier - number_literal)) )) (compound_statement "{\n              iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);\n              return iVar12;\n            }" { (expression_statement "iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "iVar12 = (*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                 (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                  PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x7898" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return iVar12;" return identifier ;) })) comment comment (expression_statement "iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))();" (assignment_expression "iVar12 = (*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850))" ( (binary_expression "&_gp + *(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)" * (cast_expression "(int *)(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850)" ( (binary_expression "PTR_DAT_0005b2cc + (opt - 0x21) * 4 + -0x7850" (binary_expression "PTR_DAT_0005b2cc + (opt - 0x21) * 4" identifier + (binary_expression "(opt - 0x21) * 4" (parenthesized_expression "(opt - 0x21)" ( (binary_expression "opt - 0x21" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar12;" return identifier ;) })) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;) })) (if_statement "if ((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" if (parenthesized_expression "((iVar12 == 0x7c) && (unaff_s5 == (int *)0x0))" ( (binary_expression "(iVar12 == 0x7c) && (unaff_s5 == (int *)0x0)" (parenthesized_expression "(iVar12 == 0x7c)" ( (binary_expression "iVar12 == 0x7c" identifier == number_literal) )) && (parenthesized_expression "(unaff_s5 == (int *)0x0)" ( (binary_expression "unaff_s5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar15 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" { (expression_statement "uVar2 = local_44;" (assignment_expression "uVar2 = local_44" identifier = identifier) ;) (if_statement "if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;\n          }" { (expression_statement "uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "uVar2 = ((int)pbVar25 - (int)unaff_s6 >> 2) + 1" identifier = (binary_expression "((int)pbVar25 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar25 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar25 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar25 - (int)unaff_s6" (cast_expression "(int)pbVar25" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal)) ;) })) (expression_statement "pbVar15 = (byte *)0x40000000;" (assignment_expression "pbVar15 = (byte *)0x40000000" identifier = (cast_expression "(byte *)0x40000000" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }" if (parenthesized_expression "((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c))" ( (binary_expression "(uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)" (parenthesized_expression "(uVar2 < 0x40000000)" ( (binary_expression "uVar2 < 0x40000000" identifier < number_literal) )) && (parenthesized_expression "(uVar2 * 4 < 0x1f3c)" ( (binary_expression "uVar2 * 4 < 0x1f3c" (binary_expression "uVar2 * 4" identifier * number_literal) < number_literal) ))) )) (compound_statement "{\n            string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar32 = pbVar25 + 4;\n            ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar12 = *(int *)(pbVar25 + 4);\n            ppVar18->next = (patternlist *)0x0;\n            local_34->next = ppVar18;\n            pbVar15 = unaff_s6;\n            pbVar25 = pbVar32;\n            local_34 = ppVar18;\n            puVar22 = puVar22 + iVar4;\n            unaff_s6 = pbVar32;\n            goto joined_r0x00028e80;\n          }" { (expression_statement "string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2);" (assignment_expression "string = (wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2)" identifier = (cast_expression "(wchar_t *)((int)pbVar25 - (int)unaff_s6 >> 2)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar25 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar25 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar25 - (int)unaff_s6" (cast_expression "(int)pbVar25" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) ;) (expression_statement "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-(uVar2 * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "(uVar2 * 4 + 0xb & 0xfffffff8)" ( (binary_expression "uVar2 * 4 + 0xb & 0xfffffff8" (binary_expression "uVar2 * 4 + 0xb" (binary_expression "uVar2 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "pbVar32 = pbVar25 + 4;" (assignment_expression "pbVar32 = pbVar25 + 4" identifier = (binary_expression "pbVar25 + 4" identifier + number_literal)) ;) (expression_statement "ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18);" (assignment_expression "ppVar18 = (patternlist *)(puVar22 + iVar4 + 0x18)" identifier = (cast_expression "(patternlist *)(puVar22 + iVar4 + 0x18)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + iVar4 + 0x18)" ( (binary_expression "puVar22 + iVar4 + 0x18" (binary_expression "puVar22 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c);" (assignment_expression "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)(puVar22 + iVar4 + 0x1c)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" ( (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" * (cast_expression "(code *)PTR_wmempcpy_0005b4a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar4 + 0x1c)" ( (binary_expression "puVar22 + iVar4 + 0x1c" (binary_expression "puVar22 + iVar4" identifier + identifier) + number_literal) ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "iVar12 = *(int *)(pbVar25 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar25 + 4)" identifier = (pointer_expression "*(int *)(pbVar25 + 4)" * (cast_expression "(int *)(pbVar25 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + 4)" ( (binary_expression "pbVar25 + 4" identifier + number_literal) ))))) ;) (expression_statement "ppVar18->next = (patternlist *)0x0;" (assignment_expression "ppVar18->next = (patternlist *)0x0" (field_expression "ppVar18->next" identifier -> field_identifier) = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34->next = ppVar18;" (assignment_expression "local_34->next = ppVar18" (field_expression "local_34->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar15 = unaff_s6;" (assignment_expression "pbVar15 = unaff_s6" identifier = identifier) ;) (expression_statement "pbVar25 = pbVar32;" (assignment_expression "pbVar25 = pbVar32" identifier = identifier) ;) (expression_statement "local_34 = ppVar18;" (assignment_expression "local_34 = ppVar18" identifier = identifier) ;) (expression_statement "puVar22 = puVar22 + iVar4;" (assignment_expression "puVar22 = puVar22 + iVar4" identifier = (binary_expression "puVar22 + iVar4" identifier + identifier)) ;) (expression_statement "unaff_s6 = pbVar32;" (assignment_expression "unaff_s6 = pbVar32" identifier = identifier) ;) (goto_statement "goto joined_r0x00028e80;" goto statement_identifier ;) })) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;) })) (labeled_statement "LAB_00028e9c:\n        iVar12 = *(int *)(pbVar25 + 4);" statement_identifier : (expression_statement "iVar12 = *(int *)(pbVar25 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar25 + 4)" identifier = (pointer_expression "*(int *)(pbVar25 + 4)" * (cast_expression "(int *)(pbVar25 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + 4)" ( (binary_expression "pbVar25 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pbVar25 = pbVar25 + 4;" (assignment_expression "pbVar25 = pbVar25 + 4" identifier = (binary_expression "pbVar25 + 4" identifier + number_literal)) ;) (if_statement "if (iVar12 == 0) goto LAB_00028d20;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;)) })) (if_statement "if (*(int *)(puVar29 + -0x4730) == 0) {\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }" if (parenthesized_expression "(*(int *)(puVar29 + -0x4730) == 0)" ( (binary_expression "*(int *)(puVar29 + -0x4730) == 0" (pointer_expression "*(int *)(puVar29 + -0x4730)" * (cast_expression "(int *)(puVar29 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + -0x4730)" ( (binary_expression "puVar29 + -0x4730" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar12 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar29 + -0x4730) = uVar5;\n      }" { (expression_statement "iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2);" (assignment_expression "iVar12 = (*(code *)PTR_getenv_0005b510)(unaff_s2)" identifier = (call_expression "(*(code *)PTR_getenv_0005b510)(unaff_s2)" (parenthesized_expression "(*(code *)PTR_getenv_0005b510)" ( (pointer_expression "*(code *)PTR_getenv_0005b510" * (cast_expression "(code *)PTR_getenv_0005b510" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s2)" ( identifier )))) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar12 != 0) {\n          uVar5 = 1;\n        }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar5 = 1;\n        }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(puVar29 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(puVar29 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(puVar29 + -0x4730)" * (cast_expression "(undefined4 *)(puVar29 + -0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + -0x4730)" ( (binary_expression "puVar29 + -0x4730" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar12 = *(int *)(pbVar25 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar25 + 4)" identifier = (pointer_expression "*(int *)(pbVar25 + 4)" * (cast_expression "(int *)(pbVar25 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + 4)" ( (binary_expression "pbVar25 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar32 = pbVar25 + 4;" (assignment_expression "pbVar32 = pbVar25 + 4" identifier = (binary_expression "pbVar25 + 4" identifier + number_literal)) ;) (if_statement "if ((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))) {\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }" if (parenthesized_expression "((iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e))))" ( (binary_expression "(iVar12 == 0x21) || ((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))" (parenthesized_expression "(iVar12 == 0x21)" ( (binary_expression "iVar12 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)))" ( (parenthesized_expression "(*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e))" ( (binary_expression "*(int *)(puVar29 + -0x4730) < 0 && (iVar12 == 0x5e)" (binary_expression "*(int *)(puVar29 + -0x4730) < 0" (pointer_expression "*(int *)(puVar29 + -0x4730)" * (cast_expression "(int *)(puVar29 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + -0x4730)" ( (binary_expression "puVar29 + -0x4730" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(iVar12 == 0x5e)" ( (binary_expression "iVar12 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        iVar12 = *(int *)(pbVar25 + 8);\n        pbVar32 = pbVar25 + 8;\n      }" { (expression_statement "iVar12 = *(int *)(pbVar25 + 8);" (assignment_expression "iVar12 = *(int *)(pbVar25 + 8)" identifier = (pointer_expression "*(int *)(pbVar25 + 8)" * (cast_expression "(int *)(pbVar25 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar25 + 8)" ( (binary_expression "pbVar25 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar32 = pbVar25 + 8;" (assignment_expression "pbVar32 = pbVar25 + 8" identifier = (binary_expression "pbVar25 + 8" identifier + number_literal)) ;) })) (if_statement "if (iVar12 == 0x5d) {\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }" if (parenthesized_expression "(iVar12 == 0x5d)" ( (binary_expression "iVar12 == 0x5d" identifier == number_literal) )) (compound_statement "{\n        iVar12 = *(int *)(pbVar32 + 4);\n        pbVar32 = pbVar32 + 4;\n      }" { (expression_statement "iVar12 = *(int *)(pbVar32 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar32 + 4)" identifier = (pointer_expression "*(int *)(pbVar32 + 4)" * (cast_expression "(int *)(pbVar32 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar32 + 4)" ( (binary_expression "pbVar32 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar32 = pbVar32 + 4;" (assignment_expression "pbVar32 = pbVar32 + 4" identifier = (binary_expression "pbVar32 + 4" identifier + number_literal)) ;) })) (expression_statement "pbVar15 = (byte *)0x5d;" (assignment_expression "pbVar15 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar25 = pbVar32 + 4, iVar12 != 0x5d) {\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }" while (parenthesized_expression "(pbVar25 = pbVar32 + 4, iVar12 != 0x5d)" ( (comma_expression "pbVar25 = pbVar32 + 4, iVar12 != 0x5d" (assignment_expression "pbVar25 = pbVar32 + 4" identifier = (binary_expression "pbVar32 + 4" identifier + number_literal)) , (binary_expression "iVar12 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n        if (iVar12 == 0) goto LAB_00028d20;\n        pbVar32 = pbVar25;\n        iVar12 = *(int *)pbVar25;\n      }" { (if_statement "if (iVar12 == 0) goto LAB_00028d20;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;)) (expression_statement "pbVar32 = pbVar25;" (assignment_expression "pbVar32 = pbVar25" identifier = identifier) ;) (expression_statement "iVar12 = *(int *)pbVar25;" (assignment_expression "iVar12 = *(int *)pbVar25" identifier = (pointer_expression "*(int *)pbVar25" * (cast_expression "(int *)pbVar25" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "iVar12 = *(int *)(pbVar32 + 4);" (assignment_expression "iVar12 = *(int *)(pbVar32 + 4)" identifier = (pointer_expression "*(int *)(pbVar32 + 4)" * (cast_expression "(int *)(pbVar32 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar32 + 4)" ( (binary_expression "pbVar32 + 4" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x00028e80:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return -1;\n  }" statement_identifier : (if_statement "if (local_2c == *(int **)puVar1) {\n    return -1;\n  }" if (parenthesized_expression "(local_2c == *(int **)puVar1)" ( (binary_expression "local_2c == *(int **)puVar1" identifier == (pointer_expression "*(int **)puVar1" * (cast_expression "(int **)puVar1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) }))) (expression_statement "pcVar34 = internal_fnwmatch;" (assignment_expression "pcVar34 = internal_fnwmatch" identifier = identifier) ;) (expression_statement "piVar24 = local_2c;" (assignment_expression "piVar24 = local_2c" identifier = identifier) ;) (expression_statement "puVar29 = PTR___stack_chk_fail_0005b564;" (assignment_expression "puVar29 = PTR___stack_chk_fail_0005b564" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0005b564)();" (call_expression "(*(code *)PTR___stack_chk_fail_0005b564)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0005b564)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0005b564" * (cast_expression "(code *)PTR___stack_chk_fail_0005b564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar31 = puVar29 + 0x39dd0;" (assignment_expression "puVar31 = puVar29 + 0x39dd0" identifier = (binary_expression "puVar29 + 0x39dd0" identifier + number_literal)) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar29 + 0x3226c);" (assignment_expression "puVar3 = *(undefined4 **)(puVar29 + 0x3226c)" identifier = (pointer_expression "*(undefined4 **)(puVar29 + 0x3226c)" * (cast_expression "(undefined4 **)(puVar29 + 0x3226c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x3226c)" ( (binary_expression "puVar29 + 0x3226c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar22 + -0xc) = pbVar25;" (assignment_expression "*(byte **)(puVar22 + -0xc) = pbVar25" (pointer_expression "*(byte **)(puVar22 + -0xc)" * (cast_expression "(byte **)(puVar22 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0xc)" ( (binary_expression "puVar22 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar22 + -0x558) = puVar3;" (assignment_expression "*(undefined4 **)(puVar22 + -0x558) = puVar3" (pointer_expression "*(undefined4 **)(puVar22 + -0x558)" * (cast_expression "(undefined4 **)(puVar22 + -0x558)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x558)" ( (binary_expression "puVar22 + -0x558" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar22 + -0x570) = puVar31;" (assignment_expression "*(undefined **)(puVar22 + -0x570) = puVar31" (pointer_expression "*(undefined **)(puVar22 + -0x570)" * (cast_expression "(undefined **)(puVar22 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x570)" ( (binary_expression "puVar22 + -0x570" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar22 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar22 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar22 + -8)" * (cast_expression "(undefined1 **)(puVar22 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -8)" ( (binary_expression "puVar22 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar22 + -0x1c) = puVar1;" (assignment_expression "*(undefined **)(puVar22 + -0x1c) = puVar1" (pointer_expression "*(undefined **)(puVar22 + -0x1c)" * (cast_expression "(undefined **)(puVar22 + -0x1c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x1c)" ( (binary_expression "puVar22 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar22 + -4) = pcVar34;" (assignment_expression "*(code **)(puVar22 + -4) = pcVar34" (pointer_expression "*(code **)(puVar22 + -4)" * (cast_expression "(code **)(puVar22 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -4)" ( (binary_expression "puVar22 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar22 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar22 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar22 + -0x10)" * (cast_expression "(byte **)(puVar22 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x10)" ( (binary_expression "puVar22 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar22 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar22 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar22 + -0x14)" * (cast_expression "(int **)(puVar22 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x14)" ( (binary_expression "puVar22 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar22 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar22 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar22 + -0x18)" * (cast_expression "(int **)(puVar22 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x18)" ( (binary_expression "puVar22 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar22 + -0x20) = unaff_s2;" (assignment_expression "*(undefined **)(puVar22 + -0x20) = unaff_s2" (pointer_expression "*(undefined **)(puVar22 + -0x20)" * (cast_expression "(undefined **)(puVar22 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x20)" ( (binary_expression "puVar22 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar22 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar22 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar22 + -0x24)" * (cast_expression "(uint *)(puVar22 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x24)" ( (binary_expression "puVar22 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(wchar_t **)(puVar22 + -0x28) = pattern;" (assignment_expression "*(wchar_t **)(puVar22 + -0x28) = pattern" (pointer_expression "*(wchar_t **)(puVar22 + -0x28)" * (cast_expression "(wchar_t **)(puVar22 + -0x28)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x28)" ( (binary_expression "puVar22 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar12 = *piVar24;" (assignment_expression "iVar12 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar22 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar22 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)(puVar22 + -0x2c)" * (cast_expression "(undefined4 *)(puVar22 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x2c)" ( (binary_expression "puVar22 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "uVar2 = *(uint *)(puVar22 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar22 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar22 + 0x10)" * (cast_expression "(uint *)(puVar22 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x10)" ( (binary_expression "puVar22 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pbVar25 = (byte *)string;" (assignment_expression "pbVar25 = (byte *)string" identifier = (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar32 = pbVar15;" (assignment_expression "pbVar32 = pbVar15" identifier = identifier) ;) (if_statement "if (iVar12 != 0) {\n    unaff_s1 = uVar2 & 2;\n    pattern = (wchar_t *)(uVar2 & 0x10);\n    *(uint *)(puVar22 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);\n    *(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;\n    *(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;\n    *(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar24 + 1;\n    unaff_s6 = (byte *)string_end;\n    do {\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    } while (iVar12 != 0);\n  }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s1 = uVar2 & 2;\n    pattern = (wchar_t *)(uVar2 & 0x10);\n    *(uint *)(puVar22 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);\n    *(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;\n    *(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;\n    *(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar24 + 1;\n    unaff_s6 = (byte *)string_end;\n    do {\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    } while (iVar12 != 0);\n  }" { (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" identifier = (binary_expression "uVar2 & 2" identifier & number_literal)) ;) (expression_statement "pattern = (wchar_t *)(uVar2 & 0x10);" (assignment_expression "pattern = (wchar_t *)(uVar2 & 0x10)" identifier = (cast_expression "(wchar_t *)(uVar2 & 0x10)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar22 + -0x554) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar22 + -0x554) = uVar2 & 5" (pointer_expression "*(uint *)(puVar22 + -0x554)" * (cast_expression "(uint *)(puVar22 + -0x554)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x554)" ( (binary_expression "puVar22 + -0x554" identifier + number_literal) )))) = (binary_expression "uVar2 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8);" (assignment_expression "*(undefined4 *)(puVar22 + -0x55c) = *(undefined4 *)(puVar29 + 0x31df8)" (pointer_expression "*(undefined4 *)(puVar22 + -0x55c)" * (cast_expression "(undefined4 *)(puVar22 + -0x55c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x55c)" ( (binary_expression "puVar22 + -0x55c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar29 + 0x31df8)" * (cast_expression "(undefined4 *)(puVar29 + 0x31df8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x31df8)" ( (binary_expression "puVar29 + 0x31df8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0;" (assignment_expression "*(int *)(puVar22 + -0x560) = *(int *)(puVar29 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar22 + -0x560)" * (cast_expression "(int *)(puVar22 + -0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x560)" ( (binary_expression "puVar22 + -0x560" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar29 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar29 + 0x31fac)" * (cast_expression "(int *)(puVar29 + 0x31fac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x31fac)" ( (binary_expression "puVar29 + 0x31fac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec;" (assignment_expression "*(int *)(puVar22 + -0x544) = *(int *)(puVar29 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar22 + -0x544)" * (cast_expression "(int *)(puVar22 + -0x544)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x544)" ( (binary_expression "puVar22 + -0x544" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar29 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar29 + 0x32070)" * (cast_expression "(int *)(puVar29 + 0x32070)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x32070)" ( (binary_expression "puVar29 + 0x32070" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc;" (assignment_expression "*(int *)(puVar22 + -0x54c) = *(int *)(puVar29 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar22 + -0x54c)" * (cast_expression "(int *)(puVar22 + -0x54c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x54c)" ( (binary_expression "puVar22 + -0x54c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar29 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar29 + 0x31fac)" * (cast_expression "(int *)(puVar29 + 0x31fac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x31fac)" ( (binary_expression "puVar29 + 0x31fac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "unaff_s5 = piVar24 + 1;" (assignment_expression "unaff_s5 = piVar24 + 1" identifier = (binary_expression "piVar24 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s6 = (byte *)string_end;" (assignment_expression "unaff_s6 = (byte *)string_end" identifier = (cast_expression "(byte *)string_end" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    } while (iVar12 != 0);" do (compound_statement "{\n      unaff_s4 = unaff_s5;\n      if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }\n      unaff_s5 = unaff_s4;\n      if ((byte *)string == pbVar32) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar32;\n      if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar12) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar12 = *unaff_s4;\n      pbVar32 = pbVar32 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar24 = unaff_s4;\n    }" { (expression_statement "unaff_s4 = unaff_s5;" (assignment_expression "unaff_s4 = unaff_s5" identifier = identifier) ;) (if_statement "if (pattern != (wchar_t *)0x0) {\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }" if (parenthesized_expression "(pattern != (wchar_t *)0x0)" ( (binary_expression "pattern != (wchar_t *)0x0" identifier != (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }" { (expression_statement "iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12);" (assignment_expression "iVar12 = (**(code **)(puVar31 + -0x7b70))(iVar12)" identifier = (call_expression "(**(code **)(puVar31 + -0x7b70))(iVar12)" (parenthesized_expression "(**(code **)(puVar31 + -0x7b70))" ( (pointer_expression "**(code **)(puVar31 + -0x7b70)" * (pointer_expression "*(code **)(puVar31 + -0x7b70)" * (cast_expression "(code **)(puVar31 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x7b70)" ( (binary_expression "puVar31 + -0x7b70" identifier + number_literal) ))))) )) (argument_list "(iVar12)" ( identifier )))) ;) (expression_statement "puVar31 = *(undefined **)(puVar22 + -0x570);" (assignment_expression "puVar31 = *(undefined **)(puVar22 + -0x570)" identifier = (pointer_expression "*(undefined **)(puVar22 + -0x570)" * (cast_expression "(undefined **)(puVar22 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x570)" ( (binary_expression "puVar22 + -0x570" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar12 - 0x21U < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }" if (parenthesized_expression "(iVar12 - 0x21U < 0x3c)" ( (binary_expression "iVar12 - 0x21U < 0x3c" (binary_expression "iVar12 - 0x21U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();\n        return iVar12;\n      }" { comment comment (expression_statement "iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ();" (assignment_expression "iVar12 = (*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ()" identifier = (call_expression "(*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))\n                           ()" (parenthesized_expression "(*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)))" ( (pointer_expression "*(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4))" * (cast_expression "(code *)(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4))" ( (binary_expression "puVar31 + *(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)" * (cast_expression "(int *)(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4)" ( (binary_expression "*(int *)(puVar22 + -0x560) + (iVar12 - 0x21U) * 4" (pointer_expression "*(int *)(puVar22 + -0x560)" * (cast_expression "(int *)(puVar22 + -0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x560)" ( (binary_expression "puVar22 + -0x560" identifier + number_literal) )))) + (binary_expression "(iVar12 - 0x21U) * 4" (parenthesized_expression "(iVar12 - 0x21U)" ( (binary_expression "iVar12 - 0x21U" identifier - number_literal) )) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar12;" return identifier ;) })) (expression_statement "unaff_s5 = unaff_s4;" (assignment_expression "unaff_s5 = unaff_s4" identifier = identifier) ;) (if_statement "if ((byte *)string == pbVar32) goto LAB_000295c4;" if (parenthesized_expression "((byte *)string == pbVar32)" ( (binary_expression "(byte *)string == pbVar32" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) (goto_statement "goto LAB_000295c4;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)pbVar32;" (assignment_expression "iVar4 = *(int *)pbVar32" identifier = (pointer_expression "*(int *)pbVar32" * (cast_expression "(int *)pbVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (pattern != (wchar_t *)0x0) {\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }" if (parenthesized_expression "(pattern != (wchar_t *)0x0)" ( (binary_expression "pattern != (wchar_t *)0x0" identifier != (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);\n        puVar31 = *(undefined **)(puVar22 + -0x570);\n      }" { (expression_statement "iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4);" (assignment_expression "iVar4 = (**(code **)(puVar31 + -0x7b70))(iVar4)" identifier = (call_expression "(**(code **)(puVar31 + -0x7b70))(iVar4)" (parenthesized_expression "(**(code **)(puVar31 + -0x7b70))" ( (pointer_expression "**(code **)(puVar31 + -0x7b70)" * (pointer_expression "*(code **)(puVar31 + -0x7b70)" * (cast_expression "(code **)(puVar31 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x7b70)" ( (binary_expression "puVar31 + -0x7b70" identifier + number_literal) ))))) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "puVar31 = *(undefined **)(puVar22 + -0x570);" (assignment_expression "puVar31 = *(undefined **)(puVar22 + -0x570)" identifier = (pointer_expression "*(undefined **)(puVar22 + -0x570)" * (cast_expression "(undefined **)(puVar22 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x570)" ( (binary_expression "puVar22 + -0x570" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (iVar4 != iVar12) goto LAB_000295c8;" if (parenthesized_expression "(iVar4 != iVar12)" ( (binary_expression "iVar4 != iVar12" identifier != identifier) )) (goto_statement "goto LAB_000295c8;" goto statement_identifier ;)) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar12 = *unaff_s4;" (assignment_expression "iVar12 = *unaff_s4" identifier = (pointer_expression "*unaff_s4" * identifier)) ;) (expression_statement "pbVar32 = pbVar32 + 4;" (assignment_expression "pbVar32 = pbVar32 + 4" identifier = (binary_expression "pbVar32 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s5 = unaff_s4 + 1;" (assignment_expression "unaff_s5 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "piVar24 = unaff_s4;" (assignment_expression "piVar24 = unaff_s4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "piVar24 = unaff_s4;" (assignment_expression "piVar24 = unaff_s4" identifier = identifier) ;) (if_statement "if (pbVar32 != (byte *)string) {\n    piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);\n    if (piVar24 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar32 != (byte *)string)" ( (binary_expression "pbVar32 != (byte *)string" identifier != (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n    piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);\n    if (piVar24 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }\n  }" { (expression_statement "piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8);" (assignment_expression "piVar24 = (int *)(*(uint *)(puVar22 + 0x10) & 8)" identifier = (cast_expression "(int *)(*(uint *)(puVar22 + 0x10) & 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar22 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar22 + 0x10) & 8" (pointer_expression "*(uint *)(puVar22 + 0x10)" * (cast_expression "(uint *)(puVar22 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 0x10)" ( (binary_expression "puVar22 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (piVar24 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }" if (parenthesized_expression "(piVar24 == (int *)0x0)" ( (binary_expression "piVar24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000295c4:\n      uVar2 = 1;\n    }" { (labeled_statement "LAB_000295c4:\n      uVar2 = 1;" statement_identifier : (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }" else (compound_statement "{\n      uVar2 = (uint)(*(int *)pbVar32 != 0x2f);\n    }" { (expression_statement "uVar2 = (uint)(*(int *)pbVar32 != 0x2f);" (assignment_expression "uVar2 = (uint)(*(int *)pbVar32 != 0x2f)" identifier = (call_expression "(uint)(*(int *)pbVar32 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)pbVar32 != 0x2f)" ( (binary_expression "*(int *)pbVar32 != 0x2f" (pointer_expression "*(int *)pbVar32" * (cast_expression "(int *)pbVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_000295c8:\n  iVar4 = *(int *)(puVar22 + -0x2c);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar22 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar22 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar22 + -0x2c)" * (cast_expression "(int *)(puVar22 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x2c)" ( (binary_expression "puVar22 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 == **(int **)(puVar22 + -0x558)) {\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 == **(int **)(puVar22 + -0x558))" ( (binary_expression "iVar4 == **(int **)(puVar22 + -0x558)" identifier == (pointer_expression "**(int **)(puVar22 + -0x558)" * (pointer_expression "*(int **)(puVar22 + -0x558)" * (cast_expression "(int **)(puVar22 + -0x558)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x558)" ( (binary_expression "puVar22 + -0x558" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar34 = *(code **)(puVar31 + -0x7b8c);" (assignment_expression "pcVar34 = *(code **)(puVar31 + -0x7b8c)" identifier = (pointer_expression "*(code **)(puVar31 + -0x7b8c)" * (cast_expression "(code **)(puVar31 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x7b8c)" ( (binary_expression "puVar31 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar35 = ext_match;" (assignment_expression "pcVar35 = ext_match" identifier = identifier) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar30 = *(code **)(pcVar34 + 0x315c4);" (assignment_expression "pcVar30 = *(code **)(pcVar34 + 0x315c4)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x315c4)" * (cast_expression "(code **)(pcVar34 + 0x315c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x315c4)" ( (binary_expression "pcVar34 + 0x315c4" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar22 + -0x590) = pbVar32;" (assignment_expression "*(byte **)(puVar22 + -0x590) = pbVar32" (pointer_expression "*(byte **)(puVar22 + -0x590)" * (cast_expression "(byte **)(puVar22 + -0x590)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x590)" ( (binary_expression "puVar22 + -0x590" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar22 + -0x5a8) = unaff_s2;" (assignment_expression "*(undefined **)(puVar22 + -0x5a8) = unaff_s2" (pointer_expression "*(undefined **)(puVar22 + -0x5a8)" * (cast_expression "(undefined **)(puVar22 + -0x5a8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5a8)" ( (binary_expression "puVar22 + -0x5a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar3 = *(undefined4 **)(pcVar34 + 0x3166c);" (assignment_expression "puVar3 = *(undefined4 **)(pcVar34 + 0x3166c)" identifier = (pointer_expression "*(undefined4 **)(pcVar34 + 0x3166c)" * (cast_expression "(undefined4 **)(pcVar34 + 0x3166c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x3166c)" ( (binary_expression "pcVar34 + 0x3166c" identifier + number_literal) ))))) ;) (expression_statement "*(wchar_t **)(puVar22 + -0x5b0) = pattern;" (assignment_expression "*(wchar_t **)(puVar22 + -0x5b0) = pattern" (pointer_expression "*(wchar_t **)(puVar22 + -0x5b0)" * (cast_expression "(wchar_t **)(puVar22 + -0x5b0)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5b0)" ( (binary_expression "puVar22 + -0x5b0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar22 + -0x594) = iVar12;" (assignment_expression "*(int *)(puVar22 + -0x594) = iVar12" (pointer_expression "*(int *)(puVar22 + -0x594)" * (cast_expression "(int *)(puVar22 + -0x594)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x594)" ( (binary_expression "puVar22 + -0x594" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar28 = pbVar15 + 1;" (assignment_expression "pbVar28 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar22 + -0x5c0) = (uint)(byte)puVar22[-0x575];" (assignment_expression "*(uint *)(puVar22 + -0x5c0) = (uint)(byte)puVar22[-0x575]" (pointer_expression "*(uint *)(puVar22 + -0x5c0)" * (cast_expression "(uint *)(puVar22 + -0x5c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5c0)" ( (binary_expression "puVar22 + -0x5c0" identifier + number_literal) )))) = (cast_expression "(uint)(byte)puVar22[-0x575]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar22[-0x575]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar22[-0x575]" identifier [ number_literal ])))) ;) (expression_statement "*(int **)(puVar22 + -0x5a0) = piVar24;" (assignment_expression "*(int **)(puVar22 + -0x5a0) = piVar24" (pointer_expression "*(int **)(puVar22 + -0x5a0)" * (cast_expression "(int **)(puVar22 + -0x5a0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5a0)" ( (binary_expression "puVar22 + -0x5a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar22 + -0x5d8) = pcVar34 + 0x391d0;" (assignment_expression "*(code **)(puVar22 + -0x5d8) = pcVar34 + 0x391d0" (pointer_expression "*(code **)(puVar22 + -0x5d8)" * (cast_expression "(code **)(puVar22 + -0x5d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5d8)" ( (binary_expression "puVar22 + -0x5d8" identifier + number_literal) )))) = (binary_expression "pcVar34 + 0x391d0" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar22 + -0x588) = iVar4;" (assignment_expression "*(int *)(puVar22 + -0x588) = iVar4" (pointer_expression "*(int *)(puVar22 + -0x588)" * (cast_expression "(int *)(puVar22 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x588)" ( (binary_expression "puVar22 + -0x588" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar22 + -0x58c) = pcVar35;" (assignment_expression "*(code **)(puVar22 + -0x58c) = pcVar35" (pointer_expression "*(code **)(puVar22 + -0x58c)" * (cast_expression "(code **)(puVar22 + -0x58c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x58c)" ( (binary_expression "puVar22 + -0x58c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar22 + -0x598) = unaff_s6;" (assignment_expression "*(byte **)(puVar22 + -0x598) = unaff_s6" (pointer_expression "*(byte **)(puVar22 + -0x598)" * (cast_expression "(byte **)(puVar22 + -0x598)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x598)" ( (binary_expression "puVar22 + -0x598" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar22 + -0x59c) = unaff_s5;" (assignment_expression "*(int **)(puVar22 + -0x59c) = unaff_s5" (pointer_expression "*(int **)(puVar22 + -0x59c)" * (cast_expression "(int **)(puVar22 + -0x59c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x59c)" ( (binary_expression "puVar22 + -0x59c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(wchar_t **)(puVar22 + -0x5a4) = string;" (assignment_expression "*(wchar_t **)(puVar22 + -0x5a4) = string" (pointer_expression "*(wchar_t **)(puVar22 + -0x5a4)" * (cast_expression "(wchar_t **)(puVar22 + -0x5a4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5a4)" ( (binary_expression "puVar22 + -0x5a4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar22 + -0x5ac) = unaff_s1;" (assignment_expression "*(uint *)(puVar22 + -0x5ac) = unaff_s1" (pointer_expression "*(uint *)(puVar22 + -0x5ac)" * (cast_expression "(uint *)(puVar22 + -0x5ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5ac)" ( (binary_expression "puVar22 + -0x5ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(wchar_t **)(puVar22 + -0x5c4) = string_end;" (assignment_expression "*(wchar_t **)(puVar22 + -0x5c4) = string_end" (pointer_expression "*(wchar_t **)(puVar22 + -0x5c4)" * (cast_expression "(wchar_t **)(puVar22 + -0x5c4)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5c4)" ( (binary_expression "puVar22 + -0x5c4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar22 + -0x5b8) = 0;" (assignment_expression "*(undefined4 *)(puVar22 + -0x5b8) = 0" (pointer_expression "*(undefined4 *)(puVar22 + -0x5b8)" * (cast_expression "(undefined4 *)(puVar22 + -0x5b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5b8)" ( (binary_expression "puVar22 + -0x5b8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar22 + -0x5b4) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar22 + -0x5b4) = *puVar3" (pointer_expression "*(undefined4 *)(puVar22 + -0x5b4)" * (cast_expression "(undefined4 *)(puVar22 + -0x5b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5b4)" ( (binary_expression "puVar22 + -0x5b4" identifier + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "pbVar32 = pbVar15;" (assignment_expression "pbVar32 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar25;" (assignment_expression "pbVar16 = pbVar25" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar30)(pbVar15);" (assignment_expression "uVar5 = (*pcVar30)(pbVar15)" identifier = (call_expression "(*pcVar30)(pbVar15)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pbVar15)" ( identifier )))) ;) (expression_statement "iVar12 = (int)(char)pbVar15[1];" (assignment_expression "iVar12 = (int)(char)pbVar15[1]" identifier = (cast_expression "(int)(char)pbVar15[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar15[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar15[1]" identifier [ number_literal ])))) ;) (expression_statement "iVar4 = *(int *)(puVar22 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar22 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar22 + -0x5d8)" * (cast_expression "(int *)(puVar22 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5d8)" ( (binary_expression "puVar22 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar22 + -0x5cc) = uVar5;" (assignment_expression "*(undefined4 *)(puVar22 + -0x5cc) = uVar5" (pointer_expression "*(undefined4 *)(puVar22 + -0x5cc)" * (cast_expression "(undefined4 *)(puVar22 + -0x5cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5cc)" ( (binary_expression "puVar22 + -0x5cc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar6 = puVar22 + -0x5f0;" (assignment_expression "puVar6 = puVar22 + -0x5f0" identifier = (binary_expression "puVar22 + -0x5f0" identifier + number_literal)) ;) (if_statement "if (iVar12 != 0) {\n    unaff_s5 = (int *)0x0;\n    string = *(wchar_t **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;\n    *(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar26 = puVar22 + -0x5f0;\n    unaff_s6 = pbVar28;\n    do {\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    } while (iVar12 != 0);\n  }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    string = *(wchar_t **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;\n    *(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar26 = puVar22 + -0x5f0;\n    unaff_s6 = pbVar28;\n    do {\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    } while (iVar12 != 0);\n  }" { (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "string = *(wchar_t **)(iVar4 + -0x7fd8);" (assignment_expression "string = *(wchar_t **)(iVar4 + -0x7fd8)" identifier = (pointer_expression "*(wchar_t **)(iVar4 + -0x7fd8)" * (cast_expression "(wchar_t **)(iVar4 + -0x7fd8)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7fd8)" ( (binary_expression "iVar4 + -0x7fd8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2)" identifier = (call_expression "(uint)(*(int *)(puVar22 + -0x588) - 0x3fU < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar22 + -0x588) - 0x3fU < 2)" ( (binary_expression "*(int *)(puVar22 + -0x588) - 0x3fU < 2" (binary_expression "*(int *)(puVar22 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar22 + -0x588)" * (cast_expression "(int *)(puVar22 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x588)" ( (binary_expression "puVar22 + -0x588" identifier + number_literal) )))) - number_literal) < number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8;" (assignment_expression "*(undefined1 **)(puVar22 + -0x5bc) = puVar22 + -0x5b8" (pointer_expression "*(undefined1 **)(puVar22 + -0x5bc)" * (cast_expression "(undefined1 **)(puVar22 + -0x5bc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5bc)" ( (binary_expression "puVar22 + -0x5bc" identifier + number_literal) )))) = (binary_expression "puVar22 + -0x5b8" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;" (assignment_expression "*(int *)(puVar22 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(puVar22 + -0x5c8)" * (cast_expression "(int *)(puVar22 + -0x5c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5c8)" ( (binary_expression "puVar22 + -0x5c8" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar26 = puVar22 + -0x5f0;" (assignment_expression "puVar26 = puVar22 + -0x5f0" identifier = (binary_expression "puVar22 + -0x5f0" identifier + number_literal)) ;) (expression_statement "unaff_s6 = pbVar28;" (assignment_expression "unaff_s6 = pbVar28" identifier = identifier) ;) (do_statement "do {\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    } while (iVar12 != 0);" do (compound_statement "{\n      while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }\n      pbVar32 = &DAT_c0000601;\n      uVar2 = iVar12 - 0x21U & 0xff;\n      pbVar16 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }\n      if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar13 = *(byte **)(puVar22 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;\n      pcVar34 = *(code **)(iVar4 + -0x7b7c);\n      pbVar16 = pbVar28 + -(int)unaff_s6;\n      pbVar23 = pbVar28 + 1;\n      iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      *(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;\n      puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);\n      iVar4 = *(int *)(puVar22 + -0x5d8);\n      puVar19 = *(undefined4 **)(puVar22 + -0x5d0);\n      iVar12 = (int)(char)pbVar28[1];\n      *puVar6 = 0;\n      puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n      *puVar19 = 0;\n      *(undefined4 **)(puVar22 + -0x5bc) = puVar19;\n      *puVar8 = puVar19;\n      pbVar32 = unaff_s6;\n      unaff_s6 = pbVar23;\n      pbVar28 = pbVar23;\n      puVar6 = puVar26 + iVar14;\n      puVar26 = puVar26 + iVar14;\n    }" { (while_statement "while (puVar6 = puVar26, iVar12 == 0x5b) {\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }" while (parenthesized_expression "(puVar6 = puVar26, iVar12 == 0x5b)" ( (comma_expression "puVar6 = puVar26, iVar12 == 0x5b" (assignment_expression "puVar6 = puVar26" identifier = identifier) , (binary_expression "iVar12 == 0x5b" identifier == number_literal)) )) (compound_statement "{\n        if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }\n        bVar10 = pbVar28[1];\n        pbVar13 = pbVar28 + 1;\n        if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }\n        if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }\n        pbVar32 = (byte *)0x5d;\n        while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }\n        iVar12 = (int)(char)pbVar13[1];\njoined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;\n      }" { (if_statement "if (*(int *)((int)string + -0x4730) == 0) {\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }" if (parenthesized_expression "(*(int *)((int)string + -0x4730) == 0)" ( (binary_expression "*(int *)((int)string + -0x4730) == 0" (pointer_expression "*(int *)((int)string + -0x4730)" * (cast_expression "(int *)((int)string + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)string + -0x4730)" ( (binary_expression "(int)string + -0x4730" (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          if (iVar12 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)((int)string + -0x4730) = uVar5;\n        }" { (expression_statement "iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8));" (assignment_expression "iVar12 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8))" identifier = (call_expression "(**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar22 + -0x5c8))" (parenthesized_expression "(**(code **)(iVar4 + -0x7be0))" ( (pointer_expression "**(code **)(iVar4 + -0x7be0)" * (pointer_expression "*(code **)(iVar4 + -0x7be0)" * (cast_expression "(code **)(iVar4 + -0x7be0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7be0)" ( (binary_expression "iVar4 + -0x7be0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar22 + -0x5c8))" ( (pointer_expression "*(undefined4 *)(puVar22 + -0x5c8)" * (cast_expression "(undefined4 *)(puVar22 + -0x5c8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5c8)" ( (binary_expression "puVar22 + -0x5c8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar22 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar22 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar22 + -0x5d8)" * (cast_expression "(int *)(puVar22 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5d8)" ( (binary_expression "puVar22 + -0x5d8" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 != 0) {\n            uVar5 = 1;\n          }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = 1;\n          }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)((int)string + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)((int)string + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)((int)string + -0x4730)" * (cast_expression "(undefined4 *)((int)string + -0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)string + -0x4730)" ( (binary_expression "(int)string + -0x4730" (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) })) (expression_statement "bVar10 = pbVar28[1];" (assignment_expression "bVar10 = pbVar28[1]" identifier = (subscript_expression "pbVar28[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar28 + 1;" (assignment_expression "pbVar13 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))) {\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }" if (parenthesized_expression "((bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e))))" ( (binary_expression "(bVar10 == 0x21) || ((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))" (parenthesized_expression "(bVar10 == 0x21)" ( (binary_expression "bVar10 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)))" ( (parenthesized_expression "(*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e))" ( (binary_expression "*(int *)((int)string + -0x4730) < 0 && (bVar10 == 0x5e)" (binary_expression "*(int *)((int)string + -0x4730) < 0" (pointer_expression "*(int *)((int)string + -0x4730)" * (cast_expression "(int *)((int)string + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)string + -0x4730)" ( (binary_expression "(int)string + -0x4730" (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) && (parenthesized_expression "(bVar10 == 0x5e)" ( (binary_expression "bVar10 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n          bVar10 = pbVar28[2];\n          pbVar13 = pbVar28 + 2;\n        }" { (expression_statement "bVar10 = pbVar28[2];" (assignment_expression "bVar10 = pbVar28[2]" identifier = (subscript_expression "pbVar28[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar28 + 2;" (assignment_expression "pbVar13 = pbVar28 + 2" identifier = (binary_expression "pbVar28 + 2" identifier + number_literal)) ;) })) (if_statement "if (bVar10 == 0x5d) {\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }" if (parenthesized_expression "(bVar10 == 0x5d)" ( (binary_expression "bVar10 == 0x5d" identifier == number_literal) )) (compound_statement "{\n          bVar10 = pbVar13[1];\n          pbVar13 = pbVar13 + 1;\n        }" { (expression_statement "bVar10 = pbVar13[1];" (assignment_expression "bVar10 = pbVar13[1]" identifier = (subscript_expression "pbVar13[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar32 = (byte *)0x5d;" (assignment_expression "pbVar32 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar28 = pbVar13 + 1, bVar10 != 0x5d) {\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }" while (parenthesized_expression "(pbVar28 = pbVar13 + 1, bVar10 != 0x5d)" ( (comma_expression "pbVar28 = pbVar13 + 1, bVar10 != 0x5d" (assignment_expression "pbVar28 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) , (binary_expression "bVar10 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n          if (bVar10 == 0) goto LAB_0002a034;\n          pbVar13 = pbVar28;\n          bVar10 = *pbVar28;\n        }" { (if_statement "if (bVar10 == 0) goto LAB_0002a034;" if (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) (expression_statement "pbVar13 = pbVar28;" (assignment_expression "pbVar13 = pbVar28" identifier = identifier) ;) (expression_statement "bVar10 = *pbVar28;" (assignment_expression "bVar10 = *pbVar28" identifier = (pointer_expression "*pbVar28" * identifier)) ;) })) (expression_statement "iVar12 = (int)(char)pbVar13[1];" (assignment_expression "iVar12 = (int)(char)pbVar13[1]" identifier = (cast_expression "(int)(char)pbVar13[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar13[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar13[1]" identifier [ number_literal ])))) ;) (labeled_statement "joined_r0x0002a188:\n        if (iVar12 == 0) goto LAB_0002a034;" statement_identifier : (if_statement "if (iVar12 == 0) goto LAB_0002a034;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;))) })) (expression_statement "pbVar32 = &DAT_c0000601;" (assignment_expression "pbVar32 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar2 = iVar12 - 0x21U & 0xff;" (assignment_expression "uVar2 = iVar12 - 0x21U & 0xff" identifier = (binary_expression "iVar12 - 0x21U & 0xff" (binary_expression "iVar12 - 0x21U" identifier - number_literal) & number_literal)) ;) (expression_statement "pbVar16 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "pbVar16 = (byte *)(uint)(uVar2 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar2 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < 0x20)" ( (binary_expression "uVar2 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (pbVar16 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }" if (parenthesized_expression "(pbVar16 != (byte *)0x0)" ( (binary_expression "pbVar16 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }\n        if (iVar12 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }\n        break;\n      }" { (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n          iVar12 = (int)(char)pbVar28[1];\n          if (iVar12 != 0x28) goto LAB_0002a028;\n          pbVar16 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar28 = pbVar28 + 1;\n          uVar2 = 7;\n        }" { (expression_statement "iVar12 = (int)(char)pbVar28[1];" (assignment_expression "iVar12 = (int)(char)pbVar28[1]" identifier = (cast_expression "(int)(char)pbVar28[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar28[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar28[1]" identifier [ number_literal ])))) ;) (if_statement "if (iVar12 != 0x28) goto LAB_0002a028;" if (parenthesized_expression "(iVar12 != 0x28)" ( (binary_expression "iVar12 != 0x28" identifier != number_literal) )) (goto_statement "goto LAB_0002a028;" goto statement_identifier ;)) (expression_statement "pbVar16 = (byte *)0x1;" (assignment_expression "pbVar16 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar12 != 0x29) goto LAB_0002a198;" if (parenthesized_expression "(iVar12 != 0x29)" ( (binary_expression "iVar12 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_0002a198;" goto statement_identifier ;)) (if_statement "if (unaff_s5 != (int *)0x0) {\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }" if (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar12 = (int)(char)pbVar28[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar28 = pbVar28 + 1;\n          goto joined_r0x0002a188;\n        }" { (expression_statement "iVar12 = (int)(char)pbVar28[1];" (assignment_expression "iVar12 = (int)(char)pbVar28[1]" identifier = (cast_expression "(int)(char)pbVar28[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar28[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar28[1]" identifier [ number_literal ])))) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" identifier = (cast_expression "(int *)((int)unaff_s5 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + -1)" ( (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (labeled_statement "LAB_0002a028:\n          pbVar28 = pbVar28 + 1;" statement_identifier : (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;)) (goto_statement "goto joined_r0x0002a188;" goto statement_identifier ;) })) (if_statement "if (1 < *(int *)(puVar22 + -0x588) - 0x3fU) {\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }" if (parenthesized_expression "(1 < *(int *)(puVar22 + -0x588) - 0x3fU)" ( (binary_expression "1 < *(int *)(puVar22 + -0x588) - 0x3fU" number_literal < (binary_expression "*(int *)(puVar22 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar22 + -0x588)" * (cast_expression "(int *)(puVar22 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x588)" ( (binary_expression "puVar22 + -0x588" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n          *(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);\n        }" { (expression_statement "*(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6);" (assignment_expression "*(byte **)(puVar22 + -0x5cc) = pbVar28 + (1 - (int)unaff_s6)" (pointer_expression "*(byte **)(puVar22 + -0x5cc)" * (cast_expression "(byte **)(puVar22 + -0x5cc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5cc)" ( (binary_expression "puVar22 + -0x5cc" identifier + number_literal) )))) = (binary_expression "pbVar28 + (1 - (int)unaff_s6)" identifier + (parenthesized_expression "(1 - (int)unaff_s6)" ( (binary_expression "1 - (int)unaff_s6" number_literal - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if ((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }" if (parenthesized_expression "((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c)" ( (binary_expression "(*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "(*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) - 4" (parenthesized_expression "(*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc)" ( (binary_expression "*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar22 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar22 + -0x5cc)" * (cast_expression "(int *)(puVar22 + -0x5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5cc)" ( (binary_expression "puVar22 + -0x5cc" identifier + number_literal) )))) + number_literal) & number_literal) )) - number_literal) < number_literal) )) (compound_statement "{\n          iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar6 = puVar26 + iVar12;\n          puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);\n          puVar8 = *(undefined4 **)(puVar22 + -0x5bc);\n          iVar4 = *(int *)(puVar22 + -0x5d8);\n          *puVar7 = 0;\n          *(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;\n          *puVar8 = puVar26 + iVar12 + 0x18;\n          unaff_s1 = *(uint *)(puVar22 + -0x5b8);\n          if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }\n          pbVar16 = (byte *)0x454;\n          pcVar34 = *(code **)(iVar4 + -0x7ce0);\n          string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);\n          pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);\n          pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);\n          (*pcVar34)();\n          goto LAB_0002a608;\n        }" { (expression_statement "iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar12 = -((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "((*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "(*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "(*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc) + 7" (parenthesized_expression "(*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc)" ( (binary_expression "*(int *)(puVar22 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar22 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar22 + -0x5cc)" * (cast_expression "(int *)(puVar22 + -0x5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5cc)" ( (binary_expression "puVar22 + -0x5cc" identifier + number_literal) )))) + number_literal) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar6 = puVar26 + iVar12;" (assignment_expression "puVar6 = puVar26 + iVar12" identifier = (binary_expression "puVar26 + iVar12" identifier + identifier)) ;) (expression_statement "puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6);" (assignment_expression "puVar7 = (undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)\n                   (**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar4 + -0x7b7c))\n                             (puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b7c))" ( (pointer_expression "**(code **)(iVar4 + -0x7b7c)" * (pointer_expression "*(code **)(iVar4 + -0x7b7c)" * (cast_expression "(code **)(iVar4 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b7c)" ( (binary_expression "iVar4 + -0x7b7c" identifier + number_literal) ))))) )) (argument_list "(puVar26 + iVar12 + 0x1c,unaff_s6,(int)pbVar28 - (int)unaff_s6)" ( (binary_expression "puVar26 + iVar12 + 0x1c" (binary_expression "puVar26 + iVar12" identifier + identifier) + number_literal) , identifier , (binary_expression "(int)pbVar28 - (int)unaff_s6" (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar8 = *(undefined4 **)(puVar22 + -0x5bc);" (assignment_expression "puVar8 = *(undefined4 **)(puVar22 + -0x5bc)" identifier = (pointer_expression "*(undefined4 **)(puVar22 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar22 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5bc)" ( (binary_expression "puVar22 + -0x5bc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar22 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar22 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar22 + -0x5d8)" * (cast_expression "(int *)(puVar22 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5d8)" ( (binary_expression "puVar22 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "*puVar7 = 0;" (assignment_expression "*puVar7 = 0" (pointer_expression "*puVar7" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar26 + iVar12 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + iVar12 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar26 + iVar12 + 0x18)" * (cast_expression "(undefined4 *)(puVar26 + iVar12 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + iVar12 + 0x18)" ( (binary_expression "puVar26 + iVar12 + 0x18" (binary_expression "puVar26 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = puVar26 + iVar12 + 0x18;" (assignment_expression "*puVar8 = puVar26 + iVar12 + 0x18" (pointer_expression "*puVar8" * identifier) = (binary_expression "puVar26 + iVar12 + 0x18" (binary_expression "puVar26 + iVar12" identifier + identifier) + number_literal)) ;) (expression_statement "unaff_s1 = *(uint *)(puVar22 + -0x5b8);" (assignment_expression "unaff_s1 = *(uint *)(puVar22 + -0x5b8)" identifier = (pointer_expression "*(uint *)(puVar22 + -0x5b8)" * (cast_expression "(uint *)(puVar22 + -0x5b8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5b8)" ( (binary_expression "puVar22 + -0x5b8" identifier + number_literal) ))))) ;) (if_statement "if (unaff_s1 != 0) {\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }" if (parenthesized_expression "(unaff_s1 != 0)" ( (binary_expression "unaff_s1 != 0" identifier != number_literal) )) (compound_statement "{\n            if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }\n            (**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);\n          }" { (if_statement "if (pbVar28[-1] == 0x29) {\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }" if (parenthesized_expression "(pbVar28[-1] == 0x29)" ( (binary_expression "pbVar28[-1] == 0x29" (subscript_expression "pbVar28[-1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);\n              if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }\n              (**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);\n            }" { (expression_statement "string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21);" (assignment_expression "string = (wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21)" identifier = (cast_expression "(wchar_t *)(*(int *)(puVar22 + -0x588) + -0x21)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar22 + -0x588) + -0x21)" ( (binary_expression "*(int *)(puVar22 + -0x588) + -0x21" (pointer_expression "*(int *)(puVar22 + -0x588)" * (cast_expression "(int *)(puVar22 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x588)" ( (binary_expression "puVar22 + -0x588" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (string < (byte *)0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }" if (parenthesized_expression "(string < (byte *)0x20)" ( (binary_expression "string < (byte *)0x20" identifier < (cast_expression "(byte *)0x20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();\n                return iVar12;\n              }" { comment comment (expression_statement "iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))();" (assignment_expression "iVar12 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))()" identifier = (call_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))()" (parenthesized_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4))" ( (pointer_expression "*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4)" * (cast_expression "(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4)" ( (binary_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)\n                                   + iVar4" (pointer_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)" * (cast_expression "(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0 + (int)string * 4" (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) + (binary_expression "(int)string * 4" (cast_expression "(int)string" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar12;" return identifier ;) })) (expression_statement "(**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570);" (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                        (*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7898,*(int *)(iVar4 + -0x7e24) + -0x78cc,\n                         0x4ad,*(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7898" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570);" (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                      (*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78ac,*(int *)(iVar4 + -0x7e24) + -0x78cc,0x455\n                       ,*(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78ac" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "pbVar16 = (byte *)0x454;" (assignment_expression "pbVar16 = (byte *)0x454" identifier = (cast_expression "(byte *)0x454" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar34 = *(code **)(iVar4 + -0x7ce0);" (assignment_expression "pcVar34 = *(code **)(iVar4 + -0x7ce0)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) ;) (expression_statement "string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "string_end = (wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (cast_expression "(wchar_t *)(*(int *)(iVar4 + -0x7e24) + -0x7570)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc);" (assignment_expression "pbVar32 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc)" identifier = (cast_expression "(byte *)(*(int *)(iVar4 + -0x7e24) + -0x78cc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x78cc)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc);" (assignment_expression "pbVar13 = (byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc)" identifier = (cast_expression "(byte *)(*(int *)(iVar4 + -0x7e24) + -0x78bc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x78bc)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78bc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0002a608;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (if_statement "if ((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }" if (parenthesized_expression "((iVar12 != 0x7c) || (unaff_s5 != (int *)0x0))" ( (binary_expression "(iVar12 != 0x7c) || (unaff_s5 != (int *)0x0)" (parenthesized_expression "(iVar12 != 0x7c)" ( (binary_expression "iVar12 != 0x7c" identifier != number_literal) )) || (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\nLAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];\n        pbVar28 = pbVar28 + 1;\n        goto joined_r0x0002a188;\n      }" { (labeled_statement "LAB_0002a198:\n        iVar12 = (int)(char)pbVar28[1];" statement_identifier : (expression_statement "iVar12 = (int)(char)pbVar28[1];" (assignment_expression "iVar12 = (int)(char)pbVar28[1]" identifier = (cast_expression "(int)(char)pbVar28[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar28[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar28[1]" identifier [ number_literal ])))) ;)) (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (goto_statement "goto joined_r0x0002a188;" goto statement_identifier ;) })) (expression_statement "pbVar13 = *(byte **)(puVar22 + -0x5cc);" (assignment_expression "pbVar13 = *(byte **)(puVar22 + -0x5cc)" identifier = (pointer_expression "*(byte **)(puVar22 + -0x5cc)" * (cast_expression "(byte **)(puVar22 + -0x5cc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5cc)" ( (binary_expression "puVar22 + -0x5cc" identifier + number_literal) ))))) ;) (if_statement "if (unaff_s1 == 0) {\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar13 = pbVar28 + (1 - (int)unaff_s6);\n      }" { (expression_statement "pbVar13 = pbVar28 + (1 - (int)unaff_s6);" (assignment_expression "pbVar13 = pbVar28 + (1 - (int)unaff_s6)" identifier = (binary_expression "pbVar28 + (1 - (int)unaff_s6)" identifier + (parenthesized_expression "(1 - (int)unaff_s6)" ( (binary_expression "1 - (int)unaff_s6" number_literal - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if (0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4) break;" if (parenthesized_expression "(0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4)" ( (binary_expression "0x1f3b < ((uint)(pbVar13 + 7) & 0xfffffffc) - 4" number_literal < (binary_expression "((uint)(pbVar13 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar13 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar13 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar13 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + 7)" ( (binary_expression "pbVar13 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar34 = *(code **)(iVar4 + -0x7b7c);" (assignment_expression "pcVar34 = *(code **)(iVar4 + -0x7b7c)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b7c)" * (cast_expression "(code **)(iVar4 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b7c)" ( (binary_expression "iVar4 + -0x7b7c" identifier + number_literal) ))))) ;) (expression_statement "pbVar16 = pbVar28 + -(int)unaff_s6;" (assignment_expression "pbVar16 = pbVar28 + -(int)unaff_s6" identifier = (binary_expression "pbVar28 + -(int)unaff_s6" identifier + (unary_expression "-(int)unaff_s6" - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pbVar23 = pbVar28 + 1;" (assignment_expression "pbVar23 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (expression_statement "iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar14 = -(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(pbVar13 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar13 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar13 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar13 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar13 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + 7)" ( (binary_expression "pbVar13 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18;" (assignment_expression "*(undefined1 **)(puVar22 + -0x5d0) = puVar26 + iVar14 + 0x18" (pointer_expression "*(undefined1 **)(puVar22 + -0x5d0)" * (cast_expression "(undefined1 **)(puVar22 + -0x5d0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5d0)" ( (binary_expression "puVar22 + -0x5d0" identifier + number_literal) )))) = (binary_expression "puVar26 + iVar14 + 0x18" (binary_expression "puVar26 + iVar14" identifier + identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c);" (assignment_expression "puVar6 = (undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c)" identifier = (cast_expression "(undefined1 *)(*pcVar34)(puVar26 + iVar14 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar34)(puVar26 + iVar14 + 0x1c)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(puVar26 + iVar14 + 0x1c)" ( (binary_expression "puVar26 + iVar14 + 0x1c" (binary_expression "puVar26 + iVar14" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar22 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar22 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar22 + -0x5d8)" * (cast_expression "(int *)(puVar22 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + -0x5d8)" ( (binary_expression "puVar22 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "puVar19 = *(undefined4 **)(puVar22 + -0x5d0);" (assignment_expression "puVar19 = *(undefined4 **)(puVar22 + -0x5d0)" identifier = (pointer_expression "*(undefined4 **)(puVar22 + -0x5d0)" * (cast_expression "(undefined4 **)(puVar22 + -0x5d0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5d0)" ( (binary_expression "puVar22 + -0x5d0" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = (int)(char)pbVar28[1];" (assignment_expression "iVar12 = (int)(char)pbVar28[1]" identifier = (cast_expression "(int)(char)pbVar28[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar28[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar28[1]" identifier [ number_literal ])))) ;) (expression_statement "*puVar6 = 0;" (assignment_expression "*puVar6 = 0" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar8 = *(undefined4 **)(puVar22 + -0x5bc);" (assignment_expression "puVar8 = *(undefined4 **)(puVar22 + -0x5bc)" identifier = (pointer_expression "*(undefined4 **)(puVar22 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar22 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5bc)" ( (binary_expression "puVar22 + -0x5bc" identifier + number_literal) ))))) ;) (expression_statement "*puVar19 = 0;" (assignment_expression "*puVar19 = 0" (pointer_expression "*puVar19" * identifier) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar22 + -0x5bc) = puVar19;" (assignment_expression "*(undefined4 **)(puVar22 + -0x5bc) = puVar19" (pointer_expression "*(undefined4 **)(puVar22 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar22 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5bc)" ( (binary_expression "puVar22 + -0x5bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar8 = puVar19;" (assignment_expression "*puVar8 = puVar19" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "pbVar32 = unaff_s6;" (assignment_expression "pbVar32 = unaff_s6" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar23;" (assignment_expression "unaff_s6 = pbVar23" identifier = identifier) ;) (expression_statement "pbVar28 = pbVar23;" (assignment_expression "pbVar28 = pbVar23" identifier = identifier) ;) (expression_statement "puVar6 = puVar26 + iVar14;" (assignment_expression "puVar6 = puVar26 + iVar14" identifier = (binary_expression "puVar26 + iVar14" identifier + identifier)) ;) (expression_statement "puVar26 = puVar26 + iVar14;" (assignment_expression "puVar26 = puVar26 + iVar14" identifier = (binary_expression "puVar26 + iVar14" identifier + identifier)) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_0002a034:\n  pbVar13 = *(byte **)(puVar22 + -0x5b4);" statement_identifier : (expression_statement "pbVar13 = *(byte **)(puVar22 + -0x5b4);" (assignment_expression "pbVar13 = *(byte **)(puVar22 + -0x5b4)" identifier = (pointer_expression "*(byte **)(puVar22 + -0x5b4)" * (cast_expression "(byte **)(puVar22 + -0x5b4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x5b4)" ( (binary_expression "puVar22 + -0x5b4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar34 = *(code **)(iVar4 + -0x7b8c);" (assignment_expression "pcVar34 = *(code **)(iVar4 + -0x7b8c)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b8c)" * (cast_expression "(code **)(iVar4 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b8c)" ( (binary_expression "iVar4 + -0x7b8c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar13 == (byte *)*puVar3) {\n    return -1;\n  }" if (parenthesized_expression "(pbVar13 == (byte *)*puVar3)" ( (binary_expression "pbVar13 == (byte *)*puVar3" identifier == (cast_expression "(byte *)*puVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (labeled_statement "LAB_0002a608:\n  pcVar35 = internal_fnmatch;" statement_identifier : (expression_statement "pcVar35 = internal_fnmatch;" (assignment_expression "pcVar35 = internal_fnmatch" identifier = identifier) ;)) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar30 = pcVar34 + 0x38ae0;" (assignment_expression "pcVar30 = pcVar34 + 0x38ae0" identifier = (binary_expression "pcVar34 + 0x38ae0" identifier + number_literal)) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar34 + 0x30f7c);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar34 + 0x30f7c)" identifier = (pointer_expression "*(undefined4 **)(pcVar34 + 0x30f7c)" * (cast_expression "(undefined4 **)(pcVar34 + 0x30f7c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x30f7c)" ( (binary_expression "pcVar34 + 0x30f7c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar6 + -8) = puVar22 + -0x5f0;" (assignment_expression "*(undefined1 **)(puVar6 + -8) = puVar22 + -0x5f0" (pointer_expression "*(undefined1 **)(puVar6 + -8)" * (cast_expression "(undefined1 **)(puVar6 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) = (binary_expression "puVar22 + -0x5f0" identifier + number_literal)) ;) (expression_statement "*(wchar_t **)(puVar6 + -0x1c) = string;" (assignment_expression "*(wchar_t **)(puVar6 + -0x1c) = string" (pointer_expression "*(wchar_t **)(puVar6 + -0x1c)" * (cast_expression "(wchar_t **)(puVar6 + -0x1c)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1c)" ( (binary_expression "puVar6 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar6 + -0x160) = pcVar30;" (assignment_expression "*(code **)(puVar6 + -0x160) = pcVar30" (pointer_expression "*(code **)(puVar6 + -0x160)" * (cast_expression "(code **)(puVar6 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x160)" ( (binary_expression "puVar6 + -0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar6 + -4) = pcVar35;" (assignment_expression "*(code **)(puVar6 + -4) = pcVar35" (pointer_expression "*(code **)(puVar6 + -4)" * (cast_expression "(code **)(puVar6 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -4)" ( (binary_expression "puVar6 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0xc) = pbVar28;" (assignment_expression "*(byte **)(puVar6 + -0xc) = pbVar28" (pointer_expression "*(byte **)(puVar6 + -0xc)" * (cast_expression "(byte **)(puVar6 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar6 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar6 + -0x10)" * (cast_expression "(byte **)(puVar6 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar6 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar6 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar6 + -0x14)" * (cast_expression "(int **)(puVar6 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x18) = pbVar25;" (assignment_expression "*(byte **)(puVar6 + -0x18) = pbVar25" (pointer_expression "*(byte **)(puVar6 + -0x18)" * (cast_expression "(byte **)(puVar6 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x18)" ( (binary_expression "puVar6 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar6 + -0x20) = puVar3;" (assignment_expression "*(undefined4 **)(puVar6 + -0x20) = puVar3" (pointer_expression "*(undefined4 **)(puVar6 + -0x20)" * (cast_expression "(undefined4 **)(puVar6 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x20)" ( (binary_expression "puVar6 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar6 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar6 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar6 + -0x24)" * (cast_expression "(uint *)(puVar6 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x24)" ( (binary_expression "puVar6 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x28) = pbVar15;" (assignment_expression "*(byte **)(puVar6 + -0x28) = pbVar15" (pointer_expression "*(byte **)(puVar6 + -0x28)" * (cast_expression "(byte **)(puVar6 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x28)" ( (binary_expression "puVar6 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar6 + -0x144) = puVar8;" (assignment_expression "*(undefined4 **)(puVar6 + -0x144) = puVar8" (pointer_expression "*(undefined4 **)(puVar6 + -0x144)" * (cast_expression "(undefined4 **)(puVar6 + -0x144)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x144)" ( (binary_expression "puVar6 + -0x144" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x154) = pbVar13 + 1;" (assignment_expression "*(byte **)(puVar6 + -0x154) = pbVar13 + 1" (pointer_expression "*(byte **)(puVar6 + -0x154)" * (cast_expression "(byte **)(puVar6 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x154)" ( (binary_expression "puVar6 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "pbVar23 = (byte *)(uint)*pbVar13;" (assignment_expression "pbVar23 = (byte *)(uint)*pbVar13" identifier = (binary_expression "(byte *)(uint)*pbVar13" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x2c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar6 + -0x2c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar6 + -0x2c)" * (cast_expression "(undefined4 *)(puVar6 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x2c)" ( (binary_expression "puVar6 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "iVar12 = *(int *)(pcVar34 + 0x30cbc);" (assignment_expression "iVar12 = *(int *)(pcVar34 + 0x30cbc)" identifier = (pointer_expression "*(int *)(pcVar34 + 0x30cbc)" * (cast_expression "(int *)(pcVar34 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x30cbc)" ( (binary_expression "pcVar34 + 0x30cbc" identifier + number_literal) ))))) ;) (expression_statement "pbVar28 = pbVar16;" (assignment_expression "pbVar28 = pbVar16" identifier = identifier) ;) (expression_statement "pbVar33 = pbVar32;" (assignment_expression "pbVar33 = pbVar32" identifier = identifier) ;) (if_statement "if (pbVar23 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar6 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar15 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar6 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);\n    *(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;\n    *(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;\n    *(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;\n    pbVar25 = pbVar13;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    } while (pbVar23 != (byte *)0x0);\n  }" if (parenthesized_expression "(pbVar23 != (byte *)0x0)" ( (binary_expression "pbVar23 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = *(uint *)(puVar6 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar15 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar6 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);\n    *(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;\n    *(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;\n    *(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;\n    pbVar25 = pbVar13;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    } while (pbVar23 != (byte *)0x0);\n  }" { (expression_statement "uVar2 = *(uint *)(puVar6 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar6 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar6 + 0x10)" * (cast_expression "(uint *)(puVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" identifier = (binary_expression "uVar2 & 2" identifier & number_literal)) ;) (expression_statement "pbVar15 = (byte *)(uVar2 & 0x10);" (assignment_expression "pbVar15 = (byte *)(uVar2 & 0x10)" identifier = (cast_expression "(byte *)(uVar2 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar6 + -0x140) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar6 + -0x140) = uVar2 & 5" (pointer_expression "*(uint *)(puVar6 + -0x140)" * (cast_expression "(uint *)(puVar6 + -0x140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x140)" ( (binary_expression "puVar6 + -0x140" identifier + number_literal) )))) = (binary_expression "uVar2 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar6 + -0x148) = *(undefined4 *)(pcVar34 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar6 + -0x148)" * (cast_expression "(undefined4 *)(puVar6 + -0x148)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x148)" ( (binary_expression "puVar6 + -0x148" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(pcVar34 + 0x30b08)" * (cast_expression "(undefined4 *)(pcVar34 + 0x30b08)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x30b08)" ( (binary_expression "pcVar34 + 0x30b08" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar6 + -0x14c) = iVar12 + -0x7660;" (assignment_expression "*(int *)(puVar6 + -0x14c) = iVar12 + -0x7660" (pointer_expression "*(int *)(puVar6 + -0x14c)" * (cast_expression "(int *)(puVar6 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14c)" ( (binary_expression "puVar6 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar12 + -0x7660" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar6 + -0x138) = *(int *)(pcVar34 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar6 + -0x138)" * (cast_expression "(int *)(puVar6 + -0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x138)" ( (binary_expression "puVar6 + -0x138" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar34 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(pcVar34 + 0x30d80)" * (cast_expression "(int *)(pcVar34 + 0x30d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x30d80)" ( (binary_expression "pcVar34 + 0x30d80" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar6 + -0x13c) = *(int *)(pcVar34 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar6 + -0x13c)" * (cast_expression "(int *)(puVar6 + -0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x13c)" ( (binary_expression "puVar6 + -0x13c" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar34 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(pcVar34 + 0x30cbc)" * (cast_expression "(int *)(pcVar34 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar34 + 0x30cbc)" ( (binary_expression "pcVar34 + 0x30cbc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "pbVar25 = pbVar13;" (assignment_expression "pbVar25 = pbVar13" identifier = identifier) ;) (expression_statement "unaff_s6 = (byte *)string_end;" (assignment_expression "unaff_s6 = (byte *)string_end" identifier = (cast_expression "(byte *)string_end" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    } while (pbVar23 != (byte *)0x0);" do (compound_statement "{\n      pbVar13 = pbVar23;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }\n      if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }\n      uVar2 = 1;\n      pbVar23 = pbVar13;\n      if (pbVar33 == pbVar16) goto LAB_0002a8e4;\n      pbVar23 = (byte *)(uint)*pbVar33;\n      if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar13;\n      if (pbVar23 != pbVar13) goto LAB_0002a8e4;\n      pbVar25 = *(byte **)(puVar6 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar23 = (byte *)(uint)*pbVar25;\n      pbVar33 = pbVar33 + 1;\n      *(byte **)(puVar6 + -0x154) = pbVar25 + 1;\n    }" { (expression_statement "pbVar13 = pbVar23;" (assignment_expression "pbVar13 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }" if (parenthesized_expression "(pbVar15 != (byte *)0x0)" ( (binary_expression "pbVar15 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);\n      }" { (expression_statement "piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();" (assignment_expression "piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar30 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar30 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar30 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar30 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar30 + -0x7cdc)" * (cast_expression "(code **)(pcVar30 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + -0x7cdc)" ( (binary_expression "pcVar30 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar30 = *(code **)(puVar6 + -0x160);" (assignment_expression "pcVar30 = *(code **)(puVar6 + -0x160)" identifier = (pointer_expression "*(code **)(puVar6 + -0x160)" * (cast_expression "(code **)(puVar6 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x160)" ( (binary_expression "puVar6 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3);" (assignment_expression "pbVar13 = (byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3)" identifier = (binary_expression "(byte *)(uint)*(byte *)(*piVar24 + (int)pbVar23 * 4 + 3)" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*piVar24 + (int)pbVar23 * 4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar24 + (int)pbVar23 * 4 + 3)" ( (binary_expression "*piVar24 + (int)pbVar23 * 4 + 3" (binary_expression "*piVar24 + (int)pbVar23 * 4" (pointer_expression "*piVar24" * identifier) + (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))) ;) })) (if_statement "if (((uint)(pbVar13 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }" if (parenthesized_expression "(((uint)(pbVar13 + -0x21) & 0xff) < 0x3c)" ( (binary_expression "((uint)(pbVar13 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar13 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar13 + -0x21) & 0xff" (call_expression "(uint)(pbVar13 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + -0x21)" ( (binary_expression "pbVar13 + -0x21" identifier + number_literal) ))) & number_literal) )) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();\n        return iVar12;\n      }" { comment comment (expression_statement "iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))();" (assignment_expression "iVar12 = (*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))()" identifier = (call_expression "(*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)))" ( (pointer_expression "*(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4))" * (parenthesized_expression "(pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4))" ( (binary_expression "pcVar30 +\n                   *(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)" * (cast_expression "(int *)(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4)" ( (binary_expression "*(int *)(puVar6 + -0x14c) + ((uint)(pbVar13 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar6 + -0x14c)" * (cast_expression "(int *)(puVar6 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14c)" ( (binary_expression "puVar6 + -0x14c" identifier + number_literal) )))) + (binary_expression "((uint)(pbVar13 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar13 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar13 + -0x21) & 0xff" (call_expression "(uint)(pbVar13 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar13 + -0x21)" ( (binary_expression "pbVar13 + -0x21" identifier + number_literal) ))) & number_literal) )) * number_literal)) ))))) ))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar12;" return identifier ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "pbVar23 = pbVar13;" (assignment_expression "pbVar23 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar33 == pbVar16) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar33 == pbVar16)" ( (binary_expression "pbVar33 == pbVar16" identifier == identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar23 = (byte *)(uint)*pbVar33;" (assignment_expression "pbVar23 = (byte *)(uint)*pbVar33" identifier = (binary_expression "(byte *)(uint)*pbVar33" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if (pbVar15 != (byte *)0x0) {\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }" if (parenthesized_expression "(pbVar15 != (byte *)0x0)" ( (binary_expression "pbVar15 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();\n        pcVar30 = *(code **)(puVar6 + -0x160);\n        pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);\n      }" { (expression_statement "piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))();" (assignment_expression "piVar24 = (int *)(**(code **)(pcVar30 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar30 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar30 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar30 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar30 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar30 + -0x7cdc)" * (cast_expression "(code **)(pcVar30 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + -0x7cdc)" ( (binary_expression "pcVar30 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar30 = *(code **)(puVar6 + -0x160);" (assignment_expression "pcVar30 = *(code **)(puVar6 + -0x160)" identifier = (pointer_expression "*(code **)(puVar6 + -0x160)" * (cast_expression "(code **)(puVar6 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x160)" ( (binary_expression "puVar6 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4);" (assignment_expression "pbVar23 = *(byte **)(*piVar24 + (int)pbVar23 * 4)" identifier = (pointer_expression "*(byte **)(*piVar24 + (int)pbVar23 * 4)" * (cast_expression "(byte **)(*piVar24 + (int)pbVar23 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar24 + (int)pbVar23 * 4)" ( (binary_expression "*piVar24 + (int)pbVar23 * 4" (pointer_expression "*piVar24" * identifier) + (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = pbVar13;" (assignment_expression "unaff_s6 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar23 != pbVar13) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar23 != pbVar13)" ( (binary_expression "pbVar23 != pbVar13" identifier != identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar25 = *(byte **)(puVar6 + -0x154);" (assignment_expression "pbVar25 = *(byte **)(puVar6 + -0x154)" identifier = (pointer_expression "*(byte **)(puVar6 + -0x154)" * (cast_expression "(byte **)(puVar6 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x154)" ( (binary_expression "puVar6 + -0x154" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar23 = (byte *)(uint)*pbVar25;" (assignment_expression "pbVar23 = (byte *)(uint)*pbVar25" identifier = (binary_expression "(byte *)(uint)*pbVar25" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar33 = pbVar33 + 1;" (assignment_expression "pbVar33 = pbVar33 + 1" identifier = (binary_expression "pbVar33 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar6 + -0x154) = pbVar25 + 1;" (assignment_expression "*(byte **)(puVar6 + -0x154) = pbVar25 + 1" (pointer_expression "*(byte **)(puVar6 + -0x154)" * (cast_expression "(byte **)(puVar6 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x154)" ( (binary_expression "puVar6 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar23 != (byte *)0x0)" ( (binary_expression "pbVar23 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (pbVar33 != pbVar16) {\n    pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);\n    if (pbVar25 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar33 != pbVar16)" ( (binary_expression "pbVar33 != pbVar16" identifier != identifier) )) (compound_statement "{\n    pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);\n    if (pbVar25 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }\n  }" { (expression_statement "pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8);" (assignment_expression "pbVar25 = (byte *)(*(uint *)(puVar6 + 0x10) & 8)" identifier = (cast_expression "(byte *)(*(uint *)(puVar6 + 0x10) & 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar6 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar6 + 0x10) & 8" (pointer_expression "*(uint *)(puVar6 + 0x10)" * (cast_expression "(uint *)(puVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (pbVar25 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }" if (parenthesized_expression "(pbVar25 == (byte *)0x0)" ( (binary_expression "pbVar25 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar2 = 1;\n    }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }" else (compound_statement "{\n      uVar2 = (uint)(*pbVar33 != 0x2f);\n    }" { (expression_statement "uVar2 = (uint)(*pbVar33 != 0x2f);" (assignment_expression "uVar2 = (uint)(*pbVar33 != 0x2f)" identifier = (call_expression "(uint)(*pbVar33 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar33 != 0x2f)" ( (binary_expression "*pbVar33 != 0x2f" (pointer_expression "*pbVar33" * identifier) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_0002a8e4:\n  iVar4 = *(int *)(puVar6 + -0x2c);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar6 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar6 + -0x2c)" * (cast_expression "(int *)(puVar6 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x2c)" ( (binary_expression "puVar6 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 == **(int **)(puVar6 + -0x144)) {\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 == **(int **)(puVar6 + -0x144))" ( (binary_expression "iVar4 == **(int **)(puVar6 + -0x144)" identifier == (pointer_expression "**(int **)(puVar6 + -0x144)" * (pointer_expression "*(int **)(puVar6 + -0x144)" * (cast_expression "(int **)(puVar6 + -0x144)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x144)" ( (binary_expression "puVar6 + -0x144" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar34 = *(code **)(pcVar30 + -0x7b8c);" (assignment_expression "pcVar34 = *(code **)(pcVar30 + -0x7b8c)" identifier = (pointer_expression "*(code **)(pcVar30 + -0x7b8c)" * (cast_expression "(code **)(pcVar30 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + -0x7b8c)" ( (binary_expression "pcVar30 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar35 = rpl_fnmatch;" (assignment_expression "pcVar35 = rpl_fnmatch" identifier = identifier) ;) (expression_statement "(*pcVar34)();" (call_expression "(*pcVar34)()" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar30 = *(code **)(pcVar34 + 0x302e0);" (assignment_expression "pcVar30 = *(code **)(pcVar34 + 0x302e0)" identifier = (pointer_expression "*(code **)(pcVar34 + 0x302e0)" * (cast_expression "(code **)(pcVar34 + 0x302e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x302e0)" ( (binary_expression "pcVar34 + 0x302e0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar6 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar6 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar6 + -0x19c)" * (cast_expression "(uint *)(puVar6 + -0x19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x19c)" ( (binary_expression "puVar6 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar24 = *(int **)(pcVar34 + 0x30338);" (assignment_expression "piVar24 = *(int **)(pcVar34 + 0x30338)" identifier = (pointer_expression "*(int **)(pcVar34 + 0x30338)" * (cast_expression "(int **)(pcVar34 + 0x30338)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x30338)" ( (binary_expression "pcVar34 + 0x30338" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar6 + -0x180) = pbVar33;" (assignment_expression "*(byte **)(puVar6 + -0x180) = pbVar33" (pointer_expression "*(byte **)(puVar6 + -0x180)" * (cast_expression "(byte **)(puVar6 + -0x180)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x180)" ( (binary_expression "puVar6 + -0x180" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x198) = pbVar23;" (assignment_expression "*(byte **)(puVar6 + -0x198) = pbVar23" (pointer_expression "*(byte **)(puVar6 + -0x198)" * (cast_expression "(byte **)(puVar6 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x198)" ( (binary_expression "puVar6 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar6 + -0x1c8) = pcVar34 + 0x37e9c;" (assignment_expression "*(code **)(puVar6 + -0x1c8) = pcVar34 + 0x37e9c" (pointer_expression "*(code **)(puVar6 + -0x1c8)" * (cast_expression "(code **)(puVar6 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar34 + 0x37e9c" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar6 + -0x17c) = pcVar35;" (assignment_expression "*(code **)(puVar6 + -0x17c) = pcVar35" (pointer_expression "*(code **)(puVar6 + -0x17c)" * (cast_expression "(code **)(puVar6 + -0x17c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x17c)" ( (binary_expression "puVar6 + -0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar6 + -0x184) = iVar12;" (assignment_expression "*(int *)(puVar6 + -0x184) = iVar12" (pointer_expression "*(int *)(puVar6 + -0x184)" * (cast_expression "(int *)(puVar6 + -0x184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x184)" ( (binary_expression "puVar6 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar6 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar6 + -0x188)" * (cast_expression "(byte **)(puVar6 + -0x188)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x188)" ( (binary_expression "puVar6 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar6 + -0x18c) = unaff_s5;" (assignment_expression "*(int **)(puVar6 + -0x18c) = unaff_s5" (pointer_expression "*(int **)(puVar6 + -0x18c)" * (cast_expression "(int **)(puVar6 + -0x18c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x18c)" ( (binary_expression "puVar6 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -400) = pbVar25;" (assignment_expression "*(byte **)(puVar6 + -400) = pbVar25" (pointer_expression "*(byte **)(puVar6 + -400)" * (cast_expression "(byte **)(puVar6 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -400)" ( (binary_expression "puVar6 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x194) = pbVar16;" (assignment_expression "*(byte **)(puVar6 + -0x194) = pbVar16" (pointer_expression "*(byte **)(puVar6 + -0x194)" * (cast_expression "(byte **)(puVar6 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x194)" ( (binary_expression "puVar6 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x1a0) = pbVar15;" (assignment_expression "*(byte **)(puVar6 + -0x1a0) = pbVar15" (pointer_expression "*(byte **)(puVar6 + -0x1a0)" * (cast_expression "(byte **)(puVar6 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1a0)" ( (binary_expression "puVar6 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar6 + -0x1b4) = iVar4;" (assignment_expression "*(int *)(puVar6 + -0x1b4) = iVar4" (pointer_expression "*(int *)(puVar6 + -0x1b4)" * (cast_expression "(int *)(puVar6 + -0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1b4)" ( (binary_expression "puVar6 + -0x1b4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar6 + -0x1b8) = pbVar32;" (assignment_expression "*(byte **)(puVar6 + -0x1b8) = pbVar32" (pointer_expression "*(byte **)(puVar6 + -0x1b8)" * (cast_expression "(byte **)(puVar6 + -0x1b8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1b8)" ( (binary_expression "puVar6 + -0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar6 + -0x1a4) = *piVar24;" (assignment_expression "*(int *)(puVar6 + -0x1a4) = *piVar24" (pointer_expression "*(int *)(puVar6 + -0x1a4)" * (cast_expression "(int *)(puVar6 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1a4)" ( (binary_expression "puVar6 + -0x1a4" identifier + number_literal) )))) = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "iVar12 = (*pcVar30)();" (assignment_expression "iVar12 = (*pcVar30)()" identifier = (call_expression "(*pcVar30)()" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 != 1) {\n    puVar22 = puVar6 + -0x1ac;\n    pcVar34 = *(code **)(iVar4 + -0x7b28);\n    puVar26 = puVar6 + -0x1b4;\n    *(undefined4 *)(puVar6 + -0x1ac) = 0;\n    *(undefined4 *)(puVar6 + -0x1a8) = 0;\n    iVar12 = (*pcVar34)(0,puVar26,0,puVar22);\n    uVar2 = iVar12 + 1;\n    iVar4 = *(int *)(puVar6 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" if (parenthesized_expression "(iVar12 != 1)" ( (binary_expression "iVar12 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar22 = puVar6 + -0x1ac;\n    pcVar34 = *(code **)(iVar4 + -0x7b28);\n    puVar26 = puVar6 + -0x1b4;\n    *(undefined4 *)(puVar6 + -0x1ac) = 0;\n    *(undefined4 *)(puVar6 + -0x1a8) = 0;\n    iVar12 = (*pcVar34)(0,puVar26,0,puVar22);\n    uVar2 = iVar12 + 1;\n    iVar4 = *(int *)(puVar6 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" { (expression_statement "puVar22 = puVar6 + -0x1ac;" (assignment_expression "puVar22 = puVar6 + -0x1ac" identifier = (binary_expression "puVar6 + -0x1ac" identifier + number_literal)) ;) (expression_statement "pcVar34 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar34 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "puVar26 = puVar6 + -0x1b4;" (assignment_expression "puVar26 = puVar6 + -0x1b4" identifier = (binary_expression "puVar6 + -0x1b4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar6 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar6 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1ac)" ( (binary_expression "puVar6 + -0x1ac" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar6 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar6 + -0x1a8)" * (cast_expression "(undefined4 *)(puVar6 + -0x1a8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1a8)" ( (binary_expression "puVar6 + -0x1a8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = (*pcVar34)(0,puVar26,0,puVar22);" (assignment_expression "iVar12 = (*pcVar34)(0,puVar26,0,puVar22)" identifier = (call_expression "(*pcVar34)(0,puVar26,0,puVar22)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(0,puVar26,0,puVar22)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "uVar2 = iVar12 + 1;" (assignment_expression "uVar2 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) {\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar12 == 0) goto LAB_0002b570;\n      piVar27 = (int *)(puVar6 + -0x1b8);\n      string_00 = piVar27;\n      iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);\n      iVar14 = iVar12 + 1;\n      iVar4 = *(int *)(puVar6 + -0x1c8);\n      if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" { (expression_statement "iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22);" (assignment_expression "iVar12 = (**(code **)(iVar4 + -0x7b68))(puVar22)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar22)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" ( (pointer_expression "**(code **)(iVar4 + -0x7b68)" * (pointer_expression "*(code **)(iVar4 + -0x7b68)" * (cast_expression "(code **)(iVar4 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b68)" ( (binary_expression "iVar4 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar22)" ( identifier )))) ;) (expression_statement "uVar5 = 0x129;" (assignment_expression "uVar5 = 0x129" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar12 == 0) goto LAB_0002b570;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;)) (expression_statement "piVar27 = (int *)(puVar6 + -0x1b8);" (assignment_expression "piVar27 = (int *)(puVar6 + -0x1b8)" identifier = (cast_expression "(int *)(puVar6 + -0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1b8)" ( (binary_expression "puVar6 + -0x1b8" identifier + number_literal) )))) ;) (expression_statement "string_00 = piVar27;" (assignment_expression "string_00 = piVar27" identifier = identifier) ;) (expression_statement "iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22);" (assignment_expression "iVar12 = (**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b28))(0,piVar27,0,puVar22)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(0,piVar27,0,puVar22)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "iVar14 = iVar12 + 1;" (assignment_expression "iVar14 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar14 != 0) {\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar21 = uVar2 + iVar14;\n        if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }\nLAB_0002b490:\n        iVar12 = -1;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar4 = *(int *)(puVar6 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" { (expression_statement "iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22);" (assignment_expression "iVar20 = (**(code **)(iVar4 + -0x7b68))(puVar22)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar22)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" ( (pointer_expression "**(code **)(iVar4 + -0x7b68)" * (pointer_expression "*(code **)(iVar4 + -0x7b68)" * (cast_expression "(code **)(iVar4 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b68)" ( (binary_expression "iVar4 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar22)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar20 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" { (expression_statement "uVar5 = 0x12d;" (assignment_expression "uVar5 = 0x12d" identifier = number_literal) ;) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;) })) (expression_statement "uVar21 = uVar2 + iVar14;" (assignment_expression "uVar21 = uVar2 + iVar14" identifier = (binary_expression "uVar2 + iVar14" identifier + identifier)) ;) (if_statement "if ((uVar2 <= uVar21) && (uVar21 < 0x40000000)) {\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }" if (parenthesized_expression "((uVar2 <= uVar21) && (uVar21 < 0x40000000))" ( (binary_expression "(uVar2 <= uVar21) && (uVar21 < 0x40000000)" (parenthesized_expression "(uVar2 <= uVar21)" ( (binary_expression "uVar2 <= uVar21" identifier <= identifier) )) && (parenthesized_expression "(uVar21 < 0x40000000)" ( (binary_expression "uVar21 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n          if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar5 = 0x147;\nLAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);\n          return iVar12;\n        }" { (if_statement "if (uVar21 < 2000) {\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" if (parenthesized_expression "(uVar21 < 2000)" ( (binary_expression "uVar21 < 2000" identifier < number_literal) )) (compound_statement "{\n            iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);\n            string_00 = pattern_00 + uVar2;\n            (**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);\n            iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" { (expression_statement "iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar20 = -(uVar21 * 4 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar21 * 4 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar21 * 4 + 7 & 0xfffffff8)" ( (binary_expression "uVar21 * 4 + 7 & 0xfffffff8" (binary_expression "uVar21 * 4 + 7" (binary_expression "uVar21 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8);" (assignment_expression "pattern_00 = (wchar_t *)(puVar6 + iVar20 + -0x1c8)" identifier = (cast_expression "(wchar_t *)(puVar6 + iVar20 + -0x1c8)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + iVar20 + -0x1c8)" ( (binary_expression "puVar6 + iVar20 + -0x1c8" (binary_expression "puVar6 + iVar20" identifier + identifier) + number_literal) )))) ;) (expression_statement "string_00 = pattern_00 + uVar2;" (assignment_expression "string_00 = pattern_00 + uVar2" identifier = (binary_expression "pattern_00 + uVar2" identifier + identifier)) ;) (expression_statement "(**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22);" (call_expression "(**(code **)(iVar4 + -0x7b28))(pattern_00,puVar26,uVar2,puVar22)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(pattern_00,puVar26,uVar2,puVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);" (assignment_expression "iVar11 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22)" identifier = (call_expression "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22)" (parenthesized_expression "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar6 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar6 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar22)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 0) {\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n              (**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }" { (expression_statement "(**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22);" (call_expression "(**(code **)(iVar4 + -0x7b28))(string_00,piVar27,iVar14,puVar22)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(string_00,piVar27,iVar14,puVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28;" (assignment_expression "*(byte **)(puVar6 + iVar20 + -0x1d0) = pbVar28" (pointer_expression "*(byte **)(puVar6 + iVar20 + -0x1d0)" * (cast_expression "(byte **)(puVar6 + iVar20 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + iVar20 + -0x1d0)" ( (binary_expression "puVar6 + iVar20 + -0x1d0" (binary_expression "puVar6 + iVar20" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0));" (assignment_expression "iVar12 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0))" identifier = (call_expression "internal_fnwmatch(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0))" identifier (argument_list "(pattern_00,string_00,string_00 + iVar12,\n                                         SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + iVar20 + -0x1d0))" ( identifier , identifier , (binary_expression "string_00 + iVar12" identifier + identifier) , (call_expression "SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)((int)pbVar28 << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)((int)pbVar28 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar28 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar28 << 0x1d)" ( (binary_expression "(int)pbVar28 << 0x1d" (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , number_literal ))) , (pointer_expression "*(int *)(puVar6 + iVar20 + -0x1d0)" * (cast_expression "(int *)(puVar6 + iVar20 + -0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + iVar20 + -0x1d0)" ( (binary_expression "puVar6 + iVar20 + -0x1d0" (binary_expression "puVar6 + iVar20" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) }) (else_clause "else {\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" else (compound_statement "{\n            iVar20 = (**(code **)(iVar4 + -0x7be8))();\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 == 0) goto LAB_0002b490;\n            pcVar34 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar6 + -0x1bc) = iVar20;\n            string_00 = (int *)(iVar20 + uVar2 * 4);\n            (*pcVar34)(iVar20,puVar26,uVar2,puVar22);\n            iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);\n            iVar4 = *(int *)(puVar6 + -0x1c8);\n            if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" { (expression_statement "iVar20 = (**(code **)(iVar4 + -0x7be8))();" (assignment_expression "iVar20 = (**(code **)(iVar4 + -0x7be8))()" identifier = (call_expression "(**(code **)(iVar4 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7be8))" ( (pointer_expression "**(code **)(iVar4 + -0x7be8)" * (pointer_expression "*(code **)(iVar4 + -0x7be8)" * (cast_expression "(code **)(iVar4 + -0x7be8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7be8)" ( (binary_expression "iVar4 + -0x7be8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar20 == 0) goto LAB_0002b490;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b490;" goto statement_identifier ;)) (expression_statement "pcVar34 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar34 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar6 + -0x1bc) = iVar20;" (assignment_expression "*(int *)(puVar6 + -0x1bc) = iVar20" (pointer_expression "*(int *)(puVar6 + -0x1bc)" * (cast_expression "(int *)(puVar6 + -0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1bc)" ( (binary_expression "puVar6 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "string_00 = (int *)(iVar20 + uVar2 * 4);" (assignment_expression "string_00 = (int *)(iVar20 + uVar2 * 4)" identifier = (cast_expression "(int *)(iVar20 + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + uVar2 * 4)" ( (binary_expression "iVar20 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) ;) (expression_statement "(*pcVar34)(iVar20,puVar26,uVar2,puVar22);" (call_expression "(*pcVar34)(iVar20,puVar26,uVar2,puVar22)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(iVar20,puVar26,uVar2,puVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22);" (assignment_expression "iVar20 = (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22)" identifier = (call_expression "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))(puVar22)" (parenthesized_expression "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar6 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar6 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar22)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar20 != 0) {\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }" if (parenthesized_expression "(iVar20 != 0)" ( (binary_expression "iVar20 != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar34 = *(code **)(iVar4 + -0x7b28);\n              *(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);\n              (*pcVar34)(string_00,piVar27,iVar14,puVar22);\n              *(byte **)(puVar6 + -0x1d0) = pbVar28;\n              iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));\n              (**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));\n              iVar4 = *(int *)(puVar6 + -0x1c8);\n              goto LAB_0002b300;\n            }" { (expression_statement "pcVar34 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar34 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar6 + -0x1bc) = *(undefined4 *)(puVar6 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar6 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar6 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1bc)" ( (binary_expression "puVar6 + -0x1bc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar6 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar6 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1bc)" ( (binary_expression "puVar6 + -0x1bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar34)(string_00,piVar27,iVar14,puVar22);" (call_expression "(*pcVar34)(string_00,piVar27,iVar14,puVar22)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(string_00,piVar27,iVar14,puVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar6 + -0x1d0) = pbVar28;" (assignment_expression "*(byte **)(puVar6 + -0x1d0) = pbVar28" (pointer_expression "*(byte **)(puVar6 + -0x1d0)" * (cast_expression "(byte **)(puVar6 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1d0)" ( (binary_expression "puVar6 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0));" (assignment_expression "iVar12 = internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0))" identifier = (call_expression "internal_fnwmatch(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0))" identifier (argument_list "(*(wchar_t **)(puVar6 + -0x1bc),string_00,string_00 + iVar12\n                                         ,SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar6 + -0x1d0))" ( (pointer_expression "*(wchar_t **)(puVar6 + -0x1bc)" * (cast_expression "(wchar_t **)(puVar6 + -0x1bc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1bc)" ( (binary_expression "puVar6 + -0x1bc" identifier + number_literal) )))) , identifier , (binary_expression "string_00 + iVar12" identifier + identifier) , (call_expression "SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)((int)pbVar28 << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)((int)pbVar28 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar28 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar28 << 0x1d)" ( (binary_expression "(int)pbVar28 << 0x1d" (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , number_literal ))) , (pointer_expression "*(int *)(puVar6 + -0x1d0)" * (cast_expression "(int *)(puVar6 + -0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1d0)" ( (binary_expression "puVar6 + -0x1d0" identifier + number_literal) )))) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar6 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54))" ( (pointer_expression "**(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54)" * (pointer_expression "*(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54)" * (cast_expression "(code **)(*(int *)(puVar6 + -0x1c8) + -0x7b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar6 + -0x1c8) + -0x7b54)" ( (binary_expression "*(int *)(puVar6 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar6 + -0x1bc))" ( (pointer_expression "*(undefined4 *)(puVar6 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar6 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1bc)" ( (binary_expression "puVar6 + -0x1bc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) }))) (expression_statement "uVar5 = 0x147;" (assignment_expression "uVar5 = 0x147" identifier = number_literal) ;) (labeled_statement "LAB_0002b570:\n          iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);" statement_identifier : (expression_statement "iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558);" (assignment_expression "iVar12 = (**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                             (*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7864,\n                              *(int *)(iVar4 + -0x7e24) + -0x7870,uVar5,\n                              *(int *)(iVar4 + -0x7e24) + -0x7558)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , identifier , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;)) (return_statement "return iVar12;" return identifier ;) })) (labeled_statement "LAB_0002b490:\n        iVar12 = -1;" statement_identifier : (expression_statement "iVar12 = -1;" (assignment_expression "iVar12 = -1" identifier = number_literal) ;)) (expression_statement "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();" (assignment_expression "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar4 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7c3c))" ( (pointer_expression "**(code **)(iVar4 + -0x7c3c)" * (pointer_expression "*(code **)(iVar4 + -0x7c3c)" * (cast_expression "(code **)(iVar4 + -0x7c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7c3c)" ( (binary_expression "iVar4 + -0x7c3c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (expression_statement "*puVar3 = 0xc;" (assignment_expression "*puVar3 = 0xc" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) })) (expression_statement "string_00 = *(int **)(puVar6 + -0x1b8);" (assignment_expression "string_00 = *(int **)(puVar6 + -0x1b8)" identifier = (pointer_expression "*(int **)(puVar6 + -0x1b8)" * (cast_expression "(int **)(puVar6 + -0x1b8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1b8)" ( (binary_expression "puVar6 + -0x1b8" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = (**(code **)(iVar4 + -0x7c0c))(string_00);" (assignment_expression "iVar12 = (**(code **)(iVar4 + -0x7c0c))(string_00)" identifier = (call_expression "(**(code **)(iVar4 + -0x7c0c))(string_00)" (parenthesized_expression "(**(code **)(iVar4 + -0x7c0c))" ( (pointer_expression "**(code **)(iVar4 + -0x7c0c)" * (pointer_expression "*(code **)(iVar4 + -0x7c0c)" * (cast_expression "(code **)(iVar4 + -0x7c0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7c0c)" ( (binary_expression "iVar4 + -0x7c0c" identifier + number_literal) ))))) )) (argument_list "(string_00)" ( identifier )))) ;) (expression_statement "*(byte **)(puVar6 + -0x1d0) = pbVar28;" (assignment_expression "*(byte **)(puVar6 + -0x1d0) = pbVar28" (pointer_expression "*(byte **)(puVar6 + -0x1d0)" * (cast_expression "(byte **)(puVar6 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1d0)" ( (binary_expression "puVar6 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar12 = internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))\n  ;" (assignment_expression "iVar12 = internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))" identifier = (call_expression "internal_fnmatch(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))" identifier (argument_list "(*(char **)(puVar6 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar12),\n                            SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0),*(int *)(puVar6 + -0x1d0))" ( (pointer_expression "*(char **)(puVar6 + -0x1b4)" * (cast_expression "(char **)(puVar6 + -0x1b4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x1b4)" ( (binary_expression "puVar6 + -0x1b4" identifier + number_literal) )))) , (cast_expression "(char *)string_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)((int)string_00 + iVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)string_00 + iVar12)" ( (binary_expression "(int)string_00 + iVar12" (cast_expression "(int)string_00" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (call_expression "SUB41((uint)((int)pbVar28 << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)((int)pbVar28 << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)((int)pbVar28 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar28 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar28 << 0x1d)" ( (binary_expression "(int)pbVar28 << 0x1d" (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , number_literal ))) , (pointer_expression "*(int *)(puVar6 + -0x1d0)" * (cast_expression "(int *)(puVar6 + -0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1d0)" ( (binary_expression "puVar6 + -0x1d0" identifier + number_literal) )))) )))) ;) (expression_statement "iVar4 = *(int *)(puVar6 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar6 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1c8)" * (cast_expression "(int *)(puVar6 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1c8)" ( (binary_expression "puVar6 + -0x1c8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002b300:\n  iVar14 = *(int *)(puVar6 + -0x1a4);" statement_identifier : (expression_statement "iVar14 = *(int *)(puVar6 + -0x1a4);" (assignment_expression "iVar14 = *(int *)(puVar6 + -0x1a4)" identifier = (pointer_expression "*(int *)(puVar6 + -0x1a4)" * (cast_expression "(int *)(puVar6 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1a4)" ( (binary_expression "puVar6 + -0x1a4" identifier + number_literal) ))))) ;)) (if_statement "if (iVar14 != *piVar24) {\n    (**(code **)(iVar4 + -0x7b8c))();\n    iVar12 = string_00[8];\n    iVar4 = *string_00;\n    uVar2 = (uint)(iVar12 < iVar4);\n    uVar21 = string_00[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }\n    string_00[8] = iVar4;\n    string_00[7] = (iVar4 - iVar12) + uVar21;\n    return uVar2;\n  }" if (parenthesized_expression "(iVar14 != *piVar24)" ( (binary_expression "iVar14 != *piVar24" identifier != (pointer_expression "*piVar24" * identifier)) )) (compound_statement "{\n    (**(code **)(iVar4 + -0x7b8c))();\n    iVar12 = string_00[8];\n    iVar4 = *string_00;\n    uVar2 = (uint)(iVar12 < iVar4);\n    uVar21 = string_00[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }\n    string_00[8] = iVar4;\n    string_00[7] = (iVar4 - iVar12) + uVar21;\n    return uVar2;\n  }" { (expression_statement "(**(code **)(iVar4 + -0x7b8c))();" (call_expression "(**(code **)(iVar4 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7b8c))" ( (pointer_expression "**(code **)(iVar4 + -0x7b8c)" * (pointer_expression "*(code **)(iVar4 + -0x7b8c)" * (cast_expression "(code **)(iVar4 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b8c)" ( (binary_expression "iVar4 + -0x7b8c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar12 = string_00[8];" (assignment_expression "iVar12 = string_00[8]" identifier = (subscript_expression "string_00[8]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = *string_00;" (assignment_expression "iVar4 = *string_00" identifier = (pointer_expression "*string_00" * identifier)) ;) (expression_statement "uVar2 = (uint)(iVar12 < iVar4);" (assignment_expression "uVar2 = (uint)(iVar12 < iVar4)" identifier = (call_expression "(uint)(iVar12 < iVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar12 < iVar4)" ( (binary_expression "iVar12 < iVar4" identifier < identifier) )))) ;) (expression_statement "uVar21 = string_00[7];" (assignment_expression "uVar21 = string_00[7]" identifier = (subscript_expression "string_00[7]" identifier [ number_literal ])) ;) (if_statement "if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)) {\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }" if (parenthesized_expression "((uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0))" ( (binary_expression "(uVar2 != 0) && (uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0)" ( (comma_expression "uVar2 = (uint)((int)uVar21 < iVar12), uVar2 != 0" (assignment_expression "uVar2 = (uint)((int)uVar21 < iVar12)" identifier = (call_expression "(uint)((int)uVar21 < iVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar21 < iVar12)" ( (binary_expression "(int)uVar21 < iVar12" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) , (binary_expression "uVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      iVar11 = iVar4 - iVar12;\n      uVar9 = uVar21;\n      iVar20 = iVar4;\n      do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));\n    }" { (expression_statement "iVar11 = iVar4 - iVar12;" (assignment_expression "iVar11 = iVar4 - iVar12" identifier = (binary_expression "iVar4 - iVar12" identifier - identifier)) ;) (expression_statement "uVar9 = uVar21;" (assignment_expression "uVar9 = uVar21" identifier = identifier) ;) (expression_statement "iVar20 = iVar4;" (assignment_expression "iVar20 = iVar4" identifier = identifier) ;) (do_statement "do {\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      } while ((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12));" do (compound_statement "{\n        iVar17 = iVar12 - uVar9;\n        uVar2 = iVar11 + uVar9;\n        if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }\n      }" { (expression_statement "iVar17 = iVar12 - uVar9;" (assignment_expression "iVar17 = iVar12 - uVar9" identifier = (binary_expression "iVar12 - uVar9" identifier - identifier)) ;) (expression_statement "uVar2 = iVar11 + uVar9;" (assignment_expression "uVar2 = iVar11 + uVar9" identifier = (binary_expression "iVar11 + uVar9" identifier + identifier)) ;) (if_statement "if (iVar17 < iVar11) {\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }" if (parenthesized_expression "(iVar17 < iVar11)" ( (binary_expression "iVar17 < iVar11" identifier < identifier) )) (compound_statement "{\n          iVar20 = iVar20 - iVar17;\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);\n        }" { (expression_statement "iVar20 = iVar20 - iVar17;" (assignment_expression "iVar20 = iVar20 - iVar17" identifier = (binary_expression "iVar20 - iVar17" identifier - identifier)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar14 + uVar9 * 4)" identifier = (cast_expression "(undefined4 *)(iVar14 + uVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + uVar9 * 4)" ( (binary_expression "iVar14 + uVar9 * 4" identifier + (binary_expression "uVar9 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar8 = (undefined4 *)(iVar14 + iVar20 * 4);" (assignment_expression "puVar8 = (undefined4 *)(iVar14 + iVar20 * 4)" identifier = (cast_expression "(undefined4 *)(iVar14 + iVar20 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar20 * 4)" ( (binary_expression "iVar14 + iVar20 * 4" identifier + (binary_expression "iVar20 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while ((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19);" do (compound_statement "{\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            uVar2 = uVar9;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          }" { (expression_statement "puVar19 = puVar3 + 1;" (assignment_expression "puVar19 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar8;" (assignment_expression "*puVar3 = *puVar8" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*puVar8 = uVar5;" (assignment_expression "*puVar8 = uVar5" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "uVar2 = uVar9;" (assignment_expression "uVar2 = uVar9" identifier = identifier) ;) (expression_statement "puVar3 = puVar19;" (assignment_expression "puVar3 = puVar19" identifier = identifier) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19)" ( (binary_expression "(undefined4 *)(iVar14 + (iVar17 + uVar9) * 4) != puVar19" (cast_expression "(undefined4 *)(iVar14 + (iVar17 + uVar9) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + (iVar17 + uVar9) * 4)" ( (binary_expression "iVar14 + (iVar17 + uVar9) * 4" identifier + (binary_expression "(iVar17 + uVar9) * 4" (parenthesized_expression "(iVar17 + uVar9)" ( (binary_expression "iVar17 + uVar9" identifier + identifier) )) * number_literal)) ))) != identifier) )) ;) }) (else_clause "else {\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }" else (compound_statement "{\n          puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);\n          puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);\n          do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(iVar14 + uVar9 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar14 + uVar9 * 4)" identifier = (cast_expression "(undefined4 *)(iVar14 + uVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + uVar9 * 4)" ( (binary_expression "iVar14 + uVar9 * 4" identifier + (binary_expression "uVar9 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar8 = (undefined4 *)(iVar14 + iVar12 * 4);" (assignment_expression "puVar8 = (undefined4 *)(iVar14 + iVar12 * 4)" identifier = (cast_expression "(undefined4 *)(iVar14 + iVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar12 * 4)" ( (binary_expression "iVar14 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          } while (puVar19 != (undefined4 *)(iVar14 + uVar2 * 4));" do (compound_statement "{\n            puVar19 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar8;\n            *puVar8 = uVar5;\n            puVar3 = puVar19;\n            puVar8 = puVar8 + 1;\n          }" { (expression_statement "puVar19 = puVar3 + 1;" (assignment_expression "puVar19 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar8;" (assignment_expression "*puVar3 = *puVar8" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*puVar8 = uVar5;" (assignment_expression "*puVar8 = uVar5" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar19;" (assignment_expression "puVar3 = puVar19" identifier = identifier) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar19 != (undefined4 *)(iVar14 + uVar2 * 4))" ( (binary_expression "puVar19 != (undefined4 *)(iVar14 + uVar2 * 4)" identifier != (cast_expression "(undefined4 *)(iVar14 + uVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + uVar2 * 4)" ( (binary_expression "iVar14 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) )) ;) }))) }) while (parenthesized_expression "((iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12))" ( (binary_expression "(iVar12 < iVar20) && (iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12)" (parenthesized_expression "(iVar12 < iVar20)" ( (binary_expression "iVar12 < iVar20" identifier < identifier) )) && (parenthesized_expression "(iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12)" ( (comma_expression "iVar11 = iVar20 - iVar12, uVar9 = uVar2, (int)uVar2 < iVar12" (assignment_expression "iVar11 = iVar20 - iVar12" identifier = (binary_expression "iVar20 - iVar12" identifier - identifier)) , (comma_expression "uVar9 = uVar2, (int)uVar2 < iVar12" (assignment_expression "uVar9 = uVar2" identifier = identifier) , (binary_expression "(int)uVar2 < iVar12" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier))) ))) )) ;) })) (expression_statement "string_00[8] = iVar4;" (assignment_expression "string_00[8] = iVar4" (subscript_expression "string_00[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "string_00[7] = (iVar4 - iVar12) + uVar21;" (assignment_expression "string_00[7] = (iVar4 - iVar12) + uVar21" (subscript_expression "string_00[7]" identifier [ number_literal ]) = (binary_expression "(iVar4 - iVar12) + uVar21" (parenthesized_expression "(iVar4 - iVar12)" ( (binary_expression "iVar4 - iVar12" identifier - identifier) )) + identifier)) ;) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return iVar12;" return identifier ;) })))
(translation_unit "uint FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}\n\n" (function_definition "uint FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)" identifier (parameter_list "(int param_1,byte *param_2,byte *param_3,byte *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "undefined *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "int *unaff_s4;" primitive_type (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "undefined1 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "byte *pbVar27;" type_identifier (pointer_declarator "*pbVar27" * identifier) ;) (declaration "undefined *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "byte *pbVar34;" type_identifier (pointer_declarator "*pbVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "code *pcVar36;" type_identifier (pointer_declarator "*pcVar36" * identifier) ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0005b58c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0005b58c" identifier = identifier) ;) (expression_statement "puVar20 = auStack_68;" (assignment_expression "puVar20 = auStack_68" identifier = identifier) ;) (expression_statement "pbVar26 = param_2 + 4;" (assignment_expression "pbVar26 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_0005b58c" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_0005b58c" * (cast_expression "(int **)PTR___stack_chk_guard_0005b58c" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" identifier = identifier) ;) (expression_statement "local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);" (assignment_expression "local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2)" identifier = (call_expression "(*(code *)PTR_wcslen_0005b4a8)(param_2)" (parenthesized_expression "(*(code *)PTR_wcslen_0005b4a8)" ( (pointer_expression "*(code *)PTR_wcslen_0005b4a8" * (cast_expression "(code *)PTR_wcslen_0005b4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "puVar28 = PTR_DAT_0005b118;" (assignment_expression "puVar28 = PTR_DAT_0005b118" identifier = identifier) ;) (expression_statement "iVar10 = *(int *)(param_2 + 4);" (assignment_expression "iVar10 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }" { (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = &local_30;" (assignment_expression "local_34 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc" identifier = (binary_expression "PTR_DAT_0005b2cc + -0x78dc" identifier + number_literal)) ;) (expression_statement "unaff_s1 = (uint)(param_1 - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(param_1 - 0x3fU < 2)" identifier = (call_expression "(uint)(param_1 - 0x3fU < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 - 0x3fU < 2)" ( (binary_expression "param_1 - 0x3fU < 2" (binary_expression "param_1 - 0x3fU" identifier - number_literal) < number_literal) )))) ;) (expression_statement "puVar20 = auStack_68;" (assignment_expression "puVar20 = auStack_68" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar26;" (assignment_expression "unaff_s6 = pbVar26" identifier = identifier) ;) (do_statement "do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);" do (compound_statement "{\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    }" { (while_statement "while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }" while (parenthesized_expression "(unaff_s4 = (int *)puVar28, iVar10 != 0x5b)" ( (comma_expression "unaff_s4 = (int *)puVar28, iVar10 != 0x5b" (assignment_expression "unaff_s4 = (int *)puVar28" identifier = (cast_expression "(int *)puVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "iVar10 != 0x5b" identifier != number_literal)) )) (compound_statement "{\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }" { (expression_statement "pbVar12 = &DAT_c0000601;" (assignment_expression "pbVar12 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar2 = iVar10 - 0x21;" (assignment_expression "uVar2 = iVar10 - 0x21" identifier = (binary_expression "iVar10 - 0x21" identifier - number_literal)) ;) (expression_statement "param_3 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "param_3 = (byte *)(uint)(uVar2 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar2 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < 0x20)" ( (binary_expression "uVar2 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }" if (parenthesized_expression "(param_3 != (byte *)0x0)" ( (binary_expression "param_3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }" { (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }" { (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0x28) goto LAB_00028d14;" if (parenthesized_expression "(iVar10 != 0x28)" ( (binary_expression "iVar10 != 0x28" identifier != number_literal) )) (goto_statement "goto LAB_00028d14;" goto statement_identifier ;)) (expression_statement "param_3 = (byte *)0x1;" (assignment_expression "param_3 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar10 != 0x29) goto LAB_00028e9c;" if (parenthesized_expression "(iVar10 != 0x29)" ( (binary_expression "iVar10 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_00028e9c;" goto statement_identifier ;)) (if_statement "if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }" if (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }" { (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" identifier = (cast_expression "(int *)((int)unaff_s5 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + -1)" ( (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (labeled_statement "LAB_00028d14:\n            pbVar26 = pbVar26 + 4;" statement_identifier : (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;)) (goto_statement "goto joined_r0x00028e80;" goto statement_identifier ;) })) (if_statement "if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" if (parenthesized_expression "(1 < param_1 - 0x3fU)" ( (binary_expression "1 < param_1 - 0x3fU" number_literal < (binary_expression "param_1 - 0x3fU" identifier - number_literal)) )) (compound_statement "{\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" { (expression_statement "local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1" identifier = (binary_expression "((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal)) ;) })) (if_statement "if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }" if (parenthesized_expression "((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c))" ( (binary_expression "(local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)" (parenthesized_expression "(local_44 < 0x40000000)" ( (binary_expression "local_44 < 0x40000000" identifier < number_literal) )) && (parenthesized_expression "(local_44 * 4 < 0x1f3c)" ( (binary_expression "local_44 * 4 < 0x1f3c" (binary_expression "local_44 * 4" identifier * number_literal) < number_literal) ))) )) (compound_statement "{\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }" { (expression_statement "iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-(local_44 * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "(local_44 * 4 + 0xb & 0xfffffff8)" ( (binary_expression "local_44 * 4 + 0xb & 0xfffffff8" (binary_expression "local_44 * 4 + 0xb" (binary_expression "local_44 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);" (assignment_expression "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" identifier = (cast_expression "(undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" ( (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" * (cast_expression "(code *)PTR_wmempcpy_0005b4a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "puVar20 + iVar10 + 0x1c" (binary_expression "puVar20 + iVar10" identifier + identifier) + number_literal) , identifier , (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + iVar10 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar20 + iVar10 + 0x18)" * (cast_expression "(undefined4 *)(puVar20 + iVar10 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar10 + 0x18)" ( (binary_expression "puVar20 + iVar10 + 0x18" (binary_expression "puVar20 + iVar10" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*local_34 = (int)(puVar20 + iVar10 + 0x18);" (assignment_expression "*local_34 = (int)(puVar20 + iVar10 + 0x18)" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)(puVar20 + iVar10 + 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar20 + iVar10 + 0x18)" ( (binary_expression "puVar20 + iVar10 + 0x18" (binary_expression "puVar20 + iVar10" identifier + identifier) + number_literal) )))) ;) (if_statement "if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" { (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x78bc" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" if (parenthesized_expression "(*(int *)(pbVar26 + -4) != 0x29)" ( (binary_expression "*(int *)(pbVar26 + -4) != 0x29" (pointer_expression "*(int *)(pbVar26 + -4)" * (cast_expression "(int *)(pbVar26 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + -4)" ( (binary_expression "pbVar26 + -4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" { (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x78ac" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" if (parenthesized_expression "(0x1f < param_1 - 0x21U)" ( (binary_expression "0x1f < param_1 - 0x21U" number_literal < (binary_expression "param_1 - 0x21U" identifier - number_literal)) )) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" { (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" ( (pointer_expression "*(code *)PTR___assert_fail_0005b410" * (cast_expression "(code *)PTR___assert_fail_0005b410" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" ( (binary_expression "PTR_DAT_0005b2cc + -0x7898" identifier + number_literal) , (binary_expression "PTR_DAT_0005b2cc + -0x78cc" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0005b2cc + -0x7564" identifier + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();" (assignment_expression "uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" * (cast_expression "(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" ( (binary_expression "PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850" (binary_expression "PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4" identifier + (binary_expression "(param_1 - 0x21U) * 4" (parenthesized_expression "(param_1 - 0x21U)" ( (binary_expression "param_1 - 0x21U" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;) })) (if_statement "if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" if (parenthesized_expression "((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0))" ( (binary_expression "(iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)" (parenthesized_expression "(iVar10 == 0x7c)" ( (binary_expression "iVar10 == 0x7c" identifier == number_literal) )) && (parenthesized_expression "(unaff_s5 == (int *)0x0)" ( (binary_expression "unaff_s5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" { (expression_statement "uVar2 = local_44;" (assignment_expression "uVar2 = local_44" identifier = identifier) ;) (if_statement "if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" { (expression_statement "uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1" identifier = (binary_expression "((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal)) ;) })) (expression_statement "pbVar12 = (byte *)0x40000000;" (assignment_expression "pbVar12 = (byte *)0x40000000" identifier = (cast_expression "(byte *)0x40000000" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }" if (parenthesized_expression "((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c))" ( (binary_expression "(uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)" (parenthesized_expression "(uVar2 < 0x40000000)" ( (binary_expression "uVar2 < 0x40000000" identifier < number_literal) )) && (parenthesized_expression "(uVar2 * 4 < 0x1f3c)" ( (binary_expression "uVar2 * 4 < 0x1f3c" (binary_expression "uVar2 * 4" identifier * number_literal) < number_literal) ))) )) (compound_statement "{\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }" { (expression_statement "param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);" (assignment_expression "param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2)" identifier = (cast_expression "(byte *)((int)pbVar26 - (int)unaff_s6 >> 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" ( (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) ;) (expression_statement "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8)" identifier = (unary_expression "-(uVar2 * 4 + 0xb & 0xfffffff8)" - (parenthesized_expression "(uVar2 * 4 + 0xb & 0xfffffff8)" ( (binary_expression "uVar2 * 4 + 0xb & 0xfffffff8" (binary_expression "uVar2 * 4 + 0xb" (binary_expression "uVar2 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "pbVar33 = pbVar26 + 4;" (assignment_expression "pbVar33 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (expression_statement "piVar22 = (int *)(puVar20 + iVar4 + 0x18);" (assignment_expression "piVar22 = (int *)(puVar20 + iVar4 + 0x18)" identifier = (cast_expression "(int *)(puVar20 + iVar4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar4 + 0x18)" ( (binary_expression "puVar20 + iVar4 + 0x18" (binary_expression "puVar20 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);" (assignment_expression "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" ( (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" * (cast_expression "(code *)PTR_wmempcpy_0005b4a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar20 + iVar4 + 0x1c)" ( (binary_expression "puVar20 + iVar4 + 0x1c" (binary_expression "puVar20 + iVar4" identifier + identifier) + number_literal) ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (expression_statement "*piVar22 = 0;" (assignment_expression "*piVar22 = 0" (pointer_expression "*piVar22" * identifier) = number_literal) ;) (expression_statement "*local_34 = (int)piVar22;" (assignment_expression "*local_34 = (int)piVar22" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)piVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar12 = unaff_s6;" (assignment_expression "pbVar12 = unaff_s6" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar33;" (assignment_expression "pbVar26 = pbVar33" identifier = identifier) ;) (expression_statement "local_34 = piVar22;" (assignment_expression "local_34 = piVar22" identifier = identifier) ;) (expression_statement "puVar20 = puVar20 + iVar4;" (assignment_expression "puVar20 = puVar20 + iVar4" identifier = (binary_expression "puVar20 + iVar4" identifier + identifier)) ;) (expression_statement "unaff_s6 = pbVar33;" (assignment_expression "unaff_s6 = pbVar33" identifier = identifier) ;) (goto_statement "goto joined_r0x00028e80;" goto statement_identifier ;) })) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;) })) (labeled_statement "LAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);" statement_identifier : (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;)) (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (if_statement "if (iVar10 == 0) goto LAB_00028d20;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;)) })) (if_statement "if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }" if (parenthesized_expression "(*(int *)(puVar28 + -0x4730) == 0)" ( (binary_expression "*(int *)(puVar28 + -0x4730) == 0" (pointer_expression "*(int *)(puVar28 + -0x4730)" * (cast_expression "(int *)(puVar28 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x4730)" ( (binary_expression "puVar28 + -0x4730" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }" { (expression_statement "iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);" (assignment_expression "iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2)" identifier = (call_expression "(*(code *)PTR_getenv_0005b510)(unaff_s2)" (parenthesized_expression "(*(code *)PTR_getenv_0005b510)" ( (pointer_expression "*(code *)PTR_getenv_0005b510" * (cast_expression "(code *)PTR_getenv_0005b510" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s2)" ( identifier )))) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar10 != 0) {\n          uVar5 = 1;\n        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar5 = 1;\n        }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(puVar28 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(puVar28 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(puVar28 + -0x4730)" * (cast_expression "(undefined4 *)(puVar28 + -0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x4730)" ( (binary_expression "puVar28 + -0x4730" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" identifier = (pointer_expression "*(int *)(pbVar26 + 4)" * (cast_expression "(int *)(pbVar26 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 4)" ( (binary_expression "pbVar26 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar33 = pbVar26 + 4;" (assignment_expression "pbVar33 = pbVar26 + 4" identifier = (binary_expression "pbVar26 + 4" identifier + number_literal)) ;) (if_statement "if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }" if (parenthesized_expression "((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e))))" ( (binary_expression "(iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))" (parenthesized_expression "(iVar10 == 0x21)" ( (binary_expression "iVar10 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))" ( (parenthesized_expression "(*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e))" ( (binary_expression "*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)" (binary_expression "*(int *)(puVar28 + -0x4730) < 0" (pointer_expression "*(int *)(puVar28 + -0x4730)" * (cast_expression "(int *)(puVar28 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x4730)" ( (binary_expression "puVar28 + -0x4730" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(iVar10 == 0x5e)" ( (binary_expression "iVar10 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }" { (expression_statement "iVar10 = *(int *)(pbVar26 + 8);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 8)" identifier = (pointer_expression "*(int *)(pbVar26 + 8)" * (cast_expression "(int *)(pbVar26 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar26 + 8)" ( (binary_expression "pbVar26 + 8" identifier + number_literal) ))))) ;) (expression_statement "pbVar33 = pbVar26 + 8;" (assignment_expression "pbVar33 = pbVar26 + 8" identifier = (binary_expression "pbVar26 + 8" identifier + number_literal)) ;) })) (if_statement "if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }" if (parenthesized_expression "(iVar10 == 0x5d)" ( (binary_expression "iVar10 == 0x5d" identifier == number_literal) )) (compound_statement "{\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }" { (expression_statement "iVar10 = *(int *)(pbVar33 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar33 + 4)" identifier = (pointer_expression "*(int *)(pbVar33 + 4)" * (cast_expression "(int *)(pbVar33 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar33 + 4)" ( (binary_expression "pbVar33 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar33 = pbVar33 + 4;" (assignment_expression "pbVar33 = pbVar33 + 4" identifier = (binary_expression "pbVar33 + 4" identifier + number_literal)) ;) })) (expression_statement "pbVar12 = (byte *)0x5d;" (assignment_expression "pbVar12 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }" while (parenthesized_expression "(pbVar26 = pbVar33 + 4, iVar10 != 0x5d)" ( (comma_expression "pbVar26 = pbVar33 + 4, iVar10 != 0x5d" (assignment_expression "pbVar26 = pbVar33 + 4" identifier = (binary_expression "pbVar33 + 4" identifier + number_literal)) , (binary_expression "iVar10 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }" { (if_statement "if (iVar10 == 0) goto LAB_00028d20;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00028d20;" goto statement_identifier ;)) (expression_statement "pbVar33 = pbVar26;" (assignment_expression "pbVar33 = pbVar26" identifier = identifier) ;) (expression_statement "iVar10 = *(int *)pbVar26;" (assignment_expression "iVar10 = *(int *)pbVar26" identifier = (pointer_expression "*(int *)pbVar26" * (cast_expression "(int *)pbVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "iVar10 = *(int *)(pbVar33 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar33 + 4)" identifier = (pointer_expression "*(int *)(pbVar33 + 4)" * (cast_expression "(int *)(pbVar33 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar33 + 4)" ( (binary_expression "pbVar33 + 4" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x00028e80:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }" statement_identifier : (if_statement "if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(local_2c == *(int **)puVar1)" ( (binary_expression "local_2c == *(int **)puVar1" identifier == (pointer_expression "*(int **)puVar1" * (cast_expression "(int **)puVar1" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) }))) (expression_statement "pcVar35 = FUN_00029320;" (assignment_expression "pcVar35 = FUN_00029320" identifier = identifier) ;) (expression_statement "piVar22 = local_2c;" (assignment_expression "piVar22 = local_2c" identifier = identifier) ;) (expression_statement "puVar28 = PTR___stack_chk_fail_0005b564;" (assignment_expression "puVar28 = PTR___stack_chk_fail_0005b564" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0005b564)();" (call_expression "(*(code *)PTR___stack_chk_fail_0005b564)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0005b564)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0005b564" * (cast_expression "(code *)PTR___stack_chk_fail_0005b564" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar28 + 0x39dd0;" (assignment_expression "puVar30 = puVar28 + 0x39dd0" identifier = (binary_expression "puVar28 + 0x39dd0" identifier + number_literal)) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar28 + 0x3226c);" (assignment_expression "puVar3 = *(undefined4 **)(puVar28 + 0x3226c)" identifier = (pointer_expression "*(undefined4 **)(puVar28 + 0x3226c)" * (cast_expression "(undefined4 **)(puVar28 + 0x3226c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x3226c)" ( (binary_expression "puVar28 + 0x3226c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar20 + -0xc) = pbVar26;" (assignment_expression "*(byte **)(puVar20 + -0xc) = pbVar26" (pointer_expression "*(byte **)(puVar20 + -0xc)" * (cast_expression "(byte **)(puVar20 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0xc)" ( (binary_expression "puVar20 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar20 + -0x558) = puVar3;" (assignment_expression "*(undefined4 **)(puVar20 + -0x558) = puVar3" (pointer_expression "*(undefined4 **)(puVar20 + -0x558)" * (cast_expression "(undefined4 **)(puVar20 + -0x558)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x558)" ( (binary_expression "puVar20 + -0x558" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x570) = puVar30;" (assignment_expression "*(undefined **)(puVar20 + -0x570) = puVar30" (pointer_expression "*(undefined **)(puVar20 + -0x570)" * (cast_expression "(undefined **)(puVar20 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x570)" ( (binary_expression "puVar20 + -0x570" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar20 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar20 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar20 + -8)" * (cast_expression "(undefined1 **)(puVar20 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -8)" ( (binary_expression "puVar20 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x1c) = puVar1;" (assignment_expression "*(undefined **)(puVar20 + -0x1c) = puVar1" (pointer_expression "*(undefined **)(puVar20 + -0x1c)" * (cast_expression "(undefined **)(puVar20 + -0x1c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x1c)" ( (binary_expression "puVar20 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -4) = pcVar35;" (assignment_expression "*(code **)(puVar20 + -4) = pcVar35" (pointer_expression "*(code **)(puVar20 + -4)" * (cast_expression "(code **)(puVar20 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -4)" ( (binary_expression "puVar20 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar20 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar20 + -0x10)" * (cast_expression "(byte **)(puVar20 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x10)" ( (binary_expression "puVar20 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar20 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar20 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar20 + -0x14)" * (cast_expression "(int **)(puVar20 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x14)" ( (binary_expression "puVar20 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar20 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar20 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar20 + -0x18)" * (cast_expression "(int **)(puVar20 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x18)" ( (binary_expression "puVar20 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x20) = unaff_s2;" (assignment_expression "*(undefined **)(puVar20 + -0x20) = unaff_s2" (pointer_expression "*(undefined **)(puVar20 + -0x20)" * (cast_expression "(undefined **)(puVar20 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x20)" ( (binary_expression "puVar20 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar20 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar20 + -0x24)" * (cast_expression "(uint *)(puVar20 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x24)" ( (binary_expression "puVar20 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x28) = param_2;" (assignment_expression "*(byte **)(puVar20 + -0x28) = param_2" (pointer_expression "*(byte **)(puVar20 + -0x28)" * (cast_expression "(byte **)(puVar20 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x28)" ( (binary_expression "puVar20 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = *piVar22;" (assignment_expression "iVar10 = *piVar22" identifier = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar20 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)(puVar20 + -0x2c)" * (cast_expression "(undefined4 *)(puVar20 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x2c)" ( (binary_expression "puVar20 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "uVar2 = *(uint *)(puVar20 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar20 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar20 + 0x10)" * (cast_expression "(uint *)(puVar20 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pbVar26 = param_3;" (assignment_expression "pbVar26 = param_3" identifier = identifier) ;) (expression_statement "pbVar33 = pbVar12;" (assignment_expression "pbVar33 = pbVar12" identifier = identifier) ;) (if_statement "if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }" { (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" identifier = (binary_expression "uVar2 & 2" identifier & number_literal)) ;) (expression_statement "param_2 = (byte *)(uVar2 & 0x10);" (assignment_expression "param_2 = (byte *)(uVar2 & 0x10)" identifier = (cast_expression "(byte *)(uVar2 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar20 + -0x554) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar20 + -0x554) = uVar2 & 5" (pointer_expression "*(uint *)(puVar20 + -0x554)" * (cast_expression "(uint *)(puVar20 + -0x554)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x554)" ( (binary_expression "puVar20 + -0x554" identifier + number_literal) )))) = (binary_expression "uVar2 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);" (assignment_expression "*(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8)" (pointer_expression "*(undefined4 *)(puVar20 + -0x55c)" * (cast_expression "(undefined4 *)(puVar20 + -0x55c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x55c)" ( (binary_expression "puVar20 + -0x55c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar28 + 0x31df8)" * (cast_expression "(undefined4 *)(puVar28 + 0x31df8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x31df8)" ( (binary_expression "puVar28 + 0x31df8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;" (assignment_expression "*(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar20 + -0x560)" * (cast_expression "(int *)(puVar20 + -0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x560)" ( (binary_expression "puVar20 + -0x560" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar28 + 0x31fac)" * (cast_expression "(int *)(puVar28 + 0x31fac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x31fac)" ( (binary_expression "puVar28 + 0x31fac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;" (assignment_expression "*(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar20 + -0x544)" * (cast_expression "(int *)(puVar20 + -0x544)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x544)" ( (binary_expression "puVar20 + -0x544" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar28 + 0x32070)" * (cast_expression "(int *)(puVar28 + 0x32070)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x32070)" ( (binary_expression "puVar28 + 0x32070" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;" (assignment_expression "*(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar20 + -0x54c)" * (cast_expression "(int *)(puVar20 + -0x54c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x54c)" ( (binary_expression "puVar20 + -0x54c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar28 + 0x31fac)" * (cast_expression "(int *)(puVar28 + 0x31fac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x31fac)" ( (binary_expression "puVar28 + 0x31fac" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "unaff_s5 = piVar22 + 1;" (assignment_expression "unaff_s5 = piVar22 + 1" identifier = (binary_expression "piVar22 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" identifier = identifier) ;) (do_statement "do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);" do (compound_statement "{\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    }" { (expression_statement "unaff_s4 = unaff_s5;" (assignment_expression "unaff_s4 = unaff_s5" identifier = identifier) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" if (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" { (expression_statement "iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);" (assignment_expression "iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10)" identifier = (call_expression "(**(code **)(puVar30 + -0x7b70))(iVar10)" (parenthesized_expression "(**(code **)(puVar30 + -0x7b70))" ( (pointer_expression "**(code **)(puVar30 + -0x7b70)" * (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) )) (argument_list "(iVar10)" ( identifier )))) ;) (expression_statement "puVar30 = *(undefined **)(puVar20 + -0x570);" (assignment_expression "puVar30 = *(undefined **)(puVar20 + -0x570)" identifier = (pointer_expression "*(undefined **)(puVar20 + -0x570)" * (cast_expression "(undefined **)(puVar20 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x570)" ( (binary_expression "puVar20 + -0x570" identifier + number_literal) ))))) ;) })) (if_statement "if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }" if (parenthesized_expression "(iVar10 - 0x21U < 0x3c)" ( (binary_expression "iVar10 - 0x21U < 0x3c" (binary_expression "iVar10 - 0x21U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }" { (expression_statement "uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;" (assignment_expression "uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()" identifier = (call_expression "(*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()" (parenthesized_expression "(*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))" ( (pointer_expression "*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" * (cast_expression "(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" ( (binary_expression "puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" * (cast_expression "(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" ( (binary_expression "*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4" (pointer_expression "*(int *)(puVar20 + -0x560)" * (cast_expression "(int *)(puVar20 + -0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x560)" ( (binary_expression "puVar20 + -0x560" identifier + number_literal) )))) + (binary_expression "(iVar10 - 0x21U) * 4" (parenthesized_expression "(iVar10 - 0x21U)" ( (binary_expression "iVar10 - 0x21U" identifier - number_literal) )) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "unaff_s5 = unaff_s4;" (assignment_expression "unaff_s5 = unaff_s4" identifier = identifier) ;) (if_statement "if (param_3 == pbVar33) goto LAB_000295c4;" if (parenthesized_expression "(param_3 == pbVar33)" ( (binary_expression "param_3 == pbVar33" identifier == identifier) )) (goto_statement "goto LAB_000295c4;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)pbVar33;" (assignment_expression "iVar4 = *(int *)pbVar33" identifier = (pointer_expression "*(int *)pbVar33" * (cast_expression "(int *)pbVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" if (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" { (expression_statement "iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);" (assignment_expression "iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4)" identifier = (call_expression "(**(code **)(puVar30 + -0x7b70))(iVar4)" (parenthesized_expression "(**(code **)(puVar30 + -0x7b70))" ( (pointer_expression "**(code **)(puVar30 + -0x7b70)" * (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "puVar30 = *(undefined **)(puVar20 + -0x570);" (assignment_expression "puVar30 = *(undefined **)(puVar20 + -0x570)" identifier = (pointer_expression "*(undefined **)(puVar20 + -0x570)" * (cast_expression "(undefined **)(puVar20 + -0x570)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x570)" ( (binary_expression "puVar20 + -0x570" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (iVar4 != iVar10) goto LAB_000295c8;" if (parenthesized_expression "(iVar4 != iVar10)" ( (binary_expression "iVar4 != iVar10" identifier != identifier) )) (goto_statement "goto LAB_000295c8;" goto statement_identifier ;)) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar10 = *unaff_s4;" (assignment_expression "iVar10 = *unaff_s4" identifier = (pointer_expression "*unaff_s4" * identifier)) ;) (expression_statement "pbVar33 = pbVar33 + 4;" (assignment_expression "pbVar33 = pbVar33 + 4" identifier = (binary_expression "pbVar33 + 4" identifier + number_literal)) ;) (expression_statement "unaff_s5 = unaff_s4 + 1;" (assignment_expression "unaff_s5 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) (expression_statement "piVar22 = unaff_s4;" (assignment_expression "piVar22 = unaff_s4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "piVar22 = unaff_s4;" (assignment_expression "piVar22 = unaff_s4" identifier = identifier) ;) (if_statement "if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar33 != param_3)" ( (binary_expression "pbVar33 != param_3" identifier != identifier) )) (compound_statement "{\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }" { (expression_statement "piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);" (assignment_expression "piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8)" identifier = (cast_expression "(int *)(*(uint *)(puVar20 + 0x10) & 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar20 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar20 + 0x10) & 8" (pointer_expression "*(uint *)(puVar20 + 0x10)" * (cast_expression "(uint *)(puVar20 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 0x10)" ( (binary_expression "puVar20 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" if (parenthesized_expression "(piVar22 == (int *)0x0)" ( (binary_expression "piVar22 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000295c4:\n      uVar2 = 1;\n    }" { (labeled_statement "LAB_000295c4:\n      uVar2 = 1;" statement_identifier : (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" else (compound_statement "{\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" { (expression_statement "uVar2 = (uint)(*(int *)pbVar33 != 0x2f);" (assignment_expression "uVar2 = (uint)(*(int *)pbVar33 != 0x2f)" identifier = (call_expression "(uint)(*(int *)pbVar33 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)pbVar33 != 0x2f)" ( (binary_expression "*(int *)pbVar33 != 0x2f" (pointer_expression "*(int *)pbVar33" * (cast_expression "(int *)pbVar33" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar20 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar20 + -0x2c)" * (cast_expression "(int *)(puVar20 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x2c)" ( (binary_expression "puVar20 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 == **(int **)(puVar20 + -0x558))" ( (binary_expression "iVar4 == **(int **)(puVar20 + -0x558)" identifier == (pointer_expression "**(int **)(puVar20 + -0x558)" * (pointer_expression "*(int **)(puVar20 + -0x558)" * (cast_expression "(int **)(puVar20 + -0x558)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x558)" ( (binary_expression "puVar20 + -0x558" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar35 = *(code **)(puVar30 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(puVar30 + -0x7b8c)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7b8c)" * (cast_expression "(code **)(puVar30 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b8c)" ( (binary_expression "puVar30 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = FUN_00029f20;" (assignment_expression "pcVar36 = FUN_00029f20" identifier = identifier) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar31 = puVar20 + -0x5f0;" (assignment_expression "puVar31 = puVar20 + -0x5f0" identifier = (binary_expression "puVar20 + -0x5f0" identifier + number_literal)) ;) (expression_statement "pcVar29 = *(code **)(pcVar35 + 0x315c4);" (assignment_expression "pcVar29 = *(code **)(pcVar35 + 0x315c4)" identifier = (pointer_expression "*(code **)(pcVar35 + 0x315c4)" * (cast_expression "(code **)(pcVar35 + 0x315c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x315c4)" ( (binary_expression "pcVar35 + 0x315c4" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar20 + -0x590) = pbVar33;" (assignment_expression "*(byte **)(puVar20 + -0x590) = pbVar33" (pointer_expression "*(byte **)(puVar20 + -0x590)" * (cast_expression "(byte **)(puVar20 + -0x590)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x590)" ( (binary_expression "puVar20 + -0x590" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar20 + -0x5a8) = unaff_s2;" (assignment_expression "*(undefined **)(puVar20 + -0x5a8) = unaff_s2" (pointer_expression "*(undefined **)(puVar20 + -0x5a8)" * (cast_expression "(undefined **)(puVar20 + -0x5a8)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5a8)" ( (binary_expression "puVar20 + -0x5a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);" (assignment_expression "puVar3 = *(undefined4 **)(pcVar35 + 0x3166c)" identifier = (pointer_expression "*(undefined4 **)(pcVar35 + 0x3166c)" * (cast_expression "(undefined4 **)(pcVar35 + 0x3166c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x3166c)" ( (binary_expression "pcVar35 + 0x3166c" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar20 + -0x5b0) = param_2;" (assignment_expression "*(byte **)(puVar20 + -0x5b0) = param_2" (pointer_expression "*(byte **)(puVar20 + -0x5b0)" * (cast_expression "(byte **)(puVar20 + -0x5b0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5b0)" ( (binary_expression "puVar20 + -0x5b0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar20 + -0x594) = iVar10;" (assignment_expression "*(int *)(puVar20 + -0x594) = iVar10" (pointer_expression "*(int *)(puVar20 + -0x594)" * (cast_expression "(int *)(puVar20 + -0x594)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x594)" ( (binary_expression "puVar20 + -0x594" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar27 = pbVar12 + 1;" (assignment_expression "pbVar27 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];" (assignment_expression "*(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575]" (pointer_expression "*(uint *)(puVar20 + -0x5c0)" * (cast_expression "(uint *)(puVar20 + -0x5c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c0)" ( (binary_expression "puVar20 + -0x5c0" identifier + number_literal) )))) = (cast_expression "(uint)(byte)puVar20[-0x575]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar20[-0x575]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar20[-0x575]" identifier [ number_literal ])))) ;) (expression_statement "*(int **)(puVar20 + -0x5a0) = piVar22;" (assignment_expression "*(int **)(puVar20 + -0x5a0) = piVar22" (pointer_expression "*(int **)(puVar20 + -0x5a0)" * (cast_expression "(int **)(puVar20 + -0x5a0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5a0)" ( (binary_expression "puVar20 + -0x5a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;" (assignment_expression "*(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0" (pointer_expression "*(code **)(puVar20 + -0x5d8)" * (cast_expression "(code **)(puVar20 + -0x5d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) )))) = (binary_expression "pcVar35 + 0x391d0" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x588) = iVar4;" (assignment_expression "*(int *)(puVar20 + -0x588) = iVar4" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar20 + -0x58c) = pcVar36;" (assignment_expression "*(code **)(puVar20 + -0x58c) = pcVar36" (pointer_expression "*(code **)(puVar20 + -0x58c)" * (cast_expression "(code **)(puVar20 + -0x58c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x58c)" ( (binary_expression "puVar20 + -0x58c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x598) = unaff_s6;" (assignment_expression "*(byte **)(puVar20 + -0x598) = unaff_s6" (pointer_expression "*(byte **)(puVar20 + -0x598)" * (cast_expression "(byte **)(puVar20 + -0x598)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x598)" ( (binary_expression "puVar20 + -0x598" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar20 + -0x59c) = unaff_s5;" (assignment_expression "*(int **)(puVar20 + -0x59c) = unaff_s5" (pointer_expression "*(int **)(puVar20 + -0x59c)" * (cast_expression "(int **)(puVar20 + -0x59c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x59c)" ( (binary_expression "puVar20 + -0x59c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x5a4) = param_3;" (assignment_expression "*(byte **)(puVar20 + -0x5a4) = param_3" (pointer_expression "*(byte **)(puVar20 + -0x5a4)" * (cast_expression "(byte **)(puVar20 + -0x5a4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5a4)" ( (binary_expression "puVar20 + -0x5a4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar20 + -0x5ac) = unaff_s1;" (assignment_expression "*(uint *)(puVar20 + -0x5ac) = unaff_s1" (pointer_expression "*(uint *)(puVar20 + -0x5ac)" * (cast_expression "(uint *)(puVar20 + -0x5ac)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5ac)" ( (binary_expression "puVar20 + -0x5ac" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar20 + -0x5c4) = param_4;" (assignment_expression "*(byte **)(puVar20 + -0x5c4) = param_4" (pointer_expression "*(byte **)(puVar20 + -0x5c4)" * (cast_expression "(byte **)(puVar20 + -0x5c4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5c4)" ( (binary_expression "puVar20 + -0x5c4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5b8) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5b8) = 0" (pointer_expression "*(undefined4 *)(puVar20 + -0x5b8)" * (cast_expression "(undefined4 *)(puVar20 + -0x5b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5b8)" ( (binary_expression "puVar20 + -0x5b8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5b4) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5b4) = *puVar3" (pointer_expression "*(undefined4 *)(puVar20 + -0x5b4)" * (cast_expression "(undefined4 *)(puVar20 + -0x5b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5b4)" ( (binary_expression "puVar20 + -0x5b4" identifier + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "pbVar33 = pbVar12;" (assignment_expression "pbVar33 = pbVar12" identifier = identifier) ;) (expression_statement "pbVar13 = pbVar26;" (assignment_expression "pbVar13 = pbVar26" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar29)(pbVar12);" (assignment_expression "uVar5 = (*pcVar29)(pbVar12)" identifier = (call_expression "(*pcVar29)(pbVar12)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(pbVar12)" ( identifier )))) ;) (expression_statement "iVar10 = (int)(char)pbVar12[1];" (assignment_expression "iVar10 = (int)(char)pbVar12[1]" identifier = (cast_expression "(int)(char)pbVar12[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar12[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar12[1]" identifier [ number_literal ])))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar20 + -0x5cc) = uVar5;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5cc) = uVar5" (pointer_expression "*(undefined4 *)(puVar20 + -0x5cc)" * (cast_expression "(undefined4 *)(puVar20 + -0x5cc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }" { (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_3 = *(byte **)(iVar4 + -0x7fd8);" (assignment_expression "param_3 = *(byte **)(iVar4 + -0x7fd8)" identifier = (pointer_expression "*(byte **)(iVar4 + -0x7fd8)" * (cast_expression "(byte **)(iVar4 + -0x7fd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7fd8)" ( (binary_expression "iVar4 + -0x7fd8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" identifier = (call_expression "(uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" ( (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU < 2" (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal) < number_literal) )))) ;) (expression_statement "*(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;" (assignment_expression "*(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8" (pointer_expression "*(undefined1 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined1 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) )))) = (binary_expression "puVar20 + -0x5b8" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;" (assignment_expression "*(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(puVar20 + -0x5c8)" * (cast_expression "(int *)(puVar20 + -0x5c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c8)" ( (binary_expression "puVar20 + -0x5c8" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar23 = puVar20 + -0x5f0;" (assignment_expression "puVar23 = puVar20 + -0x5f0" identifier = (binary_expression "puVar20 + -0x5f0" identifier + number_literal)) ;) (expression_statement "unaff_s6 = pbVar27;" (assignment_expression "unaff_s6 = pbVar27" identifier = identifier) ;) (do_statement "do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);" do (compound_statement "{\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    }" { (while_statement "while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }" while (parenthesized_expression "(puVar31 = puVar23, iVar10 == 0x5b)" ( (comma_expression "puVar31 = puVar23, iVar10 == 0x5b" (assignment_expression "puVar31 = puVar23" identifier = identifier) , (binary_expression "iVar10 == 0x5b" identifier == number_literal)) )) (compound_statement "{\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }" { (if_statement "if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }" if (parenthesized_expression "(*(int *)(param_3 + -0x4730) == 0)" ( (binary_expression "*(int *)(param_3 + -0x4730) == 0" (pointer_expression "*(int *)(param_3 + -0x4730)" * (cast_expression "(int *)(param_3 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -0x4730)" ( (binary_expression "param_3 + -0x4730" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }" { (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8))" identifier = (call_expression "(**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8))" (parenthesized_expression "(**(code **)(iVar4 + -0x7be0))" ( (pointer_expression "**(code **)(iVar4 + -0x7be0)" * (pointer_expression "*(code **)(iVar4 + -0x7be0)" * (cast_expression "(code **)(iVar4 + -0x7be0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7be0)" ( (binary_expression "iVar4 + -0x7be0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar20 + -0x5c8))" ( (pointer_expression "*(undefined4 *)(puVar20 + -0x5c8)" * (cast_expression "(undefined4 *)(puVar20 + -0x5c8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5c8)" ( (binary_expression "puVar20 + -0x5c8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n            uVar5 = 1;\n          }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar5 = 1;\n          }" { (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(param_3 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(param_3 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(param_3 + -0x4730)" * (cast_expression "(undefined4 *)(param_3 + -0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -0x4730)" ( (binary_expression "param_3 + -0x4730" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "bVar8 = pbVar27[1];" (assignment_expression "bVar8 = pbVar27[1]" identifier = (subscript_expression "pbVar27[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar27 + 1;" (assignment_expression "pbVar11 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }" if (parenthesized_expression "((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e))))" ( (binary_expression "(bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))" (parenthesized_expression "(bVar8 == 0x21)" ( (binary_expression "bVar8 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))" ( (parenthesized_expression "(*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e))" ( (binary_expression "*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)" (binary_expression "*(int *)(param_3 + -0x4730) < 0" (pointer_expression "*(int *)(param_3 + -0x4730)" * (cast_expression "(int *)(param_3 + -0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + -0x4730)" ( (binary_expression "param_3 + -0x4730" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(bVar8 == 0x5e)" ( (binary_expression "bVar8 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }" { (expression_statement "bVar8 = pbVar27[2];" (assignment_expression "bVar8 = pbVar27[2]" identifier = (subscript_expression "pbVar27[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar27 + 2;" (assignment_expression "pbVar11 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (if_statement "if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }" if (parenthesized_expression "(bVar8 == 0x5d)" ( (binary_expression "bVar8 == 0x5d" identifier == number_literal) )) (compound_statement "{\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }" { (expression_statement "bVar8 = pbVar11[1];" (assignment_expression "bVar8 = pbVar11[1]" identifier = (subscript_expression "pbVar11[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar33 = (byte *)0x5d;" (assignment_expression "pbVar33 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }" while (parenthesized_expression "(pbVar27 = pbVar11 + 1, bVar8 != 0x5d)" ( (comma_expression "pbVar27 = pbVar11 + 1, bVar8 != 0x5d" (assignment_expression "pbVar27 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) , (binary_expression "bVar8 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }" { (if_statement "if (bVar8 == 0) goto LAB_0002a034;" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) (expression_statement "pbVar11 = pbVar27;" (assignment_expression "pbVar11 = pbVar27" identifier = identifier) ;) (expression_statement "bVar8 = *pbVar27;" (assignment_expression "bVar8 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) })) (expression_statement "iVar10 = (int)(char)pbVar11[1];" (assignment_expression "iVar10 = (int)(char)pbVar11[1]" identifier = (cast_expression "(int)(char)pbVar11[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar11[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar11[1]" identifier [ number_literal ])))) ;) (labeled_statement "joined_r0x0002a188:\n        puVar23 = puVar31;" statement_identifier : (expression_statement "puVar23 = puVar31;" (assignment_expression "puVar23 = puVar31" identifier = identifier) ;)) (if_statement "if (iVar10 == 0) goto LAB_0002a034;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) })) (expression_statement "pbVar33 = &DAT_c0000601;" (assignment_expression "pbVar33 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar2 = iVar10 - 0x21U & 0xff;" (assignment_expression "uVar2 = iVar10 - 0x21U & 0xff" identifier = (binary_expression "iVar10 - 0x21U & 0xff" (binary_expression "iVar10 - 0x21U" identifier - number_literal) & number_literal)) ;) (expression_statement "pbVar13 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "pbVar13 = (byte *)(uint)(uVar2 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar2 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < 0x20)" ( (binary_expression "uVar2 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }" if (parenthesized_expression "(pbVar13 != (byte *)0x0)" ( (binary_expression "pbVar13 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }" { (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }" { (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;) (if_statement "if (iVar10 != 0x28) goto LAB_0002a028;" if (parenthesized_expression "(iVar10 != 0x28)" ( (binary_expression "iVar10 != 0x28" identifier != number_literal) )) (goto_statement "goto LAB_0002a028;" goto statement_identifier ;)) (expression_statement "pbVar13 = (byte *)0x1;" (assignment_expression "pbVar13 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" identifier = (cast_expression "(int *)((int)unaff_s5 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + 1)" ( (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar10 != 0x29) goto LAB_0002a198;" if (parenthesized_expression "(iVar10 != 0x29)" ( (binary_expression "iVar10 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_0002a198;" goto statement_identifier ;)) (if_statement "if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }" if (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }" { (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" identifier = (cast_expression "(int *)((int)unaff_s5 + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 + -1)" ( (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (labeled_statement "LAB_0002a028:\n          pbVar27 = pbVar27 + 1;" statement_identifier : (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;)) (goto_statement "goto joined_r0x0002a188;" goto statement_identifier ;) })) (if_statement "if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }" if (parenthesized_expression "(1 < *(int *)(puVar20 + -0x588) - 0x3fU)" ( (binary_expression "1 < *(int *)(puVar20 + -0x588) - 0x3fU" number_literal < (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }" { (expression_statement "*(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "*(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6)" (pointer_expression "*(byte **)(puVar20 + -0x5cc)" * (cast_expression "(byte **)(puVar20 + -0x5cc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) = (binary_expression "pbVar27 + (1 - (int)unaff_s6)" identifier + (parenthesized_expression "(1 - (int)unaff_s6)" ( (binary_expression "1 - (int)unaff_s6" number_literal - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }" if (parenthesized_expression "((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c)" ( (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4" (parenthesized_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc)" ( (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar20 + -0x5cc)" * (cast_expression "(int *)(puVar20 + -0x5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) + number_literal) & number_literal) )) - number_literal) < number_literal) )) (compound_statement "{\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }" { (expression_statement "iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7" (parenthesized_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc)" ( (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar20 + -0x5cc)" * (cast_expression "(int *)(puVar20 + -0x5cc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) )))) + number_literal) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);" (assignment_expression "puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b7c))" ( (pointer_expression "**(code **)(iVar4 + -0x7b7c)" * (pointer_expression "*(code **)(iVar4 + -0x7b7c)" * (cast_expression "(code **)(iVar4 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b7c)" ( (binary_expression "iVar4 + -0x7b7c" identifier + number_literal) ))))) )) (argument_list "(puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (binary_expression "puVar31 + iVar10 + 0x1c" (binary_expression "puVar31 + iVar10" identifier + identifier) + number_literal) , identifier , (binary_expression "(int)pbVar27 - (int)unaff_s6" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar20 + -0x5bc);" (assignment_expression "puVar3 = *(undefined4 **)(puVar20 + -0x5bc)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + iVar10 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar31 + iVar10 + 0x18)" * (cast_expression "(undefined4 *)(puVar31 + iVar10 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + iVar10 + 0x18)" ( (binary_expression "puVar31 + iVar10 + 0x18" (binary_expression "puVar31 + iVar10" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*puVar3 = puVar31 + iVar10 + 0x18;" (assignment_expression "*puVar3 = puVar31 + iVar10 + 0x18" (pointer_expression "*puVar3" * identifier) = (binary_expression "puVar31 + iVar10 + 0x18" (binary_expression "puVar31 + iVar10" identifier + identifier) + number_literal)) ;) (if_statement "if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" if (parenthesized_expression "(*(int *)(puVar20 + -0x5b8) == 0)" ( (binary_expression "*(int *)(puVar20 + -0x5b8) == 0" (pointer_expression "*(int *)(puVar20 + -0x5b8)" * (cast_expression "(int *)(puVar20 + -0x5b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5b8)" ( (binary_expression "puVar20 + -0x5b8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" { (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78bc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" if (parenthesized_expression "(pbVar27[-1] != 0x29)" ( (binary_expression "pbVar27[-1] != 0x29" (subscript_expression "pbVar27[-1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" { (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78ac" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" if (parenthesized_expression "(0x1f < *(int *)(puVar20 + -0x588) - 0x21U)" ( (binary_expression "0x1f < *(int *)(puVar20 + -0x588) - 0x21U" number_literal < (binary_expression "*(int *)(puVar20 + -0x588) - 0x21U" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal)) )) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" { (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" identifier = (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7898" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();" (assignment_expression "uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))()" identifier = (call_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))()" (parenthesized_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))" ( (pointer_expression "*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" * (cast_expression "(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" ( (binary_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4" (pointer_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" * (cast_expression "(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4" (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) + (binary_expression "(*(int *)(puVar20 + -0x588) - 0x21U) * 4" (parenthesized_expression "(*(int *)(puVar20 + -0x588) - 0x21U)" ( (binary_expression "*(int *)(puVar20 + -0x588) - 0x21U" (pointer_expression "*(int *)(puVar20 + -0x588)" * (cast_expression "(int *)(puVar20 + -0x588)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x588)" ( (binary_expression "puVar20 + -0x588" identifier + number_literal) )))) - number_literal) )) * number_literal)) )))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (break_statement "break;" break ;) })) (if_statement "if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }" if (parenthesized_expression "((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0))" ( (binary_expression "(iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)" (parenthesized_expression "(iVar10 != 0x7c)" ( (binary_expression "iVar10 != 0x7c" identifier != number_literal) )) || (parenthesized_expression "(unaff_s5 != (int *)0x0)" ( (binary_expression "unaff_s5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }" { (labeled_statement "LAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];" statement_identifier : (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;)) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (goto_statement "goto joined_r0x0002a188;" goto statement_identifier ;) })) (expression_statement "pbVar11 = *(byte **)(puVar20 + -0x5cc);" (assignment_expression "pbVar11 = *(byte **)(puVar20 + -0x5cc)" identifier = (pointer_expression "*(byte **)(puVar20 + -0x5cc)" * (cast_expression "(byte **)(puVar20 + -0x5cc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5cc)" ( (binary_expression "puVar20 + -0x5cc" identifier + number_literal) ))))) ;) (if_statement "if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }" { (expression_statement "pbVar11 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "pbVar11 = pbVar27 + (1 - (int)unaff_s6)" identifier = (binary_expression "pbVar27 + (1 - (int)unaff_s6)" identifier + (parenthesized_expression "(1 - (int)unaff_s6)" ( (binary_expression "1 - (int)unaff_s6" number_literal - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;" if (parenthesized_expression "(0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4)" ( (binary_expression "0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4" number_literal < (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar11 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar11 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar11 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + 7)" ( (binary_expression "pbVar11 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b7c);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b7c)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b7c)" * (cast_expression "(code **)(iVar4 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b7c)" ( (binary_expression "iVar4 + -0x7b7c" identifier + number_literal) ))))) ;) (expression_statement "pbVar13 = pbVar27 + -(int)unaff_s6;" (assignment_expression "pbVar13 = pbVar27 + -(int)unaff_s6" identifier = (binary_expression "pbVar27 + -(int)unaff_s6" identifier + (unary_expression "-(int)unaff_s6" - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pbVar21 = pbVar27 + 1;" (assignment_expression "pbVar21 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar11 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar11 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar11 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + 7)" ( (binary_expression "pbVar11 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar32 = puVar31 + iVar17;" (assignment_expression "puVar32 = puVar31 + iVar17" identifier = (binary_expression "puVar31 + iVar17" identifier + identifier)) ;) (expression_statement "*(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;" (assignment_expression "*(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18" (pointer_expression "*(undefined1 **)(puVar20 + -0x5d0)" * (cast_expression "(undefined1 **)(puVar20 + -0x5d0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5d0)" ( (binary_expression "puVar20 + -0x5d0" identifier + number_literal) )))) = (binary_expression "puVar31 + iVar17 + 0x18" (binary_expression "puVar31 + iVar17" identifier + identifier) + number_literal)) ;) (expression_statement "puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);" (assignment_expression "puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c)" identifier = (cast_expression "(undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(puVar31 + iVar17 + 0x1c)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(puVar31 + iVar17 + 0x1c)" ( (binary_expression "puVar31 + iVar17 + 0x1c" (binary_expression "puVar31 + iVar17" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" identifier = (pointer_expression "*(int *)(puVar20 + -0x5d8)" * (cast_expression "(int *)(puVar20 + -0x5d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -0x5d8)" ( (binary_expression "puVar20 + -0x5d8" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = *(undefined4 **)(puVar20 + -0x5d0);" (assignment_expression "puVar15 = *(undefined4 **)(puVar20 + -0x5d0)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + -0x5d0)" * (cast_expression "(undefined4 **)(puVar20 + -0x5d0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5d0)" ( (binary_expression "puVar20 + -0x5d0" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" identifier = (cast_expression "(int)(char)pbVar27[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar27[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ])))) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (expression_statement "puVar6 = *(undefined4 **)(puVar20 + -0x5bc);" (assignment_expression "puVar6 = *(undefined4 **)(puVar20 + -0x5bc)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) ))))) ;) (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" * identifier) = number_literal) ;) (expression_statement "*(undefined4 **)(puVar20 + -0x5bc) = puVar15;" (assignment_expression "*(undefined4 **)(puVar20 + -0x5bc) = puVar15" (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" * (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5bc)" ( (binary_expression "puVar20 + -0x5bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar6 = puVar15;" (assignment_expression "*puVar6 = puVar15" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "pbVar33 = unaff_s6;" (assignment_expression "pbVar33 = unaff_s6" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar21;" (assignment_expression "unaff_s6 = pbVar21" identifier = identifier) ;) (expression_statement "pbVar27 = pbVar21;" (assignment_expression "pbVar27 = pbVar21" identifier = identifier) ;) (expression_statement "puVar31 = puVar31 + iVar17;" (assignment_expression "puVar31 = puVar31 + iVar17" identifier = (binary_expression "puVar31 + iVar17" identifier + identifier)) ;) (expression_statement "puVar23 = puVar32;" (assignment_expression "puVar23 = puVar32" identifier = identifier) ;) }) while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) ;) })) (labeled_statement "LAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);" statement_identifier : (expression_statement "pbVar11 = *(byte **)(puVar20 + -0x5b4);" (assignment_expression "pbVar11 = *(byte **)(puVar20 + -0x5b4)" identifier = (pointer_expression "*(byte **)(puVar20 + -0x5b4)" * (cast_expression "(byte **)(puVar20 + -0x5b4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x5b4)" ( (binary_expression "puVar20 + -0x5b4" identifier + number_literal) ))))) ;)) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b8c)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b8c)" * (cast_expression "(code **)(iVar4 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b8c)" ( (binary_expression "iVar4 + -0x7b8c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(pbVar11 == (byte *)*puVar3)" ( (binary_expression "pbVar11 == (byte *)*puVar3" identifier == (cast_expression "(byte *)*puVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (expression_statement "pcVar36 = FUN_0002a610;" (assignment_expression "pcVar36 = FUN_0002a610" identifier = identifier) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar29 = pcVar35 + 0x38ae0;" (assignment_expression "pcVar29 = pcVar35 + 0x38ae0" identifier = (binary_expression "pcVar35 + 0x38ae0" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);" (assignment_expression "puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c)" identifier = (pointer_expression "*(undefined4 **)(pcVar35 + 0x30f7c)" * (cast_expression "(undefined4 **)(pcVar35 + 0x30f7c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x30f7c)" ( (binary_expression "pcVar35 + 0x30f7c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0" (pointer_expression "*(undefined1 **)(puVar31 + -8)" * (cast_expression "(undefined1 **)(puVar31 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -8)" ( (binary_expression "puVar31 + -8" identifier + number_literal) )))) = (binary_expression "puVar20 + -0x5f0" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar31 + -0x1c) = param_3;" (assignment_expression "*(byte **)(puVar31 + -0x1c) = param_3" (pointer_expression "*(byte **)(puVar31 + -0x1c)" * (cast_expression "(byte **)(puVar31 + -0x1c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c)" ( (binary_expression "puVar31 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar31 + -0x160) = pcVar29;" (assignment_expression "*(code **)(puVar31 + -0x160) = pcVar29" (pointer_expression "*(code **)(puVar31 + -0x160)" * (cast_expression "(code **)(puVar31 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x160)" ( (binary_expression "puVar31 + -0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar31 + -4) = pcVar36;" (assignment_expression "*(code **)(puVar31 + -4) = pcVar36" (pointer_expression "*(code **)(puVar31 + -4)" * (cast_expression "(code **)(puVar31 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -4)" ( (binary_expression "puVar31 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0xc) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0xc) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0xc)" * (cast_expression "(byte **)(puVar31 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0xc)" ( (binary_expression "puVar31 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar31 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar31 + -0x10)" * (cast_expression "(byte **)(puVar31 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x10)" ( (binary_expression "puVar31 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x14)" * (cast_expression "(int **)(puVar31 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x14)" ( (binary_expression "puVar31 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x18) = pbVar26;" (assignment_expression "*(byte **)(puVar31 + -0x18) = pbVar26" (pointer_expression "*(byte **)(puVar31 + -0x18)" * (cast_expression "(byte **)(puVar31 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x18)" ( (binary_expression "puVar31 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x20) = puVar3;" (assignment_expression "*(undefined4 **)(puVar31 + -0x20) = puVar3" (pointer_expression "*(undefined4 **)(puVar31 + -0x20)" * (cast_expression "(undefined4 **)(puVar31 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x20)" ( (binary_expression "puVar31 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar31 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar31 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar31 + -0x24)" * (cast_expression "(uint *)(puVar31 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x24)" ( (binary_expression "puVar31 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x28) = pbVar12;" (assignment_expression "*(byte **)(puVar31 + -0x28) = pbVar12" (pointer_expression "*(byte **)(puVar31 + -0x28)" * (cast_expression "(byte **)(puVar31 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x28)" ( (binary_expression "puVar31 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x144) = puVar6;" (assignment_expression "*(undefined4 **)(puVar31 + -0x144) = puVar6" (pointer_expression "*(undefined4 **)(puVar31 + -0x144)" * (cast_expression "(undefined4 **)(puVar31 + -0x144)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x144)" ( (binary_expression "puVar31 + -0x144" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x154) = pbVar11 + 1;" (assignment_expression "*(byte **)(puVar31 + -0x154) = pbVar11 + 1" (pointer_expression "*(byte **)(puVar31 + -0x154)" * (cast_expression "(byte **)(puVar31 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x154)" ( (binary_expression "puVar31 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar21 = (byte *)(uint)*pbVar11;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar11" identifier = (binary_expression "(byte *)(uint)*pbVar11" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x2c) = *puVar6;" (assignment_expression "*(undefined4 *)(puVar31 + -0x2c) = *puVar6" (pointer_expression "*(undefined4 *)(puVar31 + -0x2c)" * (cast_expression "(undefined4 *)(puVar31 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "iVar10 = *(int *)(pcVar35 + 0x30cbc);" (assignment_expression "iVar10 = *(int *)(pcVar35 + 0x30cbc)" identifier = (pointer_expression "*(int *)(pcVar35 + 0x30cbc)" * (cast_expression "(int *)(pcVar35 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30cbc)" ( (binary_expression "pcVar35 + 0x30cbc" identifier + number_literal) ))))) ;) (expression_statement "pbVar27 = pbVar13;" (assignment_expression "pbVar27 = pbVar13" identifier = identifier) ;) (expression_statement "pbVar34 = pbVar33;" (assignment_expression "pbVar34 = pbVar33" identifier = identifier) ;) (if_statement "if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }" if (parenthesized_expression "(pbVar21 != (byte *)0x0)" ( (binary_expression "pbVar21 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }" { (expression_statement "uVar2 = *(uint *)(puVar31 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar31 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar31 + 0x10)" * (cast_expression "(uint *)(puVar31 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" identifier = (binary_expression "uVar2 & 2" identifier & number_literal)) ;) (expression_statement "pbVar12 = (byte *)(uVar2 & 0x10);" (assignment_expression "pbVar12 = (byte *)(uVar2 & 0x10)" identifier = (cast_expression "(byte *)(uVar2 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar31 + -0x140) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar31 + -0x140) = uVar2 & 5" (pointer_expression "*(uint *)(puVar31 + -0x140)" * (cast_expression "(uint *)(puVar31 + -0x140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x140)" ( (binary_expression "puVar31 + -0x140" identifier + number_literal) )))) = (binary_expression "uVar2 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar31 + -0x148)" * (cast_expression "(undefined4 *)(puVar31 + -0x148)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x148)" ( (binary_expression "puVar31 + -0x148" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(pcVar35 + 0x30b08)" * (cast_expression "(undefined4 *)(pcVar35 + 0x30b08)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30b08)" ( (binary_expression "pcVar35 + 0x30b08" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;" (assignment_expression "*(int *)(puVar31 + -0x14c) = iVar10 + -0x7660" (pointer_expression "*(int *)(puVar31 + -0x14c)" * (cast_expression "(int *)(puVar31 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x14c)" ( (binary_expression "puVar31 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar10 + -0x7660" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar31 + -0x138)" * (cast_expression "(int *)(puVar31 + -0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x138)" ( (binary_expression "puVar31 + -0x138" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar35 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(pcVar35 + 0x30d80)" * (cast_expression "(int *)(pcVar35 + 0x30d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30d80)" ( (binary_expression "pcVar35 + 0x30d80" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar31 + -0x13c)" * (cast_expression "(int *)(puVar31 + -0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x13c)" ( (binary_expression "puVar31 + -0x13c" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar35 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(pcVar35 + 0x30cbc)" * (cast_expression "(int *)(pcVar35 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar35 + 0x30cbc)" ( (binary_expression "pcVar35 + 0x30cbc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "pbVar26 = pbVar11;" (assignment_expression "pbVar26 = pbVar11" identifier = identifier) ;) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" identifier = identifier) ;) (do_statement "do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);" do (compound_statement "{\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    }" { (expression_statement "pbVar11 = pbVar21;" (assignment_expression "pbVar11 = pbVar21" identifier = identifier) ;) (if_statement "if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }" if (parenthesized_expression "(pbVar12 != (byte *)0x0)" ( (binary_expression "pbVar12 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }" { (expression_statement "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();" (assignment_expression "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar29 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar29 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar29 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar29 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar29 + -0x7cdc)" * (cast_expression "(code **)(pcVar29 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + -0x7cdc)" ( (binary_expression "pcVar29 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar29 = *(code **)(puVar31 + -0x160);" (assignment_expression "pcVar29 = *(code **)(puVar31 + -0x160)" identifier = (pointer_expression "*(code **)(puVar31 + -0x160)" * (cast_expression "(code **)(puVar31 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x160)" ( (binary_expression "puVar31 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);" (assignment_expression "pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" identifier = (binary_expression "(byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar22 + (int)pbVar21 * 4 + 3)" ( (binary_expression "*piVar22 + (int)pbVar21 * 4 + 3" (binary_expression "*piVar22 + (int)pbVar21 * 4" (pointer_expression "*piVar22" * identifier) + (binary_expression "(int)pbVar21 * 4" (cast_expression "(int)pbVar21" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))) ;) })) (if_statement "if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }" if (parenthesized_expression "(((uint)(pbVar11 + -0x21) & 0xff) < 0x3c)" ( (binary_expression "((uint)(pbVar11 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar11 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar11 + -0x21) & 0xff" (call_expression "(uint)(pbVar11 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + -0x21)" ( (binary_expression "pbVar11 + -0x21" identifier + number_literal) ))) & number_literal) )) < number_literal) )) (compound_statement "{\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }" { (expression_statement "uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();" (assignment_expression "uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))()" identifier = (call_expression "(*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))" ( (pointer_expression "*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4))" * (parenthesized_expression "(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4))" ( (binary_expression "pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" * (cast_expression "(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" ( (binary_expression "*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar31 + -0x14c)" * (cast_expression "(int *)(puVar31 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x14c)" ( (binary_expression "puVar31 + -0x14c" identifier + number_literal) )))) + (binary_expression "((uint)(pbVar11 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar11 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar11 + -0x21) & 0xff" (call_expression "(uint)(pbVar11 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar11 + -0x21)" ( (binary_expression "pbVar11 + -0x21" identifier + number_literal) ))) & number_literal) )) * number_literal)) ))))) ))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "pbVar21 = pbVar11;" (assignment_expression "pbVar21 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar34 == pbVar13) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar34 == pbVar13)" ( (binary_expression "pbVar34 == pbVar13" identifier == identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar21 = (byte *)(uint)*pbVar34;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar34" identifier = (binary_expression "(byte *)(uint)*pbVar34" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }" if (parenthesized_expression "(pbVar12 != (byte *)0x0)" ( (binary_expression "pbVar12 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }" { (expression_statement "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();" (assignment_expression "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar29 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar29 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar29 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar29 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar29 + -0x7cdc)" * (cast_expression "(code **)(pcVar29 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + -0x7cdc)" ( (binary_expression "pcVar29 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar29 = *(code **)(puVar31 + -0x160);" (assignment_expression "pcVar29 = *(code **)(puVar31 + -0x160)" identifier = (pointer_expression "*(code **)(puVar31 + -0x160)" * (cast_expression "(code **)(puVar31 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x160)" ( (binary_expression "puVar31 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);" (assignment_expression "pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4)" identifier = (pointer_expression "*(byte **)(*piVar22 + (int)pbVar21 * 4)" * (cast_expression "(byte **)(*piVar22 + (int)pbVar21 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar22 + (int)pbVar21 * 4)" ( (binary_expression "*piVar22 + (int)pbVar21 * 4" (pointer_expression "*piVar22" * identifier) + (binary_expression "(int)pbVar21 * 4" (cast_expression "(int)pbVar21" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = pbVar11;" (assignment_expression "unaff_s6 = pbVar11" identifier = identifier) ;) (if_statement "if (pbVar21 != pbVar11) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar21 != pbVar11)" ( (binary_expression "pbVar21 != pbVar11" identifier != identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar26 = *(byte **)(puVar31 + -0x154);" (assignment_expression "pbVar26 = *(byte **)(puVar31 + -0x154)" identifier = (pointer_expression "*(byte **)(puVar31 + -0x154)" * (cast_expression "(byte **)(puVar31 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x154)" ( (binary_expression "puVar31 + -0x154" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar21 = (byte *)(uint)*pbVar26;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar26" identifier = (binary_expression "(byte *)(uint)*pbVar26" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar34 = pbVar34 + 1;" (assignment_expression "pbVar34 = pbVar34 + 1" identifier = (binary_expression "pbVar34 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar31 + -0x154) = pbVar26 + 1;" (assignment_expression "*(byte **)(puVar31 + -0x154) = pbVar26 + 1" (pointer_expression "*(byte **)(puVar31 + -0x154)" * (cast_expression "(byte **)(puVar31 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x154)" ( (binary_expression "puVar31 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar21 != (byte *)0x0)" ( (binary_expression "pbVar21 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar34 != pbVar13)" ( (binary_expression "pbVar34 != pbVar13" identifier != identifier) )) (compound_statement "{\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }" { (expression_statement "pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);" (assignment_expression "pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8)" identifier = (cast_expression "(byte *)(*(uint *)(puVar31 + 0x10) & 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar31 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar31 + 0x10) & 8" (pointer_expression "*(uint *)(puVar31 + 0x10)" * (cast_expression "(uint *)(puVar31 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" if (parenthesized_expression "(pbVar26 == (byte *)0x0)" ( (binary_expression "pbVar26 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar2 = 1;\n    }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" else (compound_statement "{\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" { (expression_statement "uVar2 = (uint)(*pbVar34 != 0x2f);" (assignment_expression "uVar2 = (uint)(*pbVar34 != 0x2f)" identifier = (call_expression "(uint)(*pbVar34 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar34 != 0x2f)" ( (binary_expression "*pbVar34 != 0x2f" (pointer_expression "*pbVar34" * identifier) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar31 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar31 + -0x2c)" * (cast_expression "(int *)(puVar31 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 == **(int **)(puVar31 + -0x144))" ( (binary_expression "iVar4 == **(int **)(puVar31 + -0x144)" identifier == (pointer_expression "**(int **)(puVar31 + -0x144)" * (pointer_expression "*(int **)(puVar31 + -0x144)" * (cast_expression "(int **)(puVar31 + -0x144)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x144)" ( (binary_expression "puVar31 + -0x144" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar35 = *(code **)(pcVar29 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(pcVar29 + -0x7b8c)" identifier = (pointer_expression "*(code **)(pcVar29 + -0x7b8c)" * (cast_expression "(code **)(pcVar29 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + -0x7b8c)" ( (binary_expression "pcVar29 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = rpl_fnmatch;" (assignment_expression "pcVar36 = rpl_fnmatch" identifier = identifier) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar29 = *(code **)(pcVar35 + 0x302e0);" (assignment_expression "pcVar29 = *(code **)(pcVar35 + 0x302e0)" identifier = (pointer_expression "*(code **)(pcVar35 + 0x302e0)" * (cast_expression "(code **)(pcVar35 + 0x302e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x302e0)" ( (binary_expression "pcVar35 + 0x302e0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar31 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar31 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar31 + -0x19c)" * (cast_expression "(uint *)(puVar31 + -0x19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x19c)" ( (binary_expression "puVar31 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar22 = *(int **)(pcVar35 + 0x30338);" (assignment_expression "piVar22 = *(int **)(pcVar35 + 0x30338)" identifier = (pointer_expression "*(int **)(pcVar35 + 0x30338)" * (cast_expression "(int **)(pcVar35 + 0x30338)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x30338)" ( (binary_expression "pcVar35 + 0x30338" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar31 + -0x180) = pbVar34;" (assignment_expression "*(byte **)(puVar31 + -0x180) = pbVar34" (pointer_expression "*(byte **)(puVar31 + -0x180)" * (cast_expression "(byte **)(puVar31 + -0x180)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x180)" ( (binary_expression "puVar31 + -0x180" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x198) = pbVar21;" (assignment_expression "*(byte **)(puVar31 + -0x198) = pbVar21" (pointer_expression "*(byte **)(puVar31 + -0x198)" * (cast_expression "(byte **)(puVar31 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x198)" ( (binary_expression "puVar31 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;" (assignment_expression "*(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c" (pointer_expression "*(code **)(puVar31 + -0x1c8)" * (cast_expression "(code **)(puVar31 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar35 + 0x37e9c" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar31 + -0x17c) = pcVar36;" (assignment_expression "*(code **)(puVar31 + -0x17c) = pcVar36" (pointer_expression "*(code **)(puVar31 + -0x17c)" * (cast_expression "(code **)(puVar31 + -0x17c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x17c)" ( (binary_expression "puVar31 + -0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x184) = iVar10;" (assignment_expression "*(int *)(puVar31 + -0x184) = iVar10" (pointer_expression "*(int *)(puVar31 + -0x184)" * (cast_expression "(int *)(puVar31 + -0x184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x184)" ( (binary_expression "puVar31 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar31 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar31 + -0x188)" * (cast_expression "(byte **)(puVar31 + -0x188)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x188)" ( (binary_expression "puVar31 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x18c) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x18c) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x18c)" * (cast_expression "(int **)(puVar31 + -0x18c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x18c)" ( (binary_expression "puVar31 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -400) = pbVar26;" (assignment_expression "*(byte **)(puVar31 + -400) = pbVar26" (pointer_expression "*(byte **)(puVar31 + -400)" * (cast_expression "(byte **)(puVar31 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -400)" ( (binary_expression "puVar31 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x194) = pbVar13;" (assignment_expression "*(byte **)(puVar31 + -0x194) = pbVar13" (pointer_expression "*(byte **)(puVar31 + -0x194)" * (cast_expression "(byte **)(puVar31 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x194)" ( (binary_expression "puVar31 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x1a0) = pbVar12;" (assignment_expression "*(byte **)(puVar31 + -0x1a0) = pbVar12" (pointer_expression "*(byte **)(puVar31 + -0x1a0)" * (cast_expression "(byte **)(puVar31 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1a0)" ( (binary_expression "puVar31 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x1b4) = iVar4;" (assignment_expression "*(int *)(puVar31 + -0x1b4) = iVar4" (pointer_expression "*(int *)(puVar31 + -0x1b4)" * (cast_expression "(int *)(puVar31 + -0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1b4)" ( (binary_expression "puVar31 + -0x1b4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar31 + -0x1b8) = pbVar33;" (assignment_expression "*(byte **)(puVar31 + -0x1b8) = pbVar33" (pointer_expression "*(byte **)(puVar31 + -0x1b8)" * (cast_expression "(byte **)(puVar31 + -0x1b8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1b8)" ( (binary_expression "puVar31 + -0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x1a4) = *piVar22;" (assignment_expression "*(int *)(puVar31 + -0x1a4) = *piVar22" (pointer_expression "*(int *)(puVar31 + -0x1a4)" * (cast_expression "(int *)(puVar31 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1a4)" ( (binary_expression "puVar31 + -0x1a4" identifier + number_literal) )))) = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "iVar10 = (*pcVar29)();" (assignment_expression "iVar10 = (*pcVar29)()" identifier = (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" if (parenthesized_expression "(iVar10 != 1)" ( (binary_expression "iVar10 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" { (expression_statement "puVar20 = puVar31 + -0x1ac;" (assignment_expression "puVar20 = puVar31 + -0x1ac" identifier = (binary_expression "puVar31 + -0x1ac" identifier + number_literal)) ;) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = puVar31 + -0x1b4;" (assignment_expression "puVar23 = puVar31 + -0x1b4" identifier = (binary_expression "puVar31 + -0x1b4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar31 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1ac)" ( (binary_expression "puVar31 + -0x1ac" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x1a8)" * (cast_expression "(undefined4 *)(puVar31 + -0x1a8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1a8)" ( (binary_expression "puVar31 + -0x1a8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = (*pcVar35)(0,puVar23,0,puVar20);" (assignment_expression "iVar10 = (*pcVar35)(0,puVar23,0,puVar20)" identifier = (call_expression "(*pcVar35)(0,puVar23,0,puVar20)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(0,puVar23,0,puVar20)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "uVar2 = iVar10 + 1;" (assignment_expression "uVar2 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" { (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" ( (pointer_expression "**(code **)(iVar4 + -0x7b68)" * (pointer_expression "*(code **)(iVar4 + -0x7b68)" * (cast_expression "(code **)(iVar4 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b68)" ( (binary_expression "iVar4 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "uVar5 = 0x129;" (assignment_expression "uVar5 = 0x129" identifier = number_literal) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) goto LAB_0002b570;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;)) (expression_statement "piVar25 = (int *)(puVar31 + -0x1b8);" (assignment_expression "piVar25 = (int *)(puVar31 + -0x1b8)" identifier = (cast_expression "(int *)(puVar31 + -0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1b8)" ( (binary_expression "puVar31 + -0x1b8" identifier + number_literal) )))) ;) (expression_statement "piVar19 = piVar25;" (assignment_expression "piVar19 = piVar25" identifier = identifier) ;) (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(0,piVar25,0,puVar20)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "iVar17 = iVar10 + 1;" (assignment_expression "iVar17 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" { (expression_statement "iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);" (assignment_expression "iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" ( (pointer_expression "**(code **)(iVar4 + -0x7b68)" * (pointer_expression "*(code **)(iVar4 + -0x7b68)" * (cast_expression "(code **)(iVar4 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b68)" ( (binary_expression "iVar4 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" { (expression_statement "uVar5 = 0x12d;" (assignment_expression "uVar5 = 0x12d" identifier = number_literal) ;) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;) })) (expression_statement "uVar18 = uVar2 + iVar17;" (assignment_expression "uVar18 = uVar2 + iVar17" identifier = (binary_expression "uVar2 + iVar17" identifier + identifier)) ;) (if_statement "if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" if (parenthesized_expression "((uVar2 <= uVar18) && (uVar18 < 0x40000000))" ( (binary_expression "(uVar2 <= uVar18) && (uVar18 < 0x40000000)" (parenthesized_expression "(uVar2 <= uVar18)" ( (binary_expression "uVar2 <= uVar18" identifier <= identifier) )) && (parenthesized_expression "(uVar18 < 0x40000000)" ( (binary_expression "uVar18 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" { (if_statement "if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(uVar18 < 2000)" ( (binary_expression "uVar18 < 2000" identifier < number_literal) )) (compound_statement "{\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar18 * 4 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar18 * 4 + 7 & 0xfffffff8)" ( (binary_expression "uVar18 * 4 + 7 & 0xfffffff8" (binary_expression "uVar18 * 4 + 7" (binary_expression "uVar18 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar24 = puVar31 + iVar16 + -0x1c8;" (assignment_expression "puVar24 = puVar31 + iVar16 + -0x1c8" identifier = (binary_expression "puVar31 + iVar16 + -0x1c8" (binary_expression "puVar31 + iVar16" identifier + identifier) + number_literal)) ;) (expression_statement "piVar19 = (int *)(puVar24 + uVar2 * 4);" (assignment_expression "piVar19 = (int *)(puVar24 + uVar2 * 4)" identifier = (cast_expression "(int *)(puVar24 + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + uVar2 * 4)" ( (binary_expression "puVar24 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) ;) (expression_statement "(**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);" (call_expression "(**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(puVar24,puVar23,uVar2,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }" { (labeled_statement "LAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );" statement_identifier : (do_statement "do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );" do (compound_statement "{\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              }" { (expression_statement "uVar5 = 0x147;" (assignment_expression "uVar5 = 0x147" identifier = number_literal) ;) (labeled_statement "LAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);" statement_identifier : (expression_statement "(**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);" (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar4 + -0x7ce0)" * (pointer_expression "*(code **)(iVar4 + -0x7ce0)" * (cast_expression "(code **)(iVar4 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7ce0)" ( (binary_expression "iVar4 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558)" ( (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) , identifier , (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar4 + -0x7e24)" * (cast_expression "(int *)(iVar4 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x7e24)" ( (binary_expression "iVar4 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "(**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);" (call_expression "(**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" ( (pointer_expression "**(code **)(iVar4 + -0x7b28)" * (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(piVar19,piVar25,iVar17,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + iVar16 + -0x1d0)" * (cast_expression "(byte **)(puVar31 + iVar16 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + iVar16 + -0x1d0)" ( (binary_expression "puVar31 + iVar16 + -0x1d0" (binary_expression "puVar31 + iVar16" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( identifier , identifier , (binary_expression "piVar19 + iVar10" identifier + identifier) , (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar27 << 0x1d)" ( (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) (expression_statement "iVar16 = (**(code **)(iVar4 + -0x7be8))();" (assignment_expression "iVar16 = (**(code **)(iVar4 + -0x7be8))()" identifier = (call_expression "(**(code **)(iVar4 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7be8))" ( (pointer_expression "**(code **)(iVar4 + -0x7be8)" * (pointer_expression "*(code **)(iVar4 + -0x7be8)" * (cast_expression "(code **)(iVar4 + -0x7be8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7be8)" ( (binary_expression "iVar4 + -0x7be8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar31 + -0x1bc) = iVar16;" (assignment_expression "*(int *)(puVar31 + -0x1bc) = iVar16" (pointer_expression "*(int *)(puVar31 + -0x1bc)" * (cast_expression "(int *)(puVar31 + -0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar19 = (int *)(iVar16 + uVar2 * 4);" (assignment_expression "piVar19 = (int *)(iVar16 + uVar2 * 4)" identifier = (cast_expression "(int *)(iVar16 + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar2 * 4)" ( (binary_expression "iVar16 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) ;) (expression_statement "(*pcVar35)(iVar16,puVar23,uVar2,puVar20);" (call_expression "(*pcVar35)(iVar16,puVar23,uVar2,puVar20)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(iVar16,puVar23,uVar2,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) goto LAB_0002b590;" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b590;" goto statement_identifier ;)) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar4 + -0x7b28)" * (cast_expression "(code **)(iVar4 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7b28)" ( (binary_expression "iVar4 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar35)(piVar19,piVar25,iVar17,puVar20);" (call_expression "(*pcVar35)(piVar19,piVar25,iVar17,puVar20)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(piVar19,piVar25,iVar17,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar31 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0x1d0)" * (cast_expression "(byte **)(puVar31 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1d0)" ( (binary_expression "puVar31 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) , identifier , (binary_expression "piVar19 + iVar10" identifier + identifier) , (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar27 << 0x1d)" ( (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))" ( (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" * (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b54)" ( (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar31 + -0x1bc))" ( (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1bc)" ( (binary_expression "puVar31 + -0x1bc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();" (assignment_expression "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar4 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7c3c))" ( (pointer_expression "**(code **)(iVar4 + -0x7c3c)" * (pointer_expression "*(code **)(iVar4 + -0x7c3c)" * (cast_expression "(code **)(iVar4 + -0x7c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7c3c)" ( (binary_expression "iVar4 + -0x7c3c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (expression_statement "*puVar3 = 0xc;" (assignment_expression "*puVar3 = 0xc" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) })) (expression_statement "piVar19 = *(int **)(puVar31 + -0x1b8);" (assignment_expression "piVar19 = *(int **)(puVar31 + -0x1b8)" identifier = (pointer_expression "*(int **)(puVar31 + -0x1b8)" * (cast_expression "(int **)(puVar31 + -0x1b8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1b8)" ( (binary_expression "puVar31 + -0x1b8" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19)" identifier = (call_expression "(**(code **)(iVar4 + -0x7c0c))(piVar19)" (parenthesized_expression "(**(code **)(iVar4 + -0x7c0c))" ( (pointer_expression "**(code **)(iVar4 + -0x7c0c)" * (pointer_expression "*(code **)(iVar4 + -0x7c0c)" * (cast_expression "(code **)(iVar4 + -0x7c0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + -0x7c0c)" ( (binary_expression "iVar4 + -0x7c0c" identifier + number_literal) ))))) )) (argument_list "(piVar19)" ( identifier )))) ;) (expression_statement "*(byte **)(puVar31 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0x1d0)" * (cast_expression "(byte **)(puVar31 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1d0)" ( (binary_expression "puVar31 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar31 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar31 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1b4)" ( (binary_expression "puVar31 + -0x1b4" identifier + number_literal) )))) , identifier , (binary_expression "(int)piVar19 + iVar10" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) , (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar27 << 0x1d)" ( (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1c8)" * (cast_expression "(int *)(puVar31 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1c8)" ( (binary_expression "puVar31 + -0x1c8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);" statement_identifier : (expression_statement "iVar4 = *(int *)(puVar31 + -0x1a4);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1a4)" identifier = (pointer_expression "*(int *)(puVar31 + -0x1a4)" * (cast_expression "(int *)(puVar31 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x1a4)" ( (binary_expression "puVar31 + -0x1a4" identifier + number_literal) ))))) ;)) (if_statement "if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }" if (parenthesized_expression "(iVar4 != *piVar22)" ( (binary_expression "iVar4 != *piVar22" identifier != (pointer_expression "*piVar22" * identifier)) )) (compound_statement "{\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }" { (expression_statement "(**(code **)(iVar10 + -0x7b8c))();" (call_expression "(**(code **)(iVar10 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar10 + -0x7b8c))" ( (pointer_expression "**(code **)(iVar10 + -0x7b8c)" * (pointer_expression "*(code **)(iVar10 + -0x7b8c)" * (cast_expression "(code **)(iVar10 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7b8c)" ( (binary_expression "iVar10 + -0x7b8c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar10 = piVar19[8];" (assignment_expression "iVar10 = piVar19[8]" identifier = (subscript_expression "piVar19[8]" identifier [ number_literal ])) ;) (expression_statement "iVar17 = *piVar19;" (assignment_expression "iVar17 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "uVar2 = (uint)(iVar10 < iVar17);" (assignment_expression "uVar2 = (uint)(iVar10 < iVar17)" identifier = (call_expression "(uint)(iVar10 < iVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 < iVar17)" ( (binary_expression "iVar10 < iVar17" identifier < identifier) )))) ;) (expression_statement "uVar18 = piVar19[7];" (assignment_expression "uVar18 = piVar19[7]" identifier = (subscript_expression "piVar19[7]" identifier [ number_literal ])) ;) (if_statement "if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }" if (parenthesized_expression "((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0))" ( (binary_expression "(uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)" (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)" ( (comma_expression "uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0" (assignment_expression "uVar2 = (uint)((int)uVar18 < iVar10)" identifier = (call_expression "(uint)((int)uVar18 < iVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < iVar10)" ( (binary_expression "(int)uVar18 < iVar10" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) , (binary_expression "uVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }" { (expression_statement "iVar9 = iVar17 - iVar10;" (assignment_expression "iVar9 = iVar17 - iVar10" identifier = (binary_expression "iVar17 - iVar10" identifier - identifier)) ;) (expression_statement "uVar7 = uVar18;" (assignment_expression "uVar7 = uVar18" identifier = identifier) ;) (expression_statement "iVar16 = iVar17;" (assignment_expression "iVar16 = iVar17" identifier = identifier) ;) (do_statement "do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));" do (compound_statement "{\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      }" { (expression_statement "iVar14 = iVar10 - uVar7;" (assignment_expression "iVar14 = iVar10 - uVar7" identifier = (binary_expression "iVar10 - uVar7" identifier - identifier)) ;) (expression_statement "uVar2 = iVar9 + uVar7;" (assignment_expression "uVar2 = iVar9 + uVar7" identifier = (binary_expression "iVar9 + uVar7" identifier + identifier)) ;) (if_statement "if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" if (parenthesized_expression "(iVar14 < iVar9)" ( (binary_expression "iVar14 < iVar9" identifier < identifier) )) (compound_statement "{\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }" { (expression_statement "iVar16 = iVar16 - iVar14;" (assignment_expression "iVar16 = iVar16 - iVar14" identifier = (binary_expression "iVar16 - iVar14" identifier - identifier)) ;) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar7 * 4)" ( (binary_expression "iVar4 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);" (assignment_expression "puVar6 = (undefined4 *)(iVar4 + iVar16 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + iVar16 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar16 * 4)" ( (binary_expression "iVar4 + iVar16 * 4" identifier + (binary_expression "iVar16 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);" do (compound_statement "{\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          }" { (expression_statement "puVar15 = puVar3 + 1;" (assignment_expression "puVar15 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar6;" (assignment_expression "*puVar3 = *puVar6" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "uVar2 = uVar7;" (assignment_expression "uVar2 = uVar7" identifier = identifier) ;) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15)" ( (binary_expression "(undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15" (cast_expression "(undefined4 *)(iVar4 + (iVar14 + uVar7) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + (iVar14 + uVar7) * 4)" ( (binary_expression "iVar4 + (iVar14 + uVar7) * 4" identifier + (binary_expression "(iVar14 + uVar7) * 4" (parenthesized_expression "(iVar14 + uVar7)" ( (binary_expression "iVar14 + uVar7" identifier + identifier) )) * number_literal)) ))) != identifier) )) ;) }) (else_clause "else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" else (compound_statement "{\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" { (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar7 * 4)" ( (binary_expression "iVar4 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);" (assignment_expression "puVar6 = (undefined4 *)(iVar4 + iVar10 * 4)" identifier = (cast_expression "(undefined4 *)(iVar4 + iVar10 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + iVar10 * 4)" ( (binary_expression "iVar4 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));" do (compound_statement "{\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          }" { (expression_statement "puVar15 = puVar3 + 1;" (assignment_expression "puVar15 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "*puVar3 = *puVar6;" (assignment_expression "*puVar3 = *puVar6" (pointer_expression "*puVar3" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar15 != (undefined4 *)(iVar4 + uVar2 * 4))" ( (binary_expression "puVar15 != (undefined4 *)(iVar4 + uVar2 * 4)" identifier != (cast_expression "(undefined4 *)(iVar4 + uVar2 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar2 * 4)" ( (binary_expression "iVar4 + uVar2 * 4" identifier + (binary_expression "uVar2 * 4" identifier * number_literal)) )))) )) ;) }))) }) while (parenthesized_expression "((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10))" ( (binary_expression "(iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10)" (parenthesized_expression "(iVar10 < iVar16)" ( (binary_expression "iVar10 < iVar16" identifier < identifier) )) && (parenthesized_expression "(iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10)" ( (comma_expression "iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10" (assignment_expression "iVar9 = iVar16 - iVar10" identifier = (binary_expression "iVar16 - iVar10" identifier - identifier)) , (comma_expression "uVar7 = uVar2, (int)uVar2 < iVar10" (assignment_expression "uVar7 = uVar2" identifier = identifier) , (binary_expression "(int)uVar2 < iVar10" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier))) ))) )) ;) })) (expression_statement "piVar19[8] = iVar17;" (assignment_expression "piVar19[8] = iVar17" (subscript_expression "piVar19[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar19[7] = (iVar17 - iVar10) + uVar18;" (assignment_expression "piVar19[7] = (iVar17 - iVar10) + uVar18" (subscript_expression "piVar19[7]" identifier [ number_literal ]) = (binary_expression "(iVar17 - iVar10) + uVar18" (parenthesized_expression "(iVar17 - iVar10)" ( (binary_expression "iVar17 - iVar10" identifier - identifier) )) + identifier)) ;) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - LIT) < LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) << LIT) ))) < LIT) )) (compound_statement { (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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , IDENT , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;) (return_statement return IDENT ;) })) (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ))) )) (compound_statement { (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 = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return LIT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (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 (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != LIT) )))) ;) }))) })) (labeled_statement 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 IDENT == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return IDENT ;) })) (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 = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) < LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT)) )) (compound_statement { (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) << LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression 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) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) & LIT) )) - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) & LIT) )) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) )) * LIT)) )))) + IDENT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) - LIT)) )) (break_statement break ;)) (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 + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (labeled_statement statement_identifier : (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 = (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) * LIT)) ))))) ))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) != LIT) )))) ;) }))) })) (labeled_statement 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 IDENT == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return IDENT ;) })) (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 = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (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 IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) }) while (parenthesized_expression ( BOOL )) ;)) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (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 IDENT != LIT) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression IDENT + IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))) >> LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (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 (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (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 = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) , (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement 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 IDENT != (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) ))) != IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) )) ;) }))) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - IDENT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT))) ))) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + IDENT)) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}" (type_identifier "uint") (function_declarator "FUN_00028c14(int param_1,byte *param_2,byte *param_3,byte *param_4)" (identifier "FUN_00028c14") (parameter_list "(int param_1,byte *param_2,byte *param_3,byte *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "byte *param_4" (type_identifier "byte") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  byte bVar8;\n  undefined4 *puVar6;\n  uint uVar7;\n  int iVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  byte *pbVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int iVar17;\n  uint uVar18;\n  int *piVar19;\n  undefined1 *puVar20;\n  uint unaff_s1;\n  undefined *unaff_s2;\n  byte *pbVar21;\n  int *unaff_s4;\n  int *piVar22;\n  int *unaff_s5;\n  undefined1 *puVar23;\n  undefined1 *puVar24;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  byte *pbVar33;\n  byte *pbVar34;\n  code *pcVar35;\n  code *pcVar36;\n  undefined1 auStack_68 [24];\n  uint local_44;\n  int *local_34;\n  int local_30;\n  int *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar20 = auStack_68;\n  pbVar26 = param_2 + 4;\n  local_30 = 0;\n  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;\n  pbVar12 = param_2;\n  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar10 = *(int *)(param_2 + 4);\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }\nLAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar35 = FUN_00029320;\n  piVar22 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar30 = puVar28 + 0x39dd0;\n  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);\n  *(byte **)(puVar20 + -0xc) = pbVar26;\n  *(undefined4 **)(puVar20 + -0x558) = puVar3;\n  *(undefined **)(puVar20 + -0x570) = puVar30;\n  *(undefined1 **)(puVar20 + -8) = auStack_68;\n  *(undefined **)(puVar20 + -0x1c) = puVar1;\n  *(code **)(puVar20 + -4) = pcVar35;\n  *(byte **)(puVar20 + -0x10) = unaff_s6;\n  *(int **)(puVar20 + -0x14) = unaff_s5;\n  *(int **)(puVar20 + -0x18) = unaff_s4;\n  *(undefined **)(puVar20 + -0x20) = unaff_s2;\n  *(uint *)(puVar20 + -0x24) = unaff_s1;\n  *(byte **)(puVar20 + -0x28) = param_2;\n  iVar10 = *piVar22;\n  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;\n  uVar2 = *(uint *)(puVar20 + 0x10);\n  pbVar26 = param_3;\n  pbVar33 = pbVar12;\n  if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }\n  uVar2 = 0;\n  piVar22 = unaff_s4;\n  if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }\nLAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);\n  if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(puVar30 + -0x7b8c);\n  pcVar36 = FUN_00029f20;\n  (*pcVar35)();\n  puVar31 = puVar20 + -0x5f0;\n  pcVar29 = *(code **)(pcVar35 + 0x315c4);\n  *(byte **)(puVar20 + -0x590) = pbVar33;\n  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;\n  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);\n  *(byte **)(puVar20 + -0x5b0) = param_2;\n  *(int *)(puVar20 + -0x594) = iVar10;\n  pbVar27 = pbVar12 + 1;\n  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];\n  *(int **)(puVar20 + -0x5a0) = piVar22;\n  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;\n  *(int *)(puVar20 + -0x588) = iVar4;\n  *(code **)(puVar20 + -0x58c) = pcVar36;\n  *(byte **)(puVar20 + -0x598) = unaff_s6;\n  *(int **)(puVar20 + -0x59c) = unaff_s5;\n  *(byte **)(puVar20 + -0x5a4) = param_3;\n  *(uint *)(puVar20 + -0x5ac) = unaff_s1;\n  *(byte **)(puVar20 + -0x5c4) = param_4;\n  *(undefined4 *)(puVar20 + -0x5b8) = 0;\n  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;\n  pbVar33 = pbVar12;\n  pbVar13 = pbVar26;\n  uVar5 = (*pcVar29)(pbVar12);\n  iVar10 = (int)(char)pbVar12[1];\n  iVar4 = *(int *)(puVar20 + -0x5d8);\n  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;\n  if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }\nLAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);\n  pcVar35 = *(code **)(iVar4 + -0x7b8c);\n  if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }\n  pcVar36 = FUN_0002a610;\n  (*pcVar35)();\n  pcVar29 = pcVar35 + 0x38ae0;\n  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);\n  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;\n  *(byte **)(puVar31 + -0x1c) = param_3;\n  *(code **)(puVar31 + -0x160) = pcVar29;\n  *(code **)(puVar31 + -4) = pcVar36;\n  *(byte **)(puVar31 + -0xc) = pbVar27;\n  *(byte **)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(byte **)(puVar31 + -0x18) = pbVar26;\n  *(undefined4 **)(puVar31 + -0x20) = puVar3;\n  *(uint *)(puVar31 + -0x24) = unaff_s1;\n  *(byte **)(puVar31 + -0x28) = pbVar12;\n  *(undefined4 **)(puVar31 + -0x144) = puVar6;\n  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;\n  pbVar21 = (byte *)(uint)*pbVar11;\n  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;\n  iVar10 = *(int *)(pcVar35 + 0x30cbc);\n  pbVar27 = pbVar13;\n  pbVar34 = pbVar33;\n  if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }\n  uVar2 = 0;\n  if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);\n  if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }\n  pcVar35 = *(code **)(pcVar29 + -0x7b8c);\n  pcVar36 = rpl_fnmatch;\n  (*pcVar35)();\n  pcVar29 = *(code **)(pcVar35 + 0x302e0);\n  *(uint *)(puVar31 + -0x19c) = unaff_s1;\n  piVar22 = *(int **)(pcVar35 + 0x30338);\n  *(byte **)(puVar31 + -0x180) = pbVar34;\n  *(byte **)(puVar31 + -0x198) = pbVar21;\n  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;\n  *(code **)(puVar31 + -0x17c) = pcVar36;\n  *(int *)(puVar31 + -0x184) = iVar10;\n  *(byte **)(puVar31 + -0x188) = unaff_s6;\n  *(int **)(puVar31 + -0x18c) = unaff_s5;\n  *(byte **)(puVar31 + -400) = pbVar26;\n  *(byte **)(puVar31 + -0x194) = pbVar13;\n  *(byte **)(puVar31 + -0x1a0) = pbVar12;\n  *(int *)(puVar31 + -0x1b4) = iVar4;\n  *(byte **)(puVar31 + -0x1b8) = pbVar33;\n  *(int *)(puVar31 + -0x1a4) = *piVar22;\n  iVar10 = (*pcVar29)();\n  iVar4 = *(int *)(puVar31 + -0x1c8);\n  if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar19 = *(int **)(puVar31 + -0x1b8);\n  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);\n  *(byte **)(puVar31 + -0x1d0) = pbVar27;\n  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar10 = *(int *)(puVar31 + -0x1c8);\nLAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);\n  if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }\n  return uVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined4 *puVar15;" (type_identifier "undefined4") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "undefined1 *puVar20;" (type_identifier "undefined1") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "uint unaff_s1;" (type_identifier "uint") (identifier "unaff_s1") (; ";")) (declaration "undefined *unaff_s2;" (type_identifier "undefined") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "byte *pbVar21;" (type_identifier "byte") (pointer_declarator "*pbVar21" (* "*") (identifier "pbVar21")) (; ";")) (declaration "int *unaff_s4;" (primitive_type "int") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "int *piVar22;" (primitive_type "int") (pointer_declarator "*piVar22" (* "*") (identifier "piVar22")) (; ";")) (declaration "int *unaff_s5;" (primitive_type "int") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "undefined1 *puVar23;" (type_identifier "undefined1") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "undefined1 *puVar24;" (type_identifier "undefined1") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "byte *unaff_s6;" (type_identifier "byte") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "int *piVar25;" (primitive_type "int") (pointer_declarator "*piVar25" (* "*") (identifier "piVar25")) (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "byte *pbVar27;" (type_identifier "byte") (pointer_declarator "*pbVar27" (* "*") (identifier "pbVar27")) (; ";")) (declaration "undefined *puVar28;" (type_identifier "undefined") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "code *pcVar29;" (type_identifier "code") (pointer_declarator "*pcVar29" (* "*") (identifier "pcVar29")) (; ";")) (declaration "undefined *puVar30;" (type_identifier "undefined") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "undefined1 *puVar31;" (type_identifier "undefined1") (pointer_declarator "*puVar31" (* "*") (identifier "puVar31")) (; ";")) (declaration "undefined1 *puVar32;" (type_identifier "undefined1") (pointer_declarator "*puVar32" (* "*") (identifier "puVar32")) (; ";")) (declaration "byte *pbVar33;" (type_identifier "byte") (pointer_declarator "*pbVar33" (* "*") (identifier "pbVar33")) (; ";")) (declaration "byte *pbVar34;" (type_identifier "byte") (pointer_declarator "*pbVar34" (* "*") (identifier "pbVar34")) (; ";")) (declaration "code *pcVar35;" (type_identifier "code") (pointer_declarator "*pcVar35" (* "*") (identifier "pcVar35")) (; ";")) (declaration "code *pcVar36;" (type_identifier "code") (pointer_declarator "*pcVar36" (* "*") (identifier "pcVar36")) (; ";")) (declaration "undefined1 auStack_68 [24];" (type_identifier "undefined1") (array_declarator "auStack_68 [24]" (identifier "auStack_68") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int *local_2c;" (primitive_type "int") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_0005b58c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0005b58c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0005b58c")) (; ";")) (expression_statement "puVar20 = auStack_68;" (assignment_expression "puVar20 = auStack_68" (identifier "puVar20") (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "pbVar26 = param_2 + 4;" (assignment_expression "pbVar26 = param_2 + 4" (identifier "pbVar26") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = *(int **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(int **)PTR___stack_chk_guard_0005b58c" (identifier "local_2c") (= "=") (pointer_expression "*(int **)PTR___stack_chk_guard_0005b58c" (* "*") (cast_expression "(int **)PTR___stack_chk_guard_0005b58c" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_0005b58c")))) (; ";")) (expression_statement "pbVar12 = param_2;" (assignment_expression "pbVar12 = param_2" (identifier "pbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);" (assignment_expression "local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2)" (identifier "local_44") (= "=") (call_expression "(*(code *)PTR_wcslen_0005b4a8)(param_2)" (parenthesized_expression "(*(code *)PTR_wcslen_0005b4a8)" (( "(") (pointer_expression "*(code *)PTR_wcslen_0005b4a8" (* "*") (cast_expression "(code *)PTR_wcslen_0005b4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wcslen_0005b4a8"))) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "puVar28 = PTR_DAT_0005b118;" (assignment_expression "puVar28 = PTR_DAT_0005b118" (identifier "puVar28") (= "=") (identifier "PTR_DAT_0005b118")) (; ";")) (expression_statement "iVar10 = *(int *)(param_2 + 4);" (assignment_expression "iVar10 = *(int *)(param_2 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    local_34 = &local_30;\n    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\n    do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);\n  }" ({ "{") (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" (identifier "unaff_s5") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = &local_30;" (assignment_expression "local_34 = &local_30" (identifier "local_34") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "unaff_s2 = PTR_DAT_0005b2cc + -0x78dc" (identifier "unaff_s2") (= "=") (binary_expression "PTR_DAT_0005b2cc + -0x78dc" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78dc"))) (; ";")) (expression_statement "unaff_s1 = (uint)(param_1 - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(param_1 - 0x3fU < 2)" (identifier "unaff_s1") (= "=") (call_expression "(uint)(param_1 - 0x3fU < 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 - 0x3fU < 2)" (( "(") (binary_expression "param_1 - 0x3fU < 2" (binary_expression "param_1 - 0x3fU" (identifier "param_1") (- "-") (number_literal "0x3fU")) (< "<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "puVar20 = auStack_68;" (assignment_expression "puVar20 = auStack_68" (identifier "puVar20") (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "unaff_s6 = pbVar26;" (assignment_expression "unaff_s6 = pbVar26" (identifier "unaff_s6") (= "=") (identifier "pbVar26")) (; ";")) (do_statement "do {\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    } while (iVar10 != 0);" (do "do") (compound_statement "{\n      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }\n      if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }\n      iVar10 = *(int *)(pbVar26 + 4);\n      pbVar33 = pbVar26 + 4;\n      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }\n      if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }\n      pbVar12 = (byte *)0x5d;\n      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }\n      iVar10 = *(int *)(pbVar33 + 4);\njoined_r0x00028e80:\n    }" ({ "{") (while_statement "while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }" (while "while") (parenthesized_expression "(unaff_s4 = (int *)puVar28, iVar10 != 0x5b)" (( "(") (comma_expression "unaff_s4 = (int *)puVar28, iVar10 != 0x5b" (assignment_expression "unaff_s4 = (int *)puVar28" (identifier "unaff_s4") (= "=") (cast_expression "(int *)puVar28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar28"))) (, ",") (binary_expression "iVar10 != 0x5b" (identifier "iVar10") (!= "!=") (number_literal "0x5b"))) () ")")) (compound_statement "{\n        pbVar12 = &DAT_c0000601;\n        uVar2 = iVar10 - 0x21;\n        param_3 = (byte *)(uint)(uVar2 < 0x20);\n        if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }\n        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }\nLAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);\n        pbVar26 = pbVar26 + 4;\n        if (iVar10 == 0) goto LAB_00028d20;\n      }" ({ "{") (expression_statement "pbVar12 = &DAT_c0000601;" (assignment_expression "pbVar12 = &DAT_c0000601" (identifier "pbVar12") (= "=") (pointer_expression "&DAT_c0000601" (& "&") (identifier "DAT_c0000601"))) (; ";")) (expression_statement "uVar2 = iVar10 - 0x21;" (assignment_expression "uVar2 = iVar10 - 0x21" (identifier "uVar2") (= "=") (binary_expression "iVar10 - 0x21" (identifier "iVar10") (- "-") (number_literal "0x21"))) (; ";")) (expression_statement "param_3 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "param_3 = (byte *)(uint)(uVar2 < 0x20)" (identifier "param_3") (= "=") (cast_expression "(byte *)(uint)(uVar2 < 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < 0x20)" (( "(") (binary_expression "uVar2 < 0x20" (identifier "uVar2") (< "<") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (param_3 != (byte *)0x0) {\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }" (if "if") (parenthesized_expression "(param_3 != (byte *)0x0)" (( "(") (binary_expression "param_3 != (byte *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }\n          if (iVar10 != 0x29) goto LAB_00028e9c;\n          if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }\n          if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }\n          goto LAB_00028d20;\n        }" ({ "{") (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }" (while "while") (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" (( "(") (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" (( "(") (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" (( "(") (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" (number_literal "0xc0000601U") (>> ">>") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "0x1f")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            iVar10 = *(int *)(pbVar26 + 4);\n            if (iVar10 != 0x28) goto LAB_00028d14;\n            param_3 = (byte *)0x1;\n            unaff_s5 = (int *)((int)unaff_s5 + 1);\n            pbVar26 = pbVar26 + 4;\n            uVar2 = 7;\n          }" ({ "{") (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar26 + 4)" (* "*") (cast_expression "(int *)(pbVar26 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (iVar10 != 0x28) goto LAB_00028d14;" (if "if") (parenthesized_expression "(iVar10 != 0x28)" (( "(") (binary_expression "iVar10 != 0x28" (identifier "iVar10") (!= "!=") (number_literal "0x28")) () ")")) (goto_statement "goto LAB_00028d14;" (goto "goto") (statement_identifier "LAB_00028d14") (; ";"))) (expression_statement "param_3 = (byte *)0x1;" (assignment_expression "param_3 = (byte *)0x1" (identifier "param_3") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)((int)unaff_s5 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5 + 1)" (( "(") (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" (identifier "uVar2") (= "=") (number_literal "7")) (; ";")) (} "}"))) (if_statement "if (iVar10 != 0x29) goto LAB_00028e9c;" (if "if") (parenthesized_expression "(iVar10 != 0x29)" (( "(") (binary_expression "iVar10 != 0x29" (identifier "iVar10") (!= "!=") (number_literal "0x29")) () ")")) (goto_statement "goto LAB_00028e9c;" (goto "goto") (statement_identifier "LAB_00028e9c") (; ";"))) (if_statement "if (unaff_s5 != (int *)0x0) {\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }" (if "if") (parenthesized_expression "(unaff_s5 != (int *)0x0)" (( "(") (binary_expression "unaff_s5 != (int *)0x0" (identifier "unaff_s5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar10 = *(int *)(pbVar26 + 4);\n            unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_00028d14:\n            pbVar26 = pbVar26 + 4;\n            goto joined_r0x00028e80;\n          }" ({ "{") (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar26 + 4)" (* "*") (cast_expression "(int *)(pbVar26 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)((int)unaff_s5 + -1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5 + -1)" (( "(") (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (labeled_statement "LAB_00028d14:\n            pbVar26 = pbVar26 + 4;" (statement_identifier "LAB_00028d14") (: ":") (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4"))) (; ";"))) (goto_statement "goto joined_r0x00028e80;" (goto "goto") (statement_identifier "joined_r0x00028e80") (; ";")) (} "}"))) (if_statement "if (1 < param_1 - 0x3fU) {\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" (if "if") (parenthesized_expression "(1 < param_1 - 0x3fU)" (( "(") (binary_expression "1 < param_1 - 0x3fU" (number_literal "1") (< "<") (binary_expression "param_1 - 0x3fU" (identifier "param_1") (- "-") (number_literal "0x3fU"))) () ")")) (compound_statement "{\n            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" ({ "{") (expression_statement "local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (identifier "local_44") (= "=") (binary_expression "((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" (( "(") (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar26")) (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }" (if "if") (parenthesized_expression "((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c))" (( "(") (binary_expression "(local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)" (parenthesized_expression "(local_44 < 0x40000000)" (( "(") (binary_expression "local_44 < 0x40000000" (identifier "local_44") (< "<") (number_literal "0x40000000")) () ")")) (&& "&&") (parenthesized_expression "(local_44 * 4 < 0x1f3c)" (( "(") (binary_expression "local_44 * 4 < 0x1f3c" (binary_expression "local_44 * 4" (identifier "local_44") (* "*") (number_literal "4")) (< "<") (number_literal "0x1f3c")) () ")"))) () ")")) (compound_statement "{\n            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);\n            puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);\n            *puVar3 = 0;\n            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;\n            *local_34 = (int)(puVar20 + iVar10 + 0x18);\n            if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n            if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }\n                    \n                    \n            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();\n            return uVar2;\n          }" ({ "{") (expression_statement "iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8)" (identifier "iVar10") (= "=") (unary_expression "-(local_44 * 4 + 0xb & 0xfffffff8)" (- "-") (parenthesized_expression "(local_44 * 4 + 0xb & 0xfffffff8)" (( "(") (binary_expression "local_44 * 4 + 0xb & 0xfffffff8" (binary_expression "local_44 * 4 + 0xb" (binary_expression "local_44 * 4" (identifier "local_44") (* "*") (number_literal "4")) (+ "+") (number_literal "0xb")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);" (assignment_expression "puVar3 = (undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)\n                     (*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)\n                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" (( "(") (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" (* "*") (cast_expression "(code *)PTR_wmempcpy_0005b4a4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmempcpy_0005b4a4"))) () ")")) (argument_list "(puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2)" (( "(") (binary_expression "puVar20 + iVar10 + 0x1c" (binary_expression "puVar20 + iVar10" (identifier "puVar20") (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0x1c")) (, ",") (identifier "unaff_s6") (, ",") (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar26")) (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) (>> ">>") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + iVar10 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar20 + iVar10 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar20 + iVar10 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + iVar10 + 0x18)" (( "(") (binary_expression "puVar20 + iVar10 + 0x18" (binary_expression "puVar20 + iVar10" (identifier "puVar20") (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_34 = (int)(puVar20 + iVar10 + 0x18);" (assignment_expression "*local_34 = (int)(puVar20 + iVar10 + 0x18)" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (cast_expression "(int)(puVar20 + iVar10 + 0x18)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar20 + iVar10 + 0x18)" (( "(") (binary_expression "puVar20 + iVar10 + 0x18" (binary_expression "puVar20 + iVar10" (identifier "puVar20") (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (local_30 == 0) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" (if "if") (parenthesized_expression "(local_30 == 0)" (( "(") (binary_expression "local_30 == 0" (identifier "local_30") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" ({ "{") (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_0005b410" (* "*") (cast_expression "(code *)PTR___assert_fail_0005b410" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_0005b410"))) () ")")) (argument_list "(PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                 PTR_DAT_0005b2cc + -0x7564)" (( "(") (binary_expression "PTR_DAT_0005b2cc + -0x78bc" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78bc")) (, ",") (binary_expression "PTR_DAT_0005b2cc + -0x78cc" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78cc")) (, ",") (number_literal "0x454") (, ",") (binary_expression "PTR_DAT_0005b2cc + -0x7564" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7564")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (if_statement "if (*(int *)(pbVar26 + -4) != 0x29) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" (if "if") (parenthesized_expression "(*(int *)(pbVar26 + -4) != 0x29)" (( "(") (binary_expression "*(int *)(pbVar26 + -4) != 0x29" (pointer_expression "*(int *)(pbVar26 + -4)" (* "*") (cast_expression "(int *)(pbVar26 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + -4)" (( "(") (binary_expression "pbVar26 + -4" (identifier "pbVar26") (+ "+") (number_literal "-4")) () ")")))) (!= "!=") (number_literal "0x29")) () ")")) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" ({ "{") (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_0005b410" (* "*") (cast_expression "(code *)PTR___assert_fail_0005b410" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_0005b410"))) () ")")) (argument_list "(PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                 PTR_DAT_0005b2cc + -0x7564)" (( "(") (binary_expression "PTR_DAT_0005b2cc + -0x78ac" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78ac")) (, ",") (binary_expression "PTR_DAT_0005b2cc + -0x78cc" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78cc")) (, ",") (number_literal "0x455") (, ",") (binary_expression "PTR_DAT_0005b2cc + -0x7564" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7564")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (if_statement "if (0x1f < param_1 - 0x21U) {\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" (if "if") (parenthesized_expression "(0x1f < param_1 - 0x21U)" (( "(") (binary_expression "0x1f < param_1 - 0x21U" (number_literal "0x1f") (< "<") (binary_expression "param_1 - 0x21U" (identifier "param_1") (- "-") (number_literal "0x21U"))) () ")")) (compound_statement "{\n              uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);\n              return uVar2;\n            }" ({ "{") (expression_statement "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564);" (assignment_expression "uVar2 = (*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" (parenthesized_expression "(*(code *)PTR___assert_fail_0005b410)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_0005b410" (* "*") (cast_expression "(code *)PTR___assert_fail_0005b410" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_0005b410"))) () ")")) (argument_list "(PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                 PTR_DAT_0005b2cc + -0x7564)" (( "(") (binary_expression "PTR_DAT_0005b2cc + -0x7898" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7898")) (, ",") (binary_expression "PTR_DAT_0005b2cc + -0x78cc" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78cc")) (, ",") (number_literal "0x4ad") (, ",") (binary_expression "PTR_DAT_0005b2cc + -0x7564" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7564")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))();" (assignment_expression "uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))()" (identifier "uVar2") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              ))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)\n                              )" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" (* "*") (cast_expression "(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)" (( "(") (binary_expression "PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850" (binary_expression "PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4" (identifier "PTR_DAT_0005b2cc") (+ "+") (binary_expression "(param_1 - 0x21U) * 4" (parenthesized_expression "(param_1 - 0x21U)" (( "(") (binary_expression "param_1 - 0x21U" (identifier "param_1") (- "-") (number_literal "0x21U")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x7850")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (goto_statement "goto LAB_00028d20;" (goto "goto") (statement_identifier "LAB_00028d20") (; ";")) (} "}"))) (if_statement "if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" (if "if") (parenthesized_expression "((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0))" (( "(") (binary_expression "(iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)" (parenthesized_expression "(iVar10 == 0x7c)" (( "(") (binary_expression "iVar10 == 0x7c" (identifier "iVar10") (== "==") (number_literal "0x7c")) () ")")) (&& "&&") (parenthesized_expression "(unaff_s5 == (int *)0x0)" (( "(") (binary_expression "unaff_s5 == (int *)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n          uVar2 = local_44;\n          if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }\n          pbVar12 = (byte *)0x40000000;\n          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }\n          goto LAB_00028d20;\n        }" ({ "{") (expression_statement "uVar2 = local_44;" (assignment_expression "uVar2 = local_44" (identifier "uVar2") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (unaff_s1 == 0) {\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" (if "if") (parenthesized_expression "(unaff_s1 == 0)" (( "(") (binary_expression "unaff_s1 == 0" (identifier "unaff_s1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;\n          }" ({ "{") (expression_statement "uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;" (assignment_expression "uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (identifier "uVar2") (= "=") (binary_expression "((int)pbVar26 - (int)unaff_s6 >> 2) + 1" (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" (( "(") (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar26")) (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pbVar12 = (byte *)0x40000000;" (assignment_expression "pbVar12 = (byte *)0x40000000" (identifier "pbVar12") (= "=") (cast_expression "(byte *)0x40000000" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x40000000"))) (; ";")) (if_statement "if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }" (if "if") (parenthesized_expression "((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c))" (( "(") (binary_expression "(uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)" (parenthesized_expression "(uVar2 < 0x40000000)" (( "(") (binary_expression "uVar2 < 0x40000000" (identifier "uVar2") (< "<") (number_literal "0x40000000")) () ")")) (&& "&&") (parenthesized_expression "(uVar2 * 4 < 0x1f3c)" (( "(") (binary_expression "uVar2 * 4 < 0x1f3c" (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4")) (< "<") (number_literal "0x1f3c")) () ")"))) () ")")) (compound_statement "{\n            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);\n            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);\n            pbVar33 = pbVar26 + 4;\n            piVar22 = (int *)(puVar20 + iVar4 + 0x18);\n            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);\n            *puVar3 = 0;\n            iVar10 = *(int *)(pbVar26 + 4);\n            *piVar22 = 0;\n            *local_34 = (int)piVar22;\n            pbVar12 = unaff_s6;\n            pbVar26 = pbVar33;\n            local_34 = piVar22;\n            puVar20 = puVar20 + iVar4;\n            unaff_s6 = pbVar33;\n            goto joined_r0x00028e80;\n          }" ({ "{") (expression_statement "param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);" (assignment_expression "param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2)" (identifier "param_3") (= "=") (cast_expression "(byte *)((int)pbVar26 - (int)unaff_s6 >> 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pbVar26 - (int)unaff_s6 >> 2)" (( "(") (binary_expression "(int)pbVar26 - (int)unaff_s6 >> 2" (binary_expression "(int)pbVar26 - (int)unaff_s6" (cast_expression "(int)pbVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar26")) (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) (>> ">>") (number_literal "2")) () ")")))) (; ";")) (expression_statement "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8)" (identifier "iVar4") (= "=") (unary_expression "-(uVar2 * 4 + 0xb & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar2 * 4 + 0xb & 0xfffffff8)" (( "(") (binary_expression "uVar2 * 4 + 0xb & 0xfffffff8" (binary_expression "uVar2 * 4 + 0xb" (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4")) (+ "+") (number_literal "0xb")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "pbVar33 = pbVar26 + 4;" (assignment_expression "pbVar33 = pbVar26 + 4" (identifier "pbVar33") (= "=") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar22 = (int *)(puVar20 + iVar4 + 0x18);" (assignment_expression "piVar22 = (int *)(puVar20 + iVar4 + 0x18)" (identifier "piVar22") (= "=") (cast_expression "(int *)(puVar20 + iVar4 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + iVar4 + 0x18)" (( "(") (binary_expression "puVar20 + iVar4 + 0x18" (binary_expression "puVar20 + iVar4" (identifier "puVar20") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);" (assignment_expression "puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c)" (parenthesized_expression "(*(code *)PTR_wmempcpy_0005b4a4)" (( "(") (pointer_expression "*(code *)PTR_wmempcpy_0005b4a4" (* "*") (cast_expression "(code *)PTR_wmempcpy_0005b4a4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_wmempcpy_0005b4a4"))) () ")")) (argument_list "(puVar20 + iVar4 + 0x1c)" (( "(") (binary_expression "puVar20 + iVar4 + 0x1c" (binary_expression "puVar20 + iVar4" (identifier "puVar20") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar26 + 4)" (* "*") (cast_expression "(int *)(pbVar26 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*piVar22 = 0;" (assignment_expression "*piVar22 = 0" (pointer_expression "*piVar22" (* "*") (identifier "piVar22")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_34 = (int)piVar22;" (assignment_expression "*local_34 = (int)piVar22" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (cast_expression "(int)piVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar22"))) (; ";")) (expression_statement "pbVar12 = unaff_s6;" (assignment_expression "pbVar12 = unaff_s6" (identifier "pbVar12") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "pbVar26 = pbVar33;" (assignment_expression "pbVar26 = pbVar33" (identifier "pbVar26") (= "=") (identifier "pbVar33")) (; ";")) (expression_statement "local_34 = piVar22;" (assignment_expression "local_34 = piVar22" (identifier "local_34") (= "=") (identifier "piVar22")) (; ";")) (expression_statement "puVar20 = puVar20 + iVar4;" (assignment_expression "puVar20 = puVar20 + iVar4" (identifier "puVar20") (= "=") (binary_expression "puVar20 + iVar4" (identifier "puVar20") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "unaff_s6 = pbVar33;" (assignment_expression "unaff_s6 = pbVar33" (identifier "unaff_s6") (= "=") (identifier "pbVar33")) (; ";")) (goto_statement "goto joined_r0x00028e80;" (goto "goto") (statement_identifier "joined_r0x00028e80") (; ";")) (} "}"))) (goto_statement "goto LAB_00028d20;" (goto "goto") (statement_identifier "LAB_00028d20") (; ";")) (} "}"))) (labeled_statement "LAB_00028e9c:\n        iVar10 = *(int *)(pbVar26 + 4);" (statement_identifier "LAB_00028e9c") (: ":") (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar26 + 4)" (* "*") (cast_expression "(int *)(pbVar26 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "pbVar26 = pbVar26 + 4;" (assignment_expression "pbVar26 = pbVar26 + 4" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_00028d20;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028d20;" (goto "goto") (statement_identifier "LAB_00028d20") (; ";"))) (} "}"))) (if_statement "if (*(int *)(puVar28 + -0x4730) == 0) {\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }" (if "if") (parenthesized_expression "(*(int *)(puVar28 + -0x4730) == 0)" (( "(") (binary_expression "*(int *)(puVar28 + -0x4730) == 0" (pointer_expression "*(int *)(puVar28 + -0x4730)" (* "*") (cast_expression "(int *)(puVar28 + -0x4730)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -0x4730)" (( "(") (binary_expression "puVar28 + -0x4730" (identifier "puVar28") (+ "+") (number_literal "-0x4730")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);\n        uVar5 = 0xffffffff;\n        if (iVar10 != 0) {\n          uVar5 = 1;\n        }\n        *(undefined4 *)(puVar28 + -0x4730) = uVar5;\n      }" ({ "{") (expression_statement "iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);" (assignment_expression "iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2)" (identifier "iVar10") (= "=") (call_expression "(*(code *)PTR_getenv_0005b510)(unaff_s2)" (parenthesized_expression "(*(code *)PTR_getenv_0005b510)" (( "(") (pointer_expression "*(code *)PTR_getenv_0005b510" (* "*") (cast_expression "(code *)PTR_getenv_0005b510" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_getenv_0005b510"))) () ")")) (argument_list "(unaff_s2)" (( "(") (identifier "unaff_s2") () ")")))) (; ";")) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" (identifier "uVar5") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (iVar10 != 0) {\n          uVar5 = 1;\n        }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = 1;\n        }" ({ "{") (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar28 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(puVar28 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(puVar28 + -0x4730)" (* "*") (cast_expression "(undefined4 *)(puVar28 + -0x4730)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -0x4730)" (( "(") (binary_expression "puVar28 + -0x4730" (identifier "puVar28") (+ "+") (number_literal "-0x4730")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(pbVar26 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar26 + 4)" (* "*") (cast_expression "(int *)(pbVar26 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 4)" (( "(") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar33 = pbVar26 + 4;" (assignment_expression "pbVar33 = pbVar26 + 4" (identifier "pbVar33") (= "=") (binary_expression "pbVar26 + 4" (identifier "pbVar26") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }" (if "if") (parenthesized_expression "((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e))))" (( "(") (binary_expression "(iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))" (parenthesized_expression "(iVar10 == 0x21)" (( "(") (binary_expression "iVar10 == 0x21" (identifier "iVar10") (== "==") (number_literal "0x21")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))" (( "(") (parenthesized_expression "(*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e))" (( "(") (binary_expression "*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)" (binary_expression "*(int *)(puVar28 + -0x4730) < 0" (pointer_expression "*(int *)(puVar28 + -0x4730)" (* "*") (cast_expression "(int *)(puVar28 + -0x4730)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -0x4730)" (( "(") (binary_expression "puVar28 + -0x4730" (identifier "puVar28") (+ "+") (number_literal "-0x4730")) () ")")))) (< "<") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar10 == 0x5e)" (( "(") (binary_expression "iVar10 == 0x5e" (identifier "iVar10") (== "==") (number_literal "0x5e")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        iVar10 = *(int *)(pbVar26 + 8);\n        pbVar33 = pbVar26 + 8;\n      }" ({ "{") (expression_statement "iVar10 = *(int *)(pbVar26 + 8);" (assignment_expression "iVar10 = *(int *)(pbVar26 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar26 + 8)" (* "*") (cast_expression "(int *)(pbVar26 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar26 + 8)" (( "(") (binary_expression "pbVar26 + 8" (identifier "pbVar26") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pbVar33 = pbVar26 + 8;" (assignment_expression "pbVar33 = pbVar26 + 8" (identifier "pbVar33") (= "=") (binary_expression "pbVar26 + 8" (identifier "pbVar26") (+ "+") (number_literal "8"))) (; ";")) (} "}"))) (if_statement "if (iVar10 == 0x5d) {\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }" (if "if") (parenthesized_expression "(iVar10 == 0x5d)" (( "(") (binary_expression "iVar10 == 0x5d" (identifier "iVar10") (== "==") (number_literal "0x5d")) () ")")) (compound_statement "{\n        iVar10 = *(int *)(pbVar33 + 4);\n        pbVar33 = pbVar33 + 4;\n      }" ({ "{") (expression_statement "iVar10 = *(int *)(pbVar33 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar33 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar33 + 4)" (* "*") (cast_expression "(int *)(pbVar33 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar33 + 4)" (( "(") (binary_expression "pbVar33 + 4" (identifier "pbVar33") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar33 = pbVar33 + 4;" (assignment_expression "pbVar33 = pbVar33 + 4" (identifier "pbVar33") (= "=") (binary_expression "pbVar33 + 4" (identifier "pbVar33") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "pbVar12 = (byte *)0x5d;" (assignment_expression "pbVar12 = (byte *)0x5d" (identifier "pbVar12") (= "=") (cast_expression "(byte *)0x5d" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5d"))) (; ";")) (while_statement "while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }" (while "while") (parenthesized_expression "(pbVar26 = pbVar33 + 4, iVar10 != 0x5d)" (( "(") (comma_expression "pbVar26 = pbVar33 + 4, iVar10 != 0x5d" (assignment_expression "pbVar26 = pbVar33 + 4" (identifier "pbVar26") (= "=") (binary_expression "pbVar33 + 4" (identifier "pbVar33") (+ "+") (number_literal "4"))) (, ",") (binary_expression "iVar10 != 0x5d" (identifier "iVar10") (!= "!=") (number_literal "0x5d"))) () ")")) (compound_statement "{\n        if (iVar10 == 0) goto LAB_00028d20;\n        pbVar33 = pbVar26;\n        iVar10 = *(int *)pbVar26;\n      }" ({ "{") (if_statement "if (iVar10 == 0) goto LAB_00028d20;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00028d20;" (goto "goto") (statement_identifier "LAB_00028d20") (; ";"))) (expression_statement "pbVar33 = pbVar26;" (assignment_expression "pbVar33 = pbVar26" (identifier "pbVar33") (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "iVar10 = *(int *)pbVar26;" (assignment_expression "iVar10 = *(int *)pbVar26" (identifier "iVar10") (= "=") (pointer_expression "*(int *)pbVar26" (* "*") (cast_expression "(int *)pbVar26" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar26")))) (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(pbVar33 + 4);" (assignment_expression "iVar10 = *(int *)(pbVar33 + 4)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pbVar33 + 4)" (* "*") (cast_expression "(int *)(pbVar33 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar33 + 4)" (( "(") (binary_expression "pbVar33 + 4" (identifier "pbVar33") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (labeled_statement "joined_r0x00028e80:" (statement_identifier "joined_r0x00028e80") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00028d20:\n  if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }" (statement_identifier "LAB_00028d20") (: ":") (if_statement "if (local_2c == *(int **)puVar1) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int **)puVar1)" (( "(") (binary_expression "local_2c == *(int **)puVar1" (identifier "local_2c") (== "==") (pointer_expression "*(int **)puVar1" (* "*") (cast_expression "(int **)puVar1" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}")))) (expression_statement "pcVar35 = FUN_00029320;" (assignment_expression "pcVar35 = FUN_00029320" (identifier "pcVar35") (= "=") (identifier "FUN_00029320")) (; ";")) (expression_statement "piVar22 = local_2c;" (assignment_expression "piVar22 = local_2c" (identifier "piVar22") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar28 = PTR___stack_chk_fail_0005b564;" (assignment_expression "puVar28 = PTR___stack_chk_fail_0005b564" (identifier "puVar28") (= "=") (identifier "PTR___stack_chk_fail_0005b564")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0005b564)();" (call_expression "(*(code *)PTR___stack_chk_fail_0005b564)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0005b564)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0005b564" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0005b564" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0005b564"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar30 = puVar28 + 0x39dd0;" (assignment_expression "puVar30 = puVar28 + 0x39dd0" (identifier "puVar30") (= "=") (binary_expression "puVar28 + 0x39dd0" (identifier "puVar28") (+ "+") (number_literal "0x39dd0"))) (; ";")) (expression_statement "puVar3 = *(undefined4 **)(puVar28 + 0x3226c);" (assignment_expression "puVar3 = *(undefined4 **)(puVar28 + 0x3226c)" (identifier "puVar3") (= "=") (pointer_expression "*(undefined4 **)(puVar28 + 0x3226c)" (* "*") (cast_expression "(undefined4 **)(puVar28 + 0x3226c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x3226c)" (( "(") (binary_expression "puVar28 + 0x3226c" (identifier "puVar28") (+ "+") (number_literal "0x3226c")) () ")"))))) (; ";")) (expression_statement "*(byte **)(puVar20 + -0xc) = pbVar26;" (assignment_expression "*(byte **)(puVar20 + -0xc) = pbVar26" (pointer_expression "*(byte **)(puVar20 + -0xc)" (* "*") (cast_expression "(byte **)(puVar20 + -0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0xc)" (( "(") (binary_expression "puVar20 + -0xc" (identifier "puVar20") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "*(undefined4 **)(puVar20 + -0x558) = puVar3;" (assignment_expression "*(undefined4 **)(puVar20 + -0x558) = puVar3" (pointer_expression "*(undefined4 **)(puVar20 + -0x558)" (* "*") (cast_expression "(undefined4 **)(puVar20 + -0x558)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x558)" (( "(") (binary_expression "puVar20 + -0x558" (identifier "puVar20") (+ "+") (number_literal "-0x558")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*(undefined **)(puVar20 + -0x570) = puVar30;" (assignment_expression "*(undefined **)(puVar20 + -0x570) = puVar30" (pointer_expression "*(undefined **)(puVar20 + -0x570)" (* "*") (cast_expression "(undefined **)(puVar20 + -0x570)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x570)" (( "(") (binary_expression "puVar20 + -0x570" (identifier "puVar20") (+ "+") (number_literal "-0x570")) () ")")))) (= "=") (identifier "puVar30")) (; ";")) (expression_statement "*(undefined1 **)(puVar20 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar20 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar20 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar20 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -8)" (( "(") (binary_expression "puVar20 + -8" (identifier "puVar20") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "*(undefined **)(puVar20 + -0x1c) = puVar1;" (assignment_expression "*(undefined **)(puVar20 + -0x1c) = puVar1" (pointer_expression "*(undefined **)(puVar20 + -0x1c)" (* "*") (cast_expression "(undefined **)(puVar20 + -0x1c)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x1c)" (( "(") (binary_expression "puVar20 + -0x1c" (identifier "puVar20") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "*(code **)(puVar20 + -4) = pcVar35;" (assignment_expression "*(code **)(puVar20 + -4) = pcVar35" (pointer_expression "*(code **)(puVar20 + -4)" (* "*") (cast_expression "(code **)(puVar20 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -4)" (( "(") (binary_expression "puVar20 + -4" (identifier "puVar20") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar35")) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar20 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar20 + -0x10)" (* "*") (cast_expression "(byte **)(puVar20 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x10)" (( "(") (binary_expression "puVar20 + -0x10" (identifier "puVar20") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar20 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar20 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar20 + -0x14)" (* "*") (cast_expression "(int **)(puVar20 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x14)" (( "(") (binary_expression "puVar20 + -0x14" (identifier "puVar20") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int **)(puVar20 + -0x18) = unaff_s4;" (assignment_expression "*(int **)(puVar20 + -0x18) = unaff_s4" (pointer_expression "*(int **)(puVar20 + -0x18)" (* "*") (cast_expression "(int **)(puVar20 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x18)" (( "(") (binary_expression "puVar20 + -0x18" (identifier "puVar20") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(undefined **)(puVar20 + -0x20) = unaff_s2;" (assignment_expression "*(undefined **)(puVar20 + -0x20) = unaff_s2" (pointer_expression "*(undefined **)(puVar20 + -0x20)" (* "*") (cast_expression "(undefined **)(puVar20 + -0x20)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x20)" (( "(") (binary_expression "puVar20 + -0x20" (identifier "puVar20") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(uint *)(puVar20 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar20 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar20 + -0x24)" (* "*") (cast_expression "(uint *)(puVar20 + -0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x24)" (( "(") (binary_expression "puVar20 + -0x24" (identifier "puVar20") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x28) = param_2;" (assignment_expression "*(byte **)(puVar20 + -0x28) = param_2" (pointer_expression "*(byte **)(puVar20 + -0x28)" (* "*") (cast_expression "(byte **)(puVar20 + -0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x28)" (( "(") (binary_expression "puVar20 + -0x28" (identifier "puVar20") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar10 = *piVar22;" (assignment_expression "iVar10 = *piVar22" (identifier "iVar10") (= "=") (pointer_expression "*piVar22" (* "*") (identifier "piVar22"))) (; ";")) (expression_statement "*(undefined4 *)(puVar20 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar20 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)(puVar20 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar20 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x2c)" (( "(") (binary_expression "puVar20 + -0x2c" (identifier "puVar20") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "uVar2 = *(uint *)(puVar20 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar20 + 0x10)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(puVar20 + 0x10)" (* "*") (cast_expression "(uint *)(puVar20 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 0x10)" (( "(") (binary_expression "puVar20 + 0x10" (identifier "puVar20") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "pbVar26 = param_3;" (assignment_expression "pbVar26 = param_3" (identifier "pbVar26") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pbVar33 = pbVar12;" (assignment_expression "pbVar33 = pbVar12" (identifier "pbVar33") (= "=") (identifier "pbVar12")) (; ";")) (if_statement "if (iVar10 != 0) {\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    unaff_s1 = uVar2 & 2;\n    param_2 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar20 + -0x554) = uVar2 & 5;\n    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);\n    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;\n    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;\n    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;\n    unaff_s5 = piVar22 + 1;\n    unaff_s6 = param_4;\n    do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);\n  }" ({ "{") (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" (identifier "unaff_s1") (= "=") (binary_expression "uVar2 & 2" (identifier "uVar2") (& "&") (number_literal "2"))) (; ";")) (expression_statement "param_2 = (byte *)(uVar2 & 0x10);" (assignment_expression "param_2 = (byte *)(uVar2 & 0x10)" (identifier "param_2") (= "=") (cast_expression "(byte *)(uVar2 & 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 & 0x10)" (( "(") (binary_expression "uVar2 & 0x10" (identifier "uVar2") (& "&") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar20 + -0x554) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar20 + -0x554) = uVar2 & 5" (pointer_expression "*(uint *)(puVar20 + -0x554)" (* "*") (cast_expression "(uint *)(puVar20 + -0x554)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x554)" (( "(") (binary_expression "puVar20 + -0x554" (identifier "puVar20") (+ "+") (number_literal "-0x554")) () ")")))) (= "=") (binary_expression "uVar2 & 5" (identifier "uVar2") (& "&") (number_literal "5"))) (; ";")) (expression_statement "*(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);" (assignment_expression "*(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8)" (pointer_expression "*(undefined4 *)(puVar20 + -0x55c)" (* "*") (cast_expression "(undefined4 *)(puVar20 + -0x55c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x55c)" (( "(") (binary_expression "puVar20 + -0x55c" (identifier "puVar20") (+ "+") (number_literal "-0x55c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar28 + 0x31df8)" (* "*") (cast_expression "(undefined4 *)(puVar28 + 0x31df8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x31df8)" (( "(") (binary_expression "puVar28 + 0x31df8" (identifier "puVar28") (+ "+") (number_literal "0x31df8")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;" (assignment_expression "*(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar20 + -0x560)" (* "*") (cast_expression "(int *)(puVar20 + -0x560)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x560)" (( "(") (binary_expression "puVar20 + -0x560" (identifier "puVar20") (+ "+") (number_literal "-0x560")) () ")")))) (= "=") (binary_expression "*(int *)(puVar28 + 0x31fac) + -0x77d0" (pointer_expression "*(int *)(puVar28 + 0x31fac)" (* "*") (cast_expression "(int *)(puVar28 + 0x31fac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x31fac)" (( "(") (binary_expression "puVar28 + 0x31fac" (identifier "puVar28") (+ "+") (number_literal "0x31fac")) () ")")))) (+ "+") (number_literal "-0x77d0"))) (; ";")) (expression_statement "*(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;" (assignment_expression "*(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar20 + -0x544)" (* "*") (cast_expression "(int *)(puVar20 + -0x544)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x544)" (( "(") (binary_expression "puVar20 + -0x544" (identifier "puVar20") (+ "+") (number_literal "-0x544")) () ")")))) (= "=") (binary_expression "*(int *)(puVar28 + 0x32070) + -0x73ec" (pointer_expression "*(int *)(puVar28 + 0x32070)" (* "*") (cast_expression "(int *)(puVar28 + 0x32070)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x32070)" (( "(") (binary_expression "puVar28 + 0x32070" (identifier "puVar28") (+ "+") (number_literal "0x32070")) () ")")))) (+ "+") (number_literal "-0x73ec"))) (; ";")) (expression_statement "*(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;" (assignment_expression "*(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar20 + -0x54c)" (* "*") (cast_expression "(int *)(puVar20 + -0x54c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x54c)" (( "(") (binary_expression "puVar20 + -0x54c" (identifier "puVar20") (+ "+") (number_literal "-0x54c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar28 + 0x31fac) + -0x78dc" (pointer_expression "*(int *)(puVar28 + 0x31fac)" (* "*") (cast_expression "(int *)(puVar28 + 0x31fac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x31fac)" (( "(") (binary_expression "puVar28 + 0x31fac" (identifier "puVar28") (+ "+") (number_literal "0x31fac")) () ")")))) (+ "+") (number_literal "-0x78dc"))) (; ";")) (expression_statement "unaff_s5 = piVar22 + 1;" (assignment_expression "unaff_s5 = piVar22 + 1" (identifier "unaff_s5") (= "=") (binary_expression "piVar22 + 1" (identifier "piVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" (identifier "unaff_s6") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    } while (iVar10 != 0);" (do "do") (compound_statement "{\n      unaff_s4 = unaff_s5;\n      if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }\n      unaff_s5 = unaff_s4;\n      if (param_3 == pbVar33) goto LAB_000295c4;\n      iVar4 = *(int *)pbVar33;\n      if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }\n      uVar2 = 1;\n      if (iVar4 != iVar10) goto LAB_000295c8;\n      unaff_s6 = (byte *)0x0;\n      iVar10 = *unaff_s4;\n      pbVar33 = pbVar33 + 4;\n      unaff_s5 = unaff_s4 + 1;\n      piVar22 = unaff_s4;\n    }" ({ "{") (expression_statement "unaff_s4 = unaff_s5;" (assignment_expression "unaff_s4 = unaff_s5" (identifier "unaff_s4") (= "=") (identifier "unaff_s5")) (; ";")) (if_statement "if (param_2 != (byte *)0x0) {\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" (if "if") (parenthesized_expression "(param_2 != (byte *)0x0)" (( "(") (binary_expression "param_2 != (byte *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" ({ "{") (expression_statement "iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);" (assignment_expression "iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(puVar30 + -0x7b70))(iVar10)" (parenthesized_expression "(**(code **)(puVar30 + -0x7b70))" (( "(") (pointer_expression "**(code **)(puVar30 + -0x7b70)" (* "*") (pointer_expression "*(code **)(puVar30 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar30 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7b70)" (( "(") (binary_expression "puVar30 + -0x7b70" (identifier "puVar30") (+ "+") (number_literal "-0x7b70")) () ")"))))) () ")")) (argument_list "(iVar10)" (( "(") (identifier "iVar10") () ")")))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar20 + -0x570);" (assignment_expression "puVar30 = *(undefined **)(puVar20 + -0x570)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar20 + -0x570)" (* "*") (cast_expression "(undefined **)(puVar20 + -0x570)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x570)" (( "(") (binary_expression "puVar20 + -0x570" (identifier "puVar20") (+ "+") (number_literal "-0x570")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (iVar10 - 0x21U < 0x3c) {\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }" (if "if") (parenthesized_expression "(iVar10 - 0x21U < 0x3c)" (( "(") (binary_expression "iVar10 - 0x21U < 0x3c" (binary_expression "iVar10 - 0x21U" (identifier "iVar10") (- "-") (number_literal "0x21U")) (< "<") (number_literal "0x3c")) () ")")) (compound_statement "{\n                    \n                    \n        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;\n        return uVar2;\n      }" ({ "{") (expression_statement "uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()\n        ;" (assignment_expression "uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()" (identifier "uVar2") (= "=") (call_expression "(*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()" (parenthesized_expression "(*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))" (( "(") (pointer_expression "*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" (* "*") (cast_expression "(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4))" (( "(") (binary_expression "puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" (identifier "puVar30") (+ "+") (pointer_expression "*(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)" (( "(") (binary_expression "*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4" (pointer_expression "*(int *)(puVar20 + -0x560)" (* "*") (cast_expression "(int *)(puVar20 + -0x560)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x560)" (( "(") (binary_expression "puVar20 + -0x560" (identifier "puVar20") (+ "+") (number_literal "-0x560")) () ")")))) (+ "+") (binary_expression "(iVar10 - 0x21U) * 4" (parenthesized_expression "(iVar10 - 0x21U)" (( "(") (binary_expression "iVar10 - 0x21U" (identifier "iVar10") (- "-") (number_literal "0x21U")) () ")")) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "unaff_s5 = unaff_s4;" (assignment_expression "unaff_s5 = unaff_s4" (identifier "unaff_s5") (= "=") (identifier "unaff_s4")) (; ";")) (if_statement "if (param_3 == pbVar33) goto LAB_000295c4;" (if "if") (parenthesized_expression "(param_3 == pbVar33)" (( "(") (binary_expression "param_3 == pbVar33" (identifier "param_3") (== "==") (identifier "pbVar33")) () ")")) (goto_statement "goto LAB_000295c4;" (goto "goto") (statement_identifier "LAB_000295c4") (; ";"))) (expression_statement "iVar4 = *(int *)pbVar33;" (assignment_expression "iVar4 = *(int *)pbVar33" (identifier "iVar4") (= "=") (pointer_expression "*(int *)pbVar33" (* "*") (cast_expression "(int *)pbVar33" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar33")))) (; ";")) (if_statement "if (param_2 != (byte *)0x0) {\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" (if "if") (parenthesized_expression "(param_2 != (byte *)0x0)" (( "(") (binary_expression "param_2 != (byte *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);\n        puVar30 = *(undefined **)(puVar20 + -0x570);\n      }" ({ "{") (expression_statement "iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);" (assignment_expression "iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4)" (identifier "iVar4") (= "=") (call_expression "(**(code **)(puVar30 + -0x7b70))(iVar4)" (parenthesized_expression "(**(code **)(puVar30 + -0x7b70))" (( "(") (pointer_expression "**(code **)(puVar30 + -0x7b70)" (* "*") (pointer_expression "*(code **)(puVar30 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar30 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7b70)" (( "(") (binary_expression "puVar30 + -0x7b70" (identifier "puVar30") (+ "+") (number_literal "-0x7b70")) () ")"))))) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar20 + -0x570);" (assignment_expression "puVar30 = *(undefined **)(puVar20 + -0x570)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar20 + -0x570)" (* "*") (cast_expression "(undefined **)(puVar20 + -0x570)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x570)" (( "(") (binary_expression "puVar20 + -0x570" (identifier "puVar20") (+ "+") (number_literal "-0x570")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar4 != iVar10) goto LAB_000295c8;" (if "if") (parenthesized_expression "(iVar4 != iVar10)" (( "(") (binary_expression "iVar4 != iVar10" (identifier "iVar4") (!= "!=") (identifier "iVar10")) () ")")) (goto_statement "goto LAB_000295c8;" (goto "goto") (statement_identifier "LAB_000295c8") (; ";"))) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" (identifier "unaff_s6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar10 = *unaff_s4;" (assignment_expression "iVar10 = *unaff_s4" (identifier "iVar10") (= "=") (pointer_expression "*unaff_s4" (* "*") (identifier "unaff_s4"))) (; ";")) (expression_statement "pbVar33 = pbVar33 + 4;" (assignment_expression "pbVar33 = pbVar33 + 4" (identifier "pbVar33") (= "=") (binary_expression "pbVar33 + 4" (identifier "pbVar33") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "unaff_s5 = unaff_s4 + 1;" (assignment_expression "unaff_s5 = unaff_s4 + 1" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s4 + 1" (identifier "unaff_s4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar22 = unaff_s4;" (assignment_expression "piVar22 = unaff_s4" (identifier "piVar22") (= "=") (identifier "unaff_s4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar22 = unaff_s4;" (assignment_expression "piVar22 = unaff_s4" (identifier "piVar22") (= "=") (identifier "unaff_s4")) (; ";")) (if_statement "if (pbVar33 != param_3) {\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }" (if "if") (parenthesized_expression "(pbVar33 != param_3)" (( "(") (binary_expression "pbVar33 != param_3" (identifier "pbVar33") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);\n    if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }\n  }" ({ "{") (expression_statement "piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);" (assignment_expression "piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8)" (identifier "piVar22") (= "=") (cast_expression "(int *)(*(uint *)(puVar20 + 0x10) & 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(uint *)(puVar20 + 0x10) & 8)" (( "(") (binary_expression "*(uint *)(puVar20 + 0x10) & 8" (pointer_expression "*(uint *)(puVar20 + 0x10)" (* "*") (cast_expression "(uint *)(puVar20 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 0x10)" (( "(") (binary_expression "puVar20 + 0x10" (identifier "puVar20") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (piVar22 == (int *)0x0) {\nLAB_000295c4:\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" (if "if") (parenthesized_expression "(piVar22 == (int *)0x0)" (( "(") (binary_expression "piVar22 == (int *)0x0" (identifier "piVar22") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000295c4:\n      uVar2 = 1;\n    }" ({ "{") (labeled_statement "LAB_000295c4:\n      uVar2 = 1;" (statement_identifier "LAB_000295c4") (: ":") (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" (else "else") (compound_statement "{\n      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);\n    }" ({ "{") (expression_statement "uVar2 = (uint)(*(int *)pbVar33 != 0x2f);" (assignment_expression "uVar2 = (uint)(*(int *)pbVar33 != 0x2f)" (identifier "uVar2") (= "=") (call_expression "(uint)(*(int *)pbVar33 != 0x2f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)pbVar33 != 0x2f)" (( "(") (binary_expression "*(int *)pbVar33 != 0x2f" (pointer_expression "*(int *)pbVar33" (* "*") (cast_expression "(int *)pbVar33" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar33"))) (!= "!=") (number_literal "0x2f")) () ")")))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_000295c8:\n  iVar4 = *(int *)(puVar20 + -0x2c);" (statement_identifier "LAB_000295c8") (: ":") (expression_statement "iVar4 = *(int *)(puVar20 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x2c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar20 + -0x2c)" (* "*") (cast_expression "(int *)(puVar20 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x2c)" (( "(") (binary_expression "puVar20 + -0x2c" (identifier "puVar20") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";"))) (if_statement "if (iVar4 == **(int **)(puVar20 + -0x558)) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(iVar4 == **(int **)(puVar20 + -0x558))" (( "(") (binary_expression "iVar4 == **(int **)(puVar20 + -0x558)" (identifier "iVar4") (== "==") (pointer_expression "**(int **)(puVar20 + -0x558)" (* "*") (pointer_expression "*(int **)(puVar20 + -0x558)" (* "*") (cast_expression "(int **)(puVar20 + -0x558)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x558)" (( "(") (binary_expression "puVar20 + -0x558" (identifier "puVar20") (+ "+") (number_literal "-0x558")) () ")")))))) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "pcVar35 = *(code **)(puVar30 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(puVar30 + -0x7b8c)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(puVar30 + -0x7b8c)" (* "*") (cast_expression "(code **)(puVar30 + -0x7b8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7b8c)" (( "(") (binary_expression "puVar30 + -0x7b8c" (identifier "puVar30") (+ "+") (number_literal "-0x7b8c")) () ")"))))) (; ";")) (expression_statement "pcVar36 = FUN_00029f20;" (assignment_expression "pcVar36 = FUN_00029f20" (identifier "pcVar36") (= "=") (identifier "FUN_00029f20")) (; ";")) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar31 = puVar20 + -0x5f0;" (assignment_expression "puVar31 = puVar20 + -0x5f0" (identifier "puVar31") (= "=") (binary_expression "puVar20 + -0x5f0" (identifier "puVar20") (+ "+") (number_literal "-0x5f0"))) (; ";")) (expression_statement "pcVar29 = *(code **)(pcVar35 + 0x315c4);" (assignment_expression "pcVar29 = *(code **)(pcVar35 + 0x315c4)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(pcVar35 + 0x315c4)" (* "*") (cast_expression "(code **)(pcVar35 + 0x315c4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar35 + 0x315c4)" (( "(") (binary_expression "pcVar35 + 0x315c4" (identifier "pcVar35") (+ "+") (number_literal "0x315c4")) () ")"))))) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x590) = pbVar33;" (assignment_expression "*(byte **)(puVar20 + -0x590) = pbVar33" (pointer_expression "*(byte **)(puVar20 + -0x590)" (* "*") (cast_expression "(byte **)(puVar20 + -0x590)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x590)" (( "(") (binary_expression "puVar20 + -0x590" (identifier "puVar20") (+ "+") (number_literal "-0x590")) () ")")))) (= "=") (identifier "pbVar33")) (; ";")) (expression_statement "*(undefined **)(puVar20 + -0x5a8) = unaff_s2;" (assignment_expression "*(undefined **)(puVar20 + -0x5a8) = unaff_s2" (pointer_expression "*(undefined **)(puVar20 + -0x5a8)" (* "*") (cast_expression "(undefined **)(puVar20 + -0x5a8)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5a8)" (( "(") (binary_expression "puVar20 + -0x5a8" (identifier "puVar20") (+ "+") (number_literal "-0x5a8")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);" (assignment_expression "puVar3 = *(undefined4 **)(pcVar35 + 0x3166c)" (identifier "puVar3") (= "=") (pointer_expression "*(undefined4 **)(pcVar35 + 0x3166c)" (* "*") (cast_expression "(undefined4 **)(pcVar35 + 0x3166c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar35 + 0x3166c)" (( "(") (binary_expression "pcVar35 + 0x3166c" (identifier "pcVar35") (+ "+") (number_literal "0x3166c")) () ")"))))) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x5b0) = param_2;" (assignment_expression "*(byte **)(puVar20 + -0x5b0) = param_2" (pointer_expression "*(byte **)(puVar20 + -0x5b0)" (* "*") (cast_expression "(byte **)(puVar20 + -0x5b0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5b0)" (( "(") (binary_expression "puVar20 + -0x5b0" (identifier "puVar20") (+ "+") (number_literal "-0x5b0")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)(puVar20 + -0x594) = iVar10;" (assignment_expression "*(int *)(puVar20 + -0x594) = iVar10" (pointer_expression "*(int *)(puVar20 + -0x594)" (* "*") (cast_expression "(int *)(puVar20 + -0x594)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x594)" (( "(") (binary_expression "puVar20 + -0x594" (identifier "puVar20") (+ "+") (number_literal "-0x594")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "pbVar27 = pbVar12 + 1;" (assignment_expression "pbVar27 = pbVar12 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];" (assignment_expression "*(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575]" (pointer_expression "*(uint *)(puVar20 + -0x5c0)" (* "*") (cast_expression "(uint *)(puVar20 + -0x5c0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5c0)" (( "(") (binary_expression "puVar20 + -0x5c0" (identifier "puVar20") (+ "+") (number_literal "-0x5c0")) () ")")))) (= "=") (cast_expression "(uint)(byte)puVar20[-0x575]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar20[-0x575]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar20[-0x575]" (identifier "puVar20") ([ "[") (number_literal "-0x575") (] "]"))))) (; ";")) (expression_statement "*(int **)(puVar20 + -0x5a0) = piVar22;" (assignment_expression "*(int **)(puVar20 + -0x5a0) = piVar22" (pointer_expression "*(int **)(puVar20 + -0x5a0)" (* "*") (cast_expression "(int **)(puVar20 + -0x5a0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5a0)" (( "(") (binary_expression "puVar20 + -0x5a0" (identifier "puVar20") (+ "+") (number_literal "-0x5a0")) () ")")))) (= "=") (identifier "piVar22")) (; ";")) (expression_statement "*(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;" (assignment_expression "*(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0" (pointer_expression "*(code **)(puVar20 + -0x5d8)" (* "*") (cast_expression "(code **)(puVar20 + -0x5d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5d8)" (( "(") (binary_expression "puVar20 + -0x5d8" (identifier "puVar20") (+ "+") (number_literal "-0x5d8")) () ")")))) (= "=") (binary_expression "pcVar35 + 0x391d0" (identifier "pcVar35") (+ "+") (number_literal "0x391d0"))) (; ";")) (expression_statement "*(int *)(puVar20 + -0x588) = iVar4;" (assignment_expression "*(int *)(puVar20 + -0x588) = iVar4" (pointer_expression "*(int *)(puVar20 + -0x588)" (* "*") (cast_expression "(int *)(puVar20 + -0x588)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x588)" (( "(") (binary_expression "puVar20 + -0x588" (identifier "puVar20") (+ "+") (number_literal "-0x588")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*(code **)(puVar20 + -0x58c) = pcVar36;" (assignment_expression "*(code **)(puVar20 + -0x58c) = pcVar36" (pointer_expression "*(code **)(puVar20 + -0x58c)" (* "*") (cast_expression "(code **)(puVar20 + -0x58c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x58c)" (( "(") (binary_expression "puVar20 + -0x58c" (identifier "puVar20") (+ "+") (number_literal "-0x58c")) () ")")))) (= "=") (identifier "pcVar36")) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x598) = unaff_s6;" (assignment_expression "*(byte **)(puVar20 + -0x598) = unaff_s6" (pointer_expression "*(byte **)(puVar20 + -0x598)" (* "*") (cast_expression "(byte **)(puVar20 + -0x598)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x598)" (( "(") (binary_expression "puVar20 + -0x598" (identifier "puVar20") (+ "+") (number_literal "-0x598")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar20 + -0x59c) = unaff_s5;" (assignment_expression "*(int **)(puVar20 + -0x59c) = unaff_s5" (pointer_expression "*(int **)(puVar20 + -0x59c)" (* "*") (cast_expression "(int **)(puVar20 + -0x59c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x59c)" (( "(") (binary_expression "puVar20 + -0x59c" (identifier "puVar20") (+ "+") (number_literal "-0x59c")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x5a4) = param_3;" (assignment_expression "*(byte **)(puVar20 + -0x5a4) = param_3" (pointer_expression "*(byte **)(puVar20 + -0x5a4)" (* "*") (cast_expression "(byte **)(puVar20 + -0x5a4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5a4)" (( "(") (binary_expression "puVar20 + -0x5a4" (identifier "puVar20") (+ "+") (number_literal "-0x5a4")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(uint *)(puVar20 + -0x5ac) = unaff_s1;" (assignment_expression "*(uint *)(puVar20 + -0x5ac) = unaff_s1" (pointer_expression "*(uint *)(puVar20 + -0x5ac)" (* "*") (cast_expression "(uint *)(puVar20 + -0x5ac)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5ac)" (( "(") (binary_expression "puVar20 + -0x5ac" (identifier "puVar20") (+ "+") (number_literal "-0x5ac")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(byte **)(puVar20 + -0x5c4) = param_4;" (assignment_expression "*(byte **)(puVar20 + -0x5c4) = param_4" (pointer_expression "*(byte **)(puVar20 + -0x5c4)" (* "*") (cast_expression "(byte **)(puVar20 + -0x5c4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5c4)" (( "(") (binary_expression "puVar20 + -0x5c4" (identifier "puVar20") (+ "+") (number_literal "-0x5c4")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)(puVar20 + -0x5b8) = 0;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5b8) = 0" (pointer_expression "*(undefined4 *)(puVar20 + -0x5b8)" (* "*") (cast_expression "(undefined4 *)(puVar20 + -0x5b8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5b8)" (( "(") (binary_expression "puVar20 + -0x5b8" (identifier "puVar20") (+ "+") (number_literal "-0x5b8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar20 + -0x5b4) = *puVar3;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5b4) = *puVar3" (pointer_expression "*(undefined4 *)(puVar20 + -0x5b4)" (* "*") (cast_expression "(undefined4 *)(puVar20 + -0x5b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5b4)" (( "(") (binary_expression "puVar20 + -0x5b4" (identifier "puVar20") (+ "+") (number_literal "-0x5b4")) () ")")))) (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "pbVar33 = pbVar12;" (assignment_expression "pbVar33 = pbVar12" (identifier "pbVar33") (= "=") (identifier "pbVar12")) (; ";")) (expression_statement "pbVar13 = pbVar26;" (assignment_expression "pbVar13 = pbVar26" (identifier "pbVar13") (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "uVar5 = (*pcVar29)(pbVar12);" (assignment_expression "uVar5 = (*pcVar29)(pbVar12)" (identifier "uVar5") (= "=") (call_expression "(*pcVar29)(pbVar12)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(pbVar12)" (( "(") (identifier "pbVar12") () ")")))) (; ";")) (expression_statement "iVar10 = (int)(char)pbVar12[1];" (assignment_expression "iVar10 = (int)(char)pbVar12[1]" (identifier "iVar10") (= "=") (cast_expression "(int)(char)pbVar12[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar12[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar12[1]" (identifier "pbVar12") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar20 + -0x5d8)" (* "*") (cast_expression "(int *)(puVar20 + -0x5d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5d8)" (( "(") (binary_expression "puVar20 + -0x5d8" (identifier "puVar20") (+ "+") (number_literal "-0x5d8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar20 + -0x5cc) = uVar5;" (assignment_expression "*(undefined4 *)(puVar20 + -0x5cc) = uVar5" (pointer_expression "*(undefined4 *)(puVar20 + -0x5cc)" (* "*") (cast_expression "(undefined4 *)(puVar20 + -0x5cc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5cc)" (( "(") (binary_expression "puVar20 + -0x5cc" (identifier "puVar20") (+ "+") (number_literal "-0x5cc")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (iVar10 != 0) {\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    unaff_s5 = (int *)0x0;\n    param_3 = *(byte **)(iVar4 + -0x7fd8);\n    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);\n    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;\n    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;\n    puVar23 = puVar20 + -0x5f0;\n    unaff_s6 = pbVar27;\n    do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);\n  }" ({ "{") (expression_statement "unaff_s5 = (int *)0x0;" (assignment_expression "unaff_s5 = (int *)0x0" (identifier "unaff_s5") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "param_3 = *(byte **)(iVar4 + -0x7fd8);" (assignment_expression "param_3 = *(byte **)(iVar4 + -0x7fd8)" (identifier "param_3") (= "=") (pointer_expression "*(byte **)(iVar4 + -0x7fd8)" (* "*") (cast_expression "(byte **)(iVar4 + -0x7fd8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7fd8)" (( "(") (binary_expression "iVar4 + -0x7fd8" (identifier "iVar4") (+ "+") (number_literal "-0x7fd8")) () ")"))))) (; ";")) (expression_statement "unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);" (assignment_expression "unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" (identifier "unaff_s1") (= "=") (call_expression "(uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(puVar20 + -0x588) - 0x3fU < 2)" (( "(") (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU < 2" (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar20 + -0x588)" (* "*") (cast_expression "(int *)(puVar20 + -0x588)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x588)" (( "(") (binary_expression "puVar20 + -0x588" (identifier "puVar20") (+ "+") (number_literal "-0x588")) () ")")))) (- "-") (number_literal "0x3fU")) (< "<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "*(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;" (assignment_expression "*(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8" (pointer_expression "*(undefined1 **)(puVar20 + -0x5bc)" (* "*") (cast_expression "(undefined1 **)(puVar20 + -0x5bc)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5bc)" (( "(") (binary_expression "puVar20 + -0x5bc" (identifier "puVar20") (+ "+") (number_literal "-0x5bc")) () ")")))) (= "=") (binary_expression "puVar20 + -0x5b8" (identifier "puVar20") (+ "+") (number_literal "-0x5b8"))) (; ";")) (expression_statement "*(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;" (assignment_expression "*(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(puVar20 + -0x5c8)" (* "*") (cast_expression "(int *)(puVar20 + -0x5c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5c8)" (( "(") (binary_expression "puVar20 + -0x5c8" (identifier "puVar20") (+ "+") (number_literal "-0x5c8")) () ")")))) (= "=") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x78dc"))) (; ";")) (expression_statement "puVar23 = puVar20 + -0x5f0;" (assignment_expression "puVar23 = puVar20 + -0x5f0" (identifier "puVar23") (= "=") (binary_expression "puVar20 + -0x5f0" (identifier "puVar20") (+ "+") (number_literal "-0x5f0"))) (; ";")) (expression_statement "unaff_s6 = pbVar27;" (assignment_expression "unaff_s6 = pbVar27" (identifier "unaff_s6") (= "=") (identifier "pbVar27")) (; ";")) (do_statement "do {\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    } while (iVar10 != 0);" (do "do") (compound_statement "{\n      while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }\n      pbVar33 = &DAT_c0000601;\n      uVar2 = iVar10 - 0x21U & 0xff;\n      pbVar13 = (byte *)(uint)(uVar2 < 0x20);\n      if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }\n      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }\n      pbVar11 = *(byte **)(puVar20 + -0x5cc);\n      if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }\n      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;\n      pcVar35 = *(code **)(iVar4 + -0x7b7c);\n      pbVar13 = pbVar27 + -(int)unaff_s6;\n      pbVar21 = pbVar27 + 1;\n      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n      puVar32 = puVar31 + iVar17;\n      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;\n      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);\n      iVar4 = *(int *)(puVar20 + -0x5d8);\n      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);\n      iVar10 = (int)(char)pbVar27[1];\n      *puVar23 = 0;\n      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);\n      *puVar15 = 0;\n      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;\n      *puVar6 = puVar15;\n      pbVar33 = unaff_s6;\n      unaff_s6 = pbVar21;\n      pbVar27 = pbVar21;\n      puVar31 = puVar31 + iVar17;\n      puVar23 = puVar32;\n    }" ({ "{") (while_statement "while (puVar31 = puVar23, iVar10 == 0x5b) {\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }" (while "while") (parenthesized_expression "(puVar31 = puVar23, iVar10 == 0x5b)" (( "(") (comma_expression "puVar31 = puVar23, iVar10 == 0x5b" (assignment_expression "puVar31 = puVar23" (identifier "puVar31") (= "=") (identifier "puVar23")) (, ",") (binary_expression "iVar10 == 0x5b" (identifier "iVar10") (== "==") (number_literal "0x5b"))) () ")")) (compound_statement "{\n        if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }\n        bVar8 = pbVar27[1];\n        pbVar11 = pbVar27 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }\n        pbVar33 = (byte *)0x5d;\n        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }\n        iVar10 = (int)(char)pbVar11[1];\njoined_r0x0002a188:\n        puVar23 = puVar31;\n        if (iVar10 == 0) goto LAB_0002a034;\n      }" ({ "{") (if_statement "if (*(int *)(param_3 + -0x4730) == 0) {\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_3 + -0x4730) == 0)" (( "(") (binary_expression "*(int *)(param_3 + -0x4730) == 0" (pointer_expression "*(int *)(param_3 + -0x4730)" (* "*") (cast_expression "(int *)(param_3 + -0x4730)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + -0x4730)" (( "(") (binary_expression "param_3 + -0x4730" (identifier "param_3") (+ "+") (number_literal "-0x4730")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));\n          uVar5 = 0xffffffff;\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          if (iVar10 != 0) {\n            uVar5 = 1;\n          }\n          *(undefined4 *)(param_3 + -0x4730) = uVar5;\n        }" ({ "{") (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8))" (identifier "iVar10") (= "=") (call_expression "(**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8))" (parenthesized_expression "(**(code **)(iVar4 + -0x7be0))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7be0)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7be0)" (* "*") (cast_expression "(code **)(iVar4 + -0x7be0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7be0)" (( "(") (binary_expression "iVar4 + -0x7be0" (identifier "iVar4") (+ "+") (number_literal "-0x7be0")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar20 + -0x5c8))" (( "(") (pointer_expression "*(undefined4 *)(puVar20 + -0x5c8)" (* "*") (cast_expression "(undefined4 *)(puVar20 + -0x5c8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5c8)" (( "(") (binary_expression "puVar20 + -0x5c8" (identifier "puVar20") (+ "+") (number_literal "-0x5c8")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" (identifier "uVar5") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar20 + -0x5d8)" (* "*") (cast_expression "(int *)(puVar20 + -0x5d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5d8)" (( "(") (binary_expression "puVar20 + -0x5d8" (identifier "puVar20") (+ "+") (number_literal "-0x5d8")) () ")"))))) (; ";")) (if_statement "if (iVar10 != 0) {\n            uVar5 = 1;\n          }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar5 = 1;\n          }" ({ "{") (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_3 + -0x4730) = uVar5;" (assignment_expression "*(undefined4 *)(param_3 + -0x4730) = uVar5" (pointer_expression "*(undefined4 *)(param_3 + -0x4730)" (* "*") (cast_expression "(undefined4 *)(param_3 + -0x4730)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + -0x4730)" (( "(") (binary_expression "param_3 + -0x4730" (identifier "param_3") (+ "+") (number_literal "-0x4730")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "bVar8 = pbVar27[1];" (assignment_expression "bVar8 = pbVar27[1]" (identifier "bVar8") (= "=") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar11 = pbVar27 + 1;" (assignment_expression "pbVar11 = pbVar27 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }" (if "if") (parenthesized_expression "((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e))))" (( "(") (binary_expression "(bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))" (parenthesized_expression "(bVar8 == 0x21)" (( "(") (binary_expression "bVar8 == 0x21" (identifier "bVar8") (== "==") (number_literal "0x21")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))" (( "(") (parenthesized_expression "(*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e))" (( "(") (binary_expression "*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)" (binary_expression "*(int *)(param_3 + -0x4730) < 0" (pointer_expression "*(int *)(param_3 + -0x4730)" (* "*") (cast_expression "(int *)(param_3 + -0x4730)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + -0x4730)" (( "(") (binary_expression "param_3 + -0x4730" (identifier "param_3") (+ "+") (number_literal "-0x4730")) () ")")))) (< "<") (number_literal "0")) (&& "&&") (parenthesized_expression "(bVar8 == 0x5e)" (( "(") (binary_expression "bVar8 == 0x5e" (identifier "bVar8") (== "==") (number_literal "0x5e")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          bVar8 = pbVar27[2];\n          pbVar11 = pbVar27 + 2;\n        }" ({ "{") (expression_statement "bVar8 = pbVar27[2];" (assignment_expression "bVar8 = pbVar27[2]" (identifier "bVar8") (= "=") (subscript_expression "pbVar27[2]" (identifier "pbVar27") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pbVar11 = pbVar27 + 2;" (assignment_expression "pbVar11 = pbVar27 + 2" (identifier "pbVar11") (= "=") (binary_expression "pbVar27 + 2" (identifier "pbVar27") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (bVar8 == 0x5d) {\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }" (if "if") (parenthesized_expression "(bVar8 == 0x5d)" (( "(") (binary_expression "bVar8 == 0x5d" (identifier "bVar8") (== "==") (number_literal "0x5d")) () ")")) (compound_statement "{\n          bVar8 = pbVar11[1];\n          pbVar11 = pbVar11 + 1;\n        }" ({ "{") (expression_statement "bVar8 = pbVar11[1];" (assignment_expression "bVar8 = pbVar11[1]" (identifier "bVar8") (= "=") (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pbVar33 = (byte *)0x5d;" (assignment_expression "pbVar33 = (byte *)0x5d" (identifier "pbVar33") (= "=") (cast_expression "(byte *)0x5d" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5d"))) (; ";")) (while_statement "while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }" (while "while") (parenthesized_expression "(pbVar27 = pbVar11 + 1, bVar8 != 0x5d)" (( "(") (comma_expression "pbVar27 = pbVar11 + 1, bVar8 != 0x5d" (assignment_expression "pbVar27 = pbVar11 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (, ",") (binary_expression "bVar8 != 0x5d" (identifier "bVar8") (!= "!=") (number_literal "0x5d"))) () ")")) (compound_statement "{\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar11 = pbVar27;\n          bVar8 = *pbVar27;\n        }" ({ "{") (if_statement "if (bVar8 == 0) goto LAB_0002a034;" (if "if") (parenthesized_expression "(bVar8 == 0)" (( "(") (binary_expression "bVar8 == 0" (identifier "bVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002a034;" (goto "goto") (statement_identifier "LAB_0002a034") (; ";"))) (expression_statement "pbVar11 = pbVar27;" (assignment_expression "pbVar11 = pbVar27" (identifier "pbVar11") (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "bVar8 = *pbVar27;" (assignment_expression "bVar8 = *pbVar27" (identifier "bVar8") (= "=") (pointer_expression "*pbVar27" (* "*") (identifier "pbVar27"))) (; ";")) (} "}"))) (expression_statement "iVar10 = (int)(char)pbVar11[1];" (assignment_expression "iVar10 = (int)(char)pbVar11[1]" (identifier "iVar10") (= "=") (cast_expression "(int)(char)pbVar11[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar11[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar11[1]" (identifier "pbVar11") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (labeled_statement "joined_r0x0002a188:\n        puVar23 = puVar31;" (statement_identifier "joined_r0x0002a188") (: ":") (expression_statement "puVar23 = puVar31;" (assignment_expression "puVar23 = puVar31" (identifier "puVar23") (= "=") (identifier "puVar31")) (; ";"))) (if_statement "if (iVar10 == 0) goto LAB_0002a034;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002a034;" (goto "goto") (statement_identifier "LAB_0002a034") (; ";"))) (} "}"))) (expression_statement "pbVar33 = &DAT_c0000601;" (assignment_expression "pbVar33 = &DAT_c0000601" (identifier "pbVar33") (= "=") (pointer_expression "&DAT_c0000601" (& "&") (identifier "DAT_c0000601"))) (; ";")) (expression_statement "uVar2 = iVar10 - 0x21U & 0xff;" (assignment_expression "uVar2 = iVar10 - 0x21U & 0xff" (identifier "uVar2") (= "=") (binary_expression "iVar10 - 0x21U & 0xff" (binary_expression "iVar10 - 0x21U" (identifier "iVar10") (- "-") (number_literal "0x21U")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "pbVar13 = (byte *)(uint)(uVar2 < 0x20);" (assignment_expression "pbVar13 = (byte *)(uint)(uVar2 < 0x20)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)(uint)(uVar2 < 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(uVar2 < 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < 0x20)" (( "(") (binary_expression "uVar2 < 0x20" (identifier "uVar2") (< "<") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (pbVar13 != (byte *)0x0) {\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }" (if "if") (parenthesized_expression "(pbVar13 != (byte *)0x0)" (( "(") (binary_expression "pbVar13 != (byte *)0x0" (identifier "pbVar13") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }\n        if (iVar10 != 0x29) goto LAB_0002a198;\n        if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }\n        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }\n        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }\n        break;\n      }" ({ "{") (while_statement "while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }" (while "while") (parenthesized_expression "((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0)" (( "(") (binary_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f)" (( "(") (binary_expression "(0xc0000601U >> (uVar2 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar2 & 0x1f))" (( "(") (binary_expression "0xc0000601U >> (uVar2 & 0x1f)" (number_literal "0xc0000601U") (>> ">>") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "0x1f")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          iVar10 = (int)(char)pbVar27[1];\n          if (iVar10 != 0x28) goto LAB_0002a028;\n          pbVar13 = (byte *)0x1;\n          unaff_s5 = (int *)((int)unaff_s5 + 1);\n          pbVar27 = pbVar27 + 1;\n          uVar2 = 7;\n        }" ({ "{") (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" (identifier "iVar10") (= "=") (cast_expression "(int)(char)pbVar27[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar27[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (if_statement "if (iVar10 != 0x28) goto LAB_0002a028;" (if "if") (parenthesized_expression "(iVar10 != 0x28)" (( "(") (binary_expression "iVar10 != 0x28" (identifier "iVar10") (!= "!=") (number_literal "0x28")) () ")")) (goto_statement "goto LAB_0002a028;" (goto "goto") (statement_identifier "LAB_0002a028") (; ";"))) (expression_statement "pbVar13 = (byte *)0x1;" (assignment_expression "pbVar13 = (byte *)0x1" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + 1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + 1)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)((int)unaff_s5 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5 + 1)" (( "(") (binary_expression "(int)unaff_s5 + 1" (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = 7;" (assignment_expression "uVar2 = 7" (identifier "uVar2") (= "=") (number_literal "7")) (; ";")) (} "}"))) (if_statement "if (iVar10 != 0x29) goto LAB_0002a198;" (if "if") (parenthesized_expression "(iVar10 != 0x29)" (( "(") (binary_expression "iVar10 != 0x29" (identifier "iVar10") (!= "!=") (number_literal "0x29")) () ")")) (goto_statement "goto LAB_0002a198;" (goto "goto") (statement_identifier "LAB_0002a198") (; ";"))) (if_statement "if (unaff_s5 != (int *)0x0) {\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }" (if "if") (parenthesized_expression "(unaff_s5 != (int *)0x0)" (( "(") (binary_expression "unaff_s5 != (int *)0x0" (identifier "unaff_s5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar10 = (int)(char)pbVar27[1];\n          unaff_s5 = (int *)((int)unaff_s5 + -1);\nLAB_0002a028:\n          pbVar27 = pbVar27 + 1;\n          goto joined_r0x0002a188;\n        }" ({ "{") (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" (identifier "iVar10") (= "=") (cast_expression "(int)(char)pbVar27[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar27[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "unaff_s5 = (int *)((int)unaff_s5 + -1);" (assignment_expression "unaff_s5 = (int *)((int)unaff_s5 + -1)" (identifier "unaff_s5") (= "=") (cast_expression "(int *)((int)unaff_s5 + -1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5 + -1)" (( "(") (binary_expression "(int)unaff_s5 + -1" (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (labeled_statement "LAB_0002a028:\n          pbVar27 = pbVar27 + 1;" (statement_identifier "LAB_0002a028") (: ":") (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";"))) (goto_statement "goto joined_r0x0002a188;" (goto "goto") (statement_identifier "joined_r0x0002a188") (; ";")) (} "}"))) (if_statement "if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }" (if "if") (parenthesized_expression "(1 < *(int *)(puVar20 + -0x588) - 0x3fU)" (( "(") (binary_expression "1 < *(int *)(puVar20 + -0x588) - 0x3fU" (number_literal "1") (< "<") (binary_expression "*(int *)(puVar20 + -0x588) - 0x3fU" (pointer_expression "*(int *)(puVar20 + -0x588)" (* "*") (cast_expression "(int *)(puVar20 + -0x588)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x588)" (( "(") (binary_expression "puVar20 + -0x588" (identifier "puVar20") (+ "+") (number_literal "-0x588")) () ")")))) (- "-") (number_literal "0x3fU"))) () ")")) (compound_statement "{\n          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);\n        }" ({ "{") (expression_statement "*(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "*(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6)" (pointer_expression "*(byte **)(puVar20 + -0x5cc)" (* "*") (cast_expression "(byte **)(puVar20 + -0x5cc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5cc)" (( "(") (binary_expression "puVar20 + -0x5cc" (identifier "puVar20") (+ "+") (number_literal "-0x5cc")) () ")")))) (= "=") (binary_expression "pbVar27 + (1 - (int)unaff_s6)" (identifier "pbVar27") (+ "+") (parenthesized_expression "(1 - (int)unaff_s6)" (( "(") (binary_expression "1 - (int)unaff_s6" (number_literal "1") (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) () ")")))) (; ";")) (} "}"))) (if_statement "if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }" (if "if") (parenthesized_expression "((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c)" (( "(") (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4" (parenthesized_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc)" (( "(") (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar20 + -0x5cc)" (* "*") (cast_expression "(int *)(puVar20 + -0x5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5cc)" (( "(") (binary_expression "puVar20 + -0x5cc" (identifier "puVar20") (+ "+") (number_literal "-0x5cc")) () ")")))) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffffc")) () ")")) (- "-") (number_literal "4")) (< "<") (number_literal "0x1f3c")) () ")")) (compound_statement "{\n          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);\n          puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);\n          iVar4 = *(int *)(puVar20 + -0x5d8);\n          *puVar23 = 0;\n          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;\n          *puVar3 = puVar31 + iVar10 + 0x18;\n          if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }\n                    \n                    \n          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();\n          return uVar2;\n        }" ({ "{") (expression_statement "iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" (identifier "iVar10") (= "=") (unary_expression "-((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8)" (( "(") (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7" (parenthesized_expression "(*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc)" (( "(") (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc" (binary_expression "*(int *)(puVar20 + -0x5cc) + 7U" (pointer_expression "*(int *)(puVar20 + -0x5cc)" (* "*") (cast_expression "(int *)(puVar20 + -0x5cc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5cc)" (( "(") (binary_expression "puVar20 + -0x5cc" (identifier "puVar20") (+ "+") (number_literal "-0x5cc")) () ")")))) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffffc")) () ")")) (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);" (assignment_expression "puVar23 = (undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (identifier "puVar23") (= "=") (cast_expression "(undefined1 *)\n                    (**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar4 + -0x7b7c))\n                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b7c))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7b7c)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7b7c)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b7c)" (( "(") (binary_expression "iVar4 + -0x7b7c" (identifier "iVar4") (+ "+") (number_literal "-0x7b7c")) () ")"))))) () ")")) (argument_list "(puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (( "(") (binary_expression "puVar31 + iVar10 + 0x1c" (binary_expression "puVar31 + iVar10" (identifier "puVar31") (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0x1c")) (, ",") (identifier "unaff_s6") (, ",") (binary_expression "(int)pbVar27 - (int)unaff_s6" (cast_expression "(int)pbVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar27")) (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) () ")"))))) (; ";")) (expression_statement "puVar3 = *(undefined4 **)(puVar20 + -0x5bc);" (assignment_expression "puVar3 = *(undefined4 **)(puVar20 + -0x5bc)" (identifier "puVar3") (= "=") (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" (* "*") (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5bc)" (( "(") (binary_expression "puVar20 + -0x5bc" (identifier "puVar20") (+ "+") (number_literal "-0x5bc")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar20 + -0x5d8)" (* "*") (cast_expression "(int *)(puVar20 + -0x5d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5d8)" (( "(") (binary_expression "puVar20 + -0x5d8" (identifier "puVar20") (+ "+") (number_literal "-0x5d8")) () ")"))))) (; ";")) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + iVar10 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar31 + iVar10 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar31 + iVar10 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + iVar10 + 0x18)" (( "(") (binary_expression "puVar31 + iVar10 + 0x18" (binary_expression "puVar31 + iVar10" (identifier "puVar31") (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = puVar31 + iVar10 + 0x18;" (assignment_expression "*puVar3 = puVar31 + iVar10 + 0x18" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (binary_expression "puVar31 + iVar10 + 0x18" (binary_expression "puVar31 + iVar10" (identifier "puVar31") (+ "+") (identifier "iVar10")) (+ "+") (number_literal "0x18"))) (; ";")) (if_statement "if (*(int *)(puVar20 + -0x5b8) == 0) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" (if "if") (parenthesized_expression "(*(int *)(puVar20 + -0x5b8) == 0)" (( "(") (binary_expression "*(int *)(puVar20 + -0x5b8) == 0" (pointer_expression "*(int *)(puVar20 + -0x5b8)" (* "*") (cast_expression "(int *)(puVar20 + -0x5b8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5b8)" (( "(") (binary_expression "puVar20 + -0x5b8" (identifier "puVar20") (+ "+") (number_literal "-0x5b8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" ({ "{") (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7ce0)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7ce0)" (* "*") (cast_expression "(code **)(iVar4 + -0x7ce0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7ce0)" (( "(") (binary_expression "iVar4 + -0x7ce0" (identifier "iVar4") (+ "+") (number_literal "-0x7ce0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78bc,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (( "(") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78bc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x78bc")) (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x78cc")) (, ",") (number_literal "0x454") (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7570")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (if_statement "if (pbVar27[-1] != 0x29) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" (if "if") (parenthesized_expression "(pbVar27[-1] != 0x29)" (( "(") (binary_expression "pbVar27[-1] != 0x29" (subscript_expression "pbVar27[-1]" (identifier "pbVar27") ([ "[") (number_literal "-1") (] "]")) (!= "!=") (number_literal "0x29")) () ")")) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" ({ "{") (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7ce0)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7ce0)" (* "*") (cast_expression "(code **)(iVar4 + -0x7ce0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7ce0)" (( "(") (binary_expression "iVar4 + -0x7ce0" (identifier "iVar4") (+ "+") (number_literal "-0x7ce0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x78ac,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (( "(") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78ac" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x78ac")) (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x78cc")) (, ",") (number_literal "0x455") (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7570")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (if_statement "if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" (if "if") (parenthesized_expression "(0x1f < *(int *)(puVar20 + -0x588) - 0x21U)" (( "(") (binary_expression "0x1f < *(int *)(puVar20 + -0x588) - 0x21U" (number_literal "0x1f") (< "<") (binary_expression "*(int *)(puVar20 + -0x588) - 0x21U" (pointer_expression "*(int *)(puVar20 + -0x588)" (* "*") (cast_expression "(int *)(puVar20 + -0x588)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x588)" (( "(") (binary_expression "puVar20 + -0x588" (identifier "puVar20") (+ "+") (number_literal "-0x588")) () ")")))) (- "-") (number_literal "0x21U"))) () ")")) (compound_statement "{\n            uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);\n            return uVar2;\n          }" ({ "{") (expression_statement "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570);" (assignment_expression "uVar2 = (**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                              (*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7ce0)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7ce0)" (* "*") (cast_expression "(code **)(iVar4 + -0x7ce0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7ce0)" (( "(") (binary_expression "iVar4 + -0x7ce0" (identifier "iVar4") (+ "+") (number_literal "-0x7ce0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7898,\n                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,\n                               *(int *)(iVar4 + -0x7e24) + -0x7570)" (( "(") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7898" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7898")) (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x78cc")) (, ",") (number_literal "0x4ad") (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7570")) () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();" (assignment_expression "uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))()" (identifier "uVar2") (= "=") (call_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))()" (parenthesized_expression "(*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))" (( "(") (pointer_expression "*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" (* "*") (cast_expression "(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4)" (( "(") (binary_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4" (pointer_expression "*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4)" (( "(") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0 +\n                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4" (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x76e0" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x76e0")) (+ "+") (binary_expression "(*(int *)(puVar20 + -0x588) - 0x21U) * 4" (parenthesized_expression "(*(int *)(puVar20 + -0x588) - 0x21U)" (( "(") (binary_expression "*(int *)(puVar20 + -0x588) - 0x21U" (pointer_expression "*(int *)(puVar20 + -0x588)" (* "*") (cast_expression "(int *)(puVar20 + -0x588)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x588)" (( "(") (binary_expression "puVar20 + -0x588" (identifier "puVar20") (+ "+") (number_literal "-0x588")) () ")")))) (- "-") (number_literal "0x21U")) () ")")) (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "iVar4")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }" (if "if") (parenthesized_expression "((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0))" (( "(") (binary_expression "(iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)" (parenthesized_expression "(iVar10 != 0x7c)" (( "(") (binary_expression "iVar10 != 0x7c" (identifier "iVar10") (!= "!=") (number_literal "0x7c")) () ")")) (|| "||") (parenthesized_expression "(unaff_s5 != (int *)0x0)" (( "(") (binary_expression "unaff_s5 != (int *)0x0" (identifier "unaff_s5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\nLAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];\n        pbVar27 = pbVar27 + 1;\n        goto joined_r0x0002a188;\n      }" ({ "{") (labeled_statement "LAB_0002a198:\n        iVar10 = (int)(char)pbVar27[1];" (statement_identifier "LAB_0002a198") (: ":") (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" (identifier "iVar10") (= "=") (cast_expression "(int)(char)pbVar27[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar27[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]"))))) (; ";"))) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto joined_r0x0002a188;" (goto "goto") (statement_identifier "joined_r0x0002a188") (; ";")) (} "}"))) (expression_statement "pbVar11 = *(byte **)(puVar20 + -0x5cc);" (assignment_expression "pbVar11 = *(byte **)(puVar20 + -0x5cc)" (identifier "pbVar11") (= "=") (pointer_expression "*(byte **)(puVar20 + -0x5cc)" (* "*") (cast_expression "(byte **)(puVar20 + -0x5cc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5cc)" (( "(") (binary_expression "puVar20 + -0x5cc" (identifier "puVar20") (+ "+") (number_literal "-0x5cc")) () ")"))))) (; ";")) (if_statement "if (unaff_s1 == 0) {\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }" (if "if") (parenthesized_expression "(unaff_s1 == 0)" (( "(") (binary_expression "unaff_s1 == 0" (identifier "unaff_s1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pbVar11 = pbVar27 + (1 - (int)unaff_s6);\n      }" ({ "{") (expression_statement "pbVar11 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "pbVar11 = pbVar27 + (1 - (int)unaff_s6)" (identifier "pbVar11") (= "=") (binary_expression "pbVar27 + (1 - (int)unaff_s6)" (identifier "pbVar27") (+ "+") (parenthesized_expression "(1 - (int)unaff_s6)" (( "(") (binary_expression "1 - (int)unaff_s6" (number_literal "1") (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) () ")")))) (; ";")) (} "}"))) (if_statement "if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;" (if "if") (parenthesized_expression "(0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4)" (( "(") (binary_expression "0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4" (number_literal "0x1f3b") (< "<") (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar11 + 7) & 0xfffffffc)" (( "(") (binary_expression "(uint)(pbVar11 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar11 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar11 + 7)" (( "(") (binary_expression "pbVar11 + 7" (identifier "pbVar11") (+ "+") (number_literal "7")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (- "-") (number_literal "4"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b7c);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b7c)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(iVar4 + -0x7b7c)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b7c)" (( "(") (binary_expression "iVar4 + -0x7b7c" (identifier "iVar4") (+ "+") (number_literal "-0x7b7c")) () ")"))))) (; ";")) (expression_statement "pbVar13 = pbVar27 + -(int)unaff_s6;" (assignment_expression "pbVar13 = pbVar27 + -(int)unaff_s6" (identifier "pbVar13") (= "=") (binary_expression "pbVar27 + -(int)unaff_s6" (identifier "pbVar27") (+ "+") (unary_expression "-(int)unaff_s6" (- "-") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))))) (; ";")) (expression_statement "pbVar21 = pbVar27 + 1;" (assignment_expression "pbVar21 = pbVar27 + 1" (identifier "pbVar21") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (identifier "iVar17") (= "=") (unary_expression "-(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (( "(") (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar11 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar11 + 7) & 0xfffffffc)" (( "(") (binary_expression "(uint)(pbVar11 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar11 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar11 + 7)" (( "(") (binary_expression "pbVar11 + 7" (identifier "pbVar11") (+ "+") (number_literal "7")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar32 = puVar31 + iVar17;" (assignment_expression "puVar32 = puVar31 + iVar17" (identifier "puVar32") (= "=") (binary_expression "puVar31 + iVar17" (identifier "puVar31") (+ "+") (identifier "iVar17"))) (; ";")) (expression_statement "*(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;" (assignment_expression "*(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18" (pointer_expression "*(undefined1 **)(puVar20 + -0x5d0)" (* "*") (cast_expression "(undefined1 **)(puVar20 + -0x5d0)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5d0)" (( "(") (binary_expression "puVar20 + -0x5d0" (identifier "puVar20") (+ "+") (number_literal "-0x5d0")) () ")")))) (= "=") (binary_expression "puVar31 + iVar17 + 0x18" (binary_expression "puVar31 + iVar17" (identifier "puVar31") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);" (assignment_expression "puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c)" (identifier "puVar23") (= "=") (cast_expression "(undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar35)(puVar31 + iVar17 + 0x1c)" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "(puVar31 + iVar17 + 0x1c)" (( "(") (binary_expression "puVar31 + iVar17 + 0x1c" (binary_expression "puVar31 + iVar17" (identifier "puVar31") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar20 + -0x5d8);" (assignment_expression "iVar4 = *(int *)(puVar20 + -0x5d8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar20 + -0x5d8)" (* "*") (cast_expression "(int *)(puVar20 + -0x5d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + -0x5d8)" (( "(") (binary_expression "puVar20 + -0x5d8" (identifier "puVar20") (+ "+") (number_literal "-0x5d8")) () ")"))))) (; ";")) (expression_statement "puVar15 = *(undefined4 **)(puVar20 + -0x5d0);" (assignment_expression "puVar15 = *(undefined4 **)(puVar20 + -0x5d0)" (identifier "puVar15") (= "=") (pointer_expression "*(undefined4 **)(puVar20 + -0x5d0)" (* "*") (cast_expression "(undefined4 **)(puVar20 + -0x5d0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5d0)" (( "(") (binary_expression "puVar20 + -0x5d0" (identifier "puVar20") (+ "+") (number_literal "-0x5d0")) () ")"))))) (; ";")) (expression_statement "iVar10 = (int)(char)pbVar27[1];" (assignment_expression "iVar10 = (int)(char)pbVar27[1]" (identifier "iVar10") (= "=") (cast_expression "(int)(char)pbVar27[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar27[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = *(undefined4 **)(puVar20 + -0x5bc);" (assignment_expression "puVar6 = *(undefined4 **)(puVar20 + -0x5bc)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" (* "*") (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5bc)" (( "(") (binary_expression "puVar20 + -0x5bc" (identifier "puVar20") (+ "+") (number_literal "-0x5bc")) () ")"))))) (; ";")) (expression_statement "*puVar15 = 0;" (assignment_expression "*puVar15 = 0" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)(puVar20 + -0x5bc) = puVar15;" (assignment_expression "*(undefined4 **)(puVar20 + -0x5bc) = puVar15" (pointer_expression "*(undefined4 **)(puVar20 + -0x5bc)" (* "*") (cast_expression "(undefined4 **)(puVar20 + -0x5bc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5bc)" (( "(") (binary_expression "puVar20 + -0x5bc" (identifier "puVar20") (+ "+") (number_literal "-0x5bc")) () ")")))) (= "=") (identifier "puVar15")) (; ";")) (expression_statement "*puVar6 = puVar15;" (assignment_expression "*puVar6 = puVar15" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "puVar15")) (; ";")) (expression_statement "pbVar33 = unaff_s6;" (assignment_expression "pbVar33 = unaff_s6" (identifier "pbVar33") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "unaff_s6 = pbVar21;" (assignment_expression "unaff_s6 = pbVar21" (identifier "unaff_s6") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "pbVar27 = pbVar21;" (assignment_expression "pbVar27 = pbVar21" (identifier "pbVar27") (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "puVar31 = puVar31 + iVar17;" (assignment_expression "puVar31 = puVar31 + iVar17" (identifier "puVar31") (= "=") (binary_expression "puVar31 + iVar17" (identifier "puVar31") (+ "+") (identifier "iVar17"))) (; ";")) (expression_statement "puVar23 = puVar32;" (assignment_expression "puVar23 = puVar32" (identifier "puVar23") (= "=") (identifier "puVar32")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0002a034:\n  pbVar11 = *(byte **)(puVar20 + -0x5b4);" (statement_identifier "LAB_0002a034") (: ":") (expression_statement "pbVar11 = *(byte **)(puVar20 + -0x5b4);" (assignment_expression "pbVar11 = *(byte **)(puVar20 + -0x5b4)" (identifier "pbVar11") (= "=") (pointer_expression "*(byte **)(puVar20 + -0x5b4)" (* "*") (cast_expression "(byte **)(puVar20 + -0x5b4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + -0x5b4)" (( "(") (binary_expression "puVar20 + -0x5b4" (identifier "puVar20") (+ "+") (number_literal "-0x5b4")) () ")"))))) (; ";"))) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b8c)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(iVar4 + -0x7b8c)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b8c)" (( "(") (binary_expression "iVar4 + -0x7b8c" (identifier "iVar4") (+ "+") (number_literal "-0x7b8c")) () ")"))))) (; ";")) (if_statement "if (pbVar11 == (byte *)*puVar3) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(pbVar11 == (byte *)*puVar3)" (( "(") (binary_expression "pbVar11 == (byte *)*puVar3" (identifier "pbVar11") (== "==") (cast_expression "(byte *)*puVar3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (expression_statement "pcVar36 = FUN_0002a610;" (assignment_expression "pcVar36 = FUN_0002a610" (identifier "pcVar36") (= "=") (identifier "FUN_0002a610")) (; ";")) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar29 = pcVar35 + 0x38ae0;" (assignment_expression "pcVar29 = pcVar35 + 0x38ae0" (identifier "pcVar29") (= "=") (binary_expression "pcVar35 + 0x38ae0" (identifier "pcVar35") (+ "+") (number_literal "0x38ae0"))) (; ";")) (expression_statement "puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);" (assignment_expression "puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)(pcVar35 + 0x30f7c)" (* "*") (cast_expression "(undefined4 **)(pcVar35 + 0x30f7c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar35 + 0x30f7c)" (( "(") (binary_expression "pcVar35 + 0x30f7c" (identifier "pcVar35") (+ "+") (number_literal "0x30f7c")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0" (pointer_expression "*(undefined1 **)(puVar31 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar31 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -8)" (( "(") (binary_expression "puVar31 + -8" (identifier "puVar31") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar20 + -0x5f0" (identifier "puVar20") (+ "+") (number_literal "-0x5f0"))) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x1c) = param_3;" (assignment_expression "*(byte **)(puVar31 + -0x1c) = param_3" (pointer_expression "*(byte **)(puVar31 + -0x1c)" (* "*") (cast_expression "(byte **)(puVar31 + -0x1c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1c)" (( "(") (binary_expression "puVar31 + -0x1c" (identifier "puVar31") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(code **)(puVar31 + -0x160) = pcVar29;" (assignment_expression "*(code **)(puVar31 + -0x160) = pcVar29" (pointer_expression "*(code **)(puVar31 + -0x160)" (* "*") (cast_expression "(code **)(puVar31 + -0x160)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x160)" (( "(") (binary_expression "puVar31 + -0x160" (identifier "puVar31") (+ "+") (number_literal "-0x160")) () ")")))) (= "=") (identifier "pcVar29")) (; ";")) (expression_statement "*(code **)(puVar31 + -4) = pcVar36;" (assignment_expression "*(code **)(puVar31 + -4) = pcVar36" (pointer_expression "*(code **)(puVar31 + -4)" (* "*") (cast_expression "(code **)(puVar31 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -4)" (( "(") (binary_expression "puVar31 + -4" (identifier "puVar31") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar36")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0xc) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0xc) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0xc)" (* "*") (cast_expression "(byte **)(puVar31 + -0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0xc)" (( "(") (binary_expression "puVar31 + -0xc" (identifier "puVar31") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar31 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar31 + -0x10)" (* "*") (cast_expression "(byte **)(puVar31 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x10)" (( "(") (binary_expression "puVar31 + -0x10" (identifier "puVar31") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar31 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x14)" (* "*") (cast_expression "(int **)(puVar31 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x14)" (( "(") (binary_expression "puVar31 + -0x14" (identifier "puVar31") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x18) = pbVar26;" (assignment_expression "*(byte **)(puVar31 + -0x18) = pbVar26" (pointer_expression "*(byte **)(puVar31 + -0x18)" (* "*") (cast_expression "(byte **)(puVar31 + -0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x18)" (( "(") (binary_expression "puVar31 + -0x18" (identifier "puVar31") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0x20) = puVar3;" (assignment_expression "*(undefined4 **)(puVar31 + -0x20) = puVar3" (pointer_expression "*(undefined4 **)(puVar31 + -0x20)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x20)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x20)" (( "(") (binary_expression "puVar31 + -0x20" (identifier "puVar31") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar31 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar31 + -0x24)" (* "*") (cast_expression "(uint *)(puVar31 + -0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x24)" (( "(") (binary_expression "puVar31 + -0x24" (identifier "puVar31") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x28) = pbVar12;" (assignment_expression "*(byte **)(puVar31 + -0x28) = pbVar12" (pointer_expression "*(byte **)(puVar31 + -0x28)" (* "*") (cast_expression "(byte **)(puVar31 + -0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x28)" (( "(") (binary_expression "puVar31 + -0x28" (identifier "puVar31") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "pbVar12")) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0x144) = puVar6;" (assignment_expression "*(undefined4 **)(puVar31 + -0x144) = puVar6" (pointer_expression "*(undefined4 **)(puVar31 + -0x144)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x144)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x144)" (( "(") (binary_expression "puVar31 + -0x144" (identifier "puVar31") (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x154) = pbVar11 + 1;" (assignment_expression "*(byte **)(puVar31 + -0x154) = pbVar11 + 1" (pointer_expression "*(byte **)(puVar31 + -0x154)" (* "*") (cast_expression "(byte **)(puVar31 + -0x154)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x154)" (( "(") (binary_expression "puVar31 + -0x154" (identifier "puVar31") (+ "+") (number_literal "-0x154")) () ")")))) (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar21 = (byte *)(uint)*pbVar11;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar11" (identifier "pbVar21") (= "=") (binary_expression "(byte *)(uint)*pbVar11" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar11"))) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x2c) = *puVar6;" (assignment_expression "*(undefined4 *)(puVar31 + -0x2c) = *puVar6" (pointer_expression "*(undefined4 *)(puVar31 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x2c)" (( "(") (binary_expression "puVar31 + -0x2c" (identifier "puVar31") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "iVar10 = *(int *)(pcVar35 + 0x30cbc);" (assignment_expression "iVar10 = *(int *)(pcVar35 + 0x30cbc)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(pcVar35 + 0x30cbc)" (* "*") (cast_expression "(int *)(pcVar35 + 0x30cbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar35 + 0x30cbc)" (( "(") (binary_expression "pcVar35 + 0x30cbc" (identifier "pcVar35") (+ "+") (number_literal "0x30cbc")) () ")"))))) (; ";")) (expression_statement "pbVar27 = pbVar13;" (assignment_expression "pbVar27 = pbVar13" (identifier "pbVar27") (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "pbVar34 = pbVar33;" (assignment_expression "pbVar34 = pbVar33" (identifier "pbVar34") (= "=") (identifier "pbVar33")) (; ";")) (if_statement "if (pbVar21 != (byte *)0x0) {\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }" (if "if") (parenthesized_expression "(pbVar21 != (byte *)0x0)" (( "(") (binary_expression "pbVar21 != (byte *)0x0" (identifier "pbVar21") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar2 = *(uint *)(puVar31 + 0x10);\n    unaff_s1 = uVar2 & 2;\n    pbVar12 = (byte *)(uVar2 & 0x10);\n    *(uint *)(puVar31 + -0x140) = uVar2 & 5;\n    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);\n    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;\n    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;\n    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;\n    pbVar26 = pbVar11;\n    unaff_s6 = param_4;\n    do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);\n  }" ({ "{") (expression_statement "uVar2 = *(uint *)(puVar31 + 0x10);" (assignment_expression "uVar2 = *(uint *)(puVar31 + 0x10)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(puVar31 + 0x10)" (* "*") (cast_expression "(uint *)(puVar31 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + 0x10)" (( "(") (binary_expression "puVar31 + 0x10" (identifier "puVar31") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "unaff_s1 = uVar2 & 2;" (assignment_expression "unaff_s1 = uVar2 & 2" (identifier "unaff_s1") (= "=") (binary_expression "uVar2 & 2" (identifier "uVar2") (& "&") (number_literal "2"))) (; ";")) (expression_statement "pbVar12 = (byte *)(uVar2 & 0x10);" (assignment_expression "pbVar12 = (byte *)(uVar2 & 0x10)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)(uVar2 & 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 & 0x10)" (( "(") (binary_expression "uVar2 & 0x10" (identifier "uVar2") (& "&") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x140) = uVar2 & 5;" (assignment_expression "*(uint *)(puVar31 + -0x140) = uVar2 & 5" (pointer_expression "*(uint *)(puVar31 + -0x140)" (* "*") (cast_expression "(uint *)(puVar31 + -0x140)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x140)" (( "(") (binary_expression "puVar31 + -0x140" (identifier "puVar31") (+ "+") (number_literal "-0x140")) () ")")))) (= "=") (binary_expression "uVar2 & 5" (identifier "uVar2") (& "&") (number_literal "5"))) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar31 + -0x148)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x148)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x148)" (( "(") (binary_expression "puVar31 + -0x148" (identifier "puVar31") (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(pcVar35 + 0x30b08)" (* "*") (cast_expression "(undefined4 *)(pcVar35 + 0x30b08)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar35 + 0x30b08)" (( "(") (binary_expression "pcVar35 + 0x30b08" (identifier "pcVar35") (+ "+") (number_literal "0x30b08")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;" (assignment_expression "*(int *)(puVar31 + -0x14c) = iVar10 + -0x7660" (pointer_expression "*(int *)(puVar31 + -0x14c)" (* "*") (cast_expression "(int *)(puVar31 + -0x14c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x14c)" (( "(") (binary_expression "puVar31 + -0x14c" (identifier "puVar31") (+ "+") (number_literal "-0x14c")) () ")")))) (= "=") (binary_expression "iVar10 + -0x7660" (identifier "iVar10") (+ "+") (number_literal "-0x7660"))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar31 + -0x138)" (* "*") (cast_expression "(int *)(puVar31 + -0x138)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x138)" (( "(") (binary_expression "puVar31 + -0x138" (identifier "puVar31") (+ "+") (number_literal "-0x138")) () ")")))) (= "=") (binary_expression "*(int *)(pcVar35 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(pcVar35 + 0x30d80)" (* "*") (cast_expression "(int *)(pcVar35 + 0x30d80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar35 + 0x30d80)" (( "(") (binary_expression "pcVar35 + 0x30d80" (identifier "pcVar35") (+ "+") (number_literal "0x30d80")) () ")")))) (+ "+") (number_literal "-0x60e0"))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar31 + -0x13c)" (* "*") (cast_expression "(int *)(puVar31 + -0x13c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x13c)" (( "(") (binary_expression "puVar31 + -0x13c" (identifier "puVar31") (+ "+") (number_literal "-0x13c")) () ")")))) (= "=") (binary_expression "*(int *)(pcVar35 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(pcVar35 + 0x30cbc)" (* "*") (cast_expression "(int *)(pcVar35 + 0x30cbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar35 + 0x30cbc)" (( "(") (binary_expression "pcVar35 + 0x30cbc" (identifier "pcVar35") (+ "+") (number_literal "0x30cbc")) () ")")))) (+ "+") (number_literal "-0x78dc"))) (; ";")) (expression_statement "pbVar26 = pbVar11;" (assignment_expression "pbVar26 = pbVar11" (identifier "pbVar26") (= "=") (identifier "pbVar11")) (; ";")) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" (identifier "unaff_s6") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    } while (pbVar21 != (byte *)0x0);" (do "do") (compound_statement "{\n      pbVar11 = pbVar21;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }\n      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }\n      uVar2 = 1;\n      pbVar21 = pbVar11;\n      if (pbVar34 == pbVar13) goto LAB_0002a8e4;\n      pbVar21 = (byte *)(uint)*pbVar34;\n      if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }\n      uVar2 = 1;\n      unaff_s6 = pbVar11;\n      if (pbVar21 != pbVar11) goto LAB_0002a8e4;\n      pbVar26 = *(byte **)(puVar31 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar21 = (byte *)(uint)*pbVar26;\n      pbVar34 = pbVar34 + 1;\n      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;\n    }" ({ "{") (expression_statement "pbVar11 = pbVar21;" (assignment_expression "pbVar11 = pbVar21" (identifier "pbVar11") (= "=") (identifier "pbVar21")) (; ";")) (if_statement "if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }" (if "if") (parenthesized_expression "(pbVar12 != (byte *)0x0)" (( "(") (binary_expression "pbVar12 != (byte *)0x0" (identifier "pbVar12") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);\n      }" ({ "{") (expression_statement "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();" (assignment_expression "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))()" (identifier "piVar22") (= "=") (cast_expression "(int *)(**(code **)(pcVar29 + -0x7cdc))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar29 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar29 + -0x7cdc))" (( "(") (pointer_expression "**(code **)(pcVar29 + -0x7cdc)" (* "*") (pointer_expression "*(code **)(pcVar29 + -0x7cdc)" (* "*") (cast_expression "(code **)(pcVar29 + -0x7cdc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar29 + -0x7cdc)" (( "(") (binary_expression "pcVar29 + -0x7cdc" (identifier "pcVar29") (+ "+") (number_literal "-0x7cdc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "pcVar29 = *(code **)(puVar31 + -0x160);" (assignment_expression "pcVar29 = *(code **)(puVar31 + -0x160)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar31 + -0x160)" (* "*") (cast_expression "(code **)(puVar31 + -0x160)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x160)" (( "(") (binary_expression "puVar31 + -0x160" (identifier "puVar31") (+ "+") (number_literal "-0x160")) () ")"))))) (; ";")) (expression_statement "pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);" (assignment_expression "pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" (identifier "pbVar11") (= "=") (binary_expression "(byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(*piVar22 + (int)pbVar21 * 4 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar22 + (int)pbVar21 * 4 + 3)" (( "(") (binary_expression "*piVar22 + (int)pbVar21 * 4 + 3" (binary_expression "*piVar22 + (int)pbVar21 * 4" (pointer_expression "*piVar22" (* "*") (identifier "piVar22")) (+ "+") (binary_expression "(int)pbVar21 * 4" (cast_expression "(int)pbVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar21")) (* "*") (number_literal "4"))) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }" (if "if") (parenthesized_expression "(((uint)(pbVar11 + -0x21) & 0xff) < 0x3c)" (( "(") (binary_expression "((uint)(pbVar11 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar11 + -0x21) & 0xff)" (( "(") (binary_expression "(uint)(pbVar11 + -0x21) & 0xff" (call_expression "(uint)(pbVar11 + -0x21)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar11 + -0x21)" (( "(") (binary_expression "pbVar11 + -0x21" (identifier "pbVar11") (+ "+") (number_literal "-0x21")) () ")"))) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "0x3c")) () ")")) (compound_statement "{\n                    \n                    \n        uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();\n        return uVar2;\n      }" ({ "{") (expression_statement "uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();" (assignment_expression "uVar2 = (*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))()" (identifier "uVar2") (= "=") (call_expression "(*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))" (( "(") (pointer_expression "*(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4))" (* "*") (parenthesized_expression "(pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4))" (( "(") (binary_expression "pcVar29 +\n                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" (identifier "pcVar29") (+ "+") (pointer_expression "*(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)" (( "(") (binary_expression "*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar31 + -0x14c)" (* "*") (cast_expression "(int *)(puVar31 + -0x14c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x14c)" (( "(") (binary_expression "puVar31 + -0x14c" (identifier "puVar31") (+ "+") (number_literal "-0x14c")) () ")")))) (+ "+") (binary_expression "((uint)(pbVar11 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar11 + -0x21) & 0xff)" (( "(") (binary_expression "(uint)(pbVar11 + -0x21) & 0xff" (call_expression "(uint)(pbVar11 + -0x21)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar11 + -0x21)" (( "(") (binary_expression "pbVar11 + -0x21" (identifier "pbVar11") (+ "+") (number_literal "-0x21")) () ")"))) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) () ")"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar21 = pbVar11;" (assignment_expression "pbVar21 = pbVar11" (identifier "pbVar21") (= "=") (identifier "pbVar11")) (; ";")) (if_statement "if (pbVar34 == pbVar13) goto LAB_0002a8e4;" (if "if") (parenthesized_expression "(pbVar34 == pbVar13)" (( "(") (binary_expression "pbVar34 == pbVar13" (identifier "pbVar34") (== "==") (identifier "pbVar13")) () ")")) (goto_statement "goto LAB_0002a8e4;" (goto "goto") (statement_identifier "LAB_0002a8e4") (; ";"))) (expression_statement "pbVar21 = (byte *)(uint)*pbVar34;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar34" (identifier "pbVar21") (= "=") (binary_expression "(byte *)(uint)*pbVar34" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar34"))) (; ";")) (if_statement "if (pbVar12 != (byte *)0x0) {\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }" (if "if") (parenthesized_expression "(pbVar12 != (byte *)0x0)" (( "(") (binary_expression "pbVar12 != (byte *)0x0" (identifier "pbVar12") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();\n        pcVar29 = *(code **)(puVar31 + -0x160);\n        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);\n      }" ({ "{") (expression_statement "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();" (assignment_expression "piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))()" (identifier "piVar22") (= "=") (cast_expression "(int *)(**(code **)(pcVar29 + -0x7cdc))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar29 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar29 + -0x7cdc))" (( "(") (pointer_expression "**(code **)(pcVar29 + -0x7cdc)" (* "*") (pointer_expression "*(code **)(pcVar29 + -0x7cdc)" (* "*") (cast_expression "(code **)(pcVar29 + -0x7cdc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar29 + -0x7cdc)" (( "(") (binary_expression "pcVar29 + -0x7cdc" (identifier "pcVar29") (+ "+") (number_literal "-0x7cdc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "pcVar29 = *(code **)(puVar31 + -0x160);" (assignment_expression "pcVar29 = *(code **)(puVar31 + -0x160)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar31 + -0x160)" (* "*") (cast_expression "(code **)(puVar31 + -0x160)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x160)" (( "(") (binary_expression "puVar31 + -0x160" (identifier "puVar31") (+ "+") (number_literal "-0x160")) () ")"))))) (; ";")) (expression_statement "pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);" (assignment_expression "pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4)" (identifier "pbVar21") (= "=") (pointer_expression "*(byte **)(*piVar22 + (int)pbVar21 * 4)" (* "*") (cast_expression "(byte **)(*piVar22 + (int)pbVar21 * 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar22 + (int)pbVar21 * 4)" (( "(") (binary_expression "*piVar22 + (int)pbVar21 * 4" (pointer_expression "*piVar22" (* "*") (identifier "piVar22")) (+ "+") (binary_expression "(int)pbVar21 * 4" (cast_expression "(int)pbVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar21")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (expression_statement "unaff_s6 = pbVar11;" (assignment_expression "unaff_s6 = pbVar11" (identifier "unaff_s6") (= "=") (identifier "pbVar11")) (; ";")) (if_statement "if (pbVar21 != pbVar11) goto LAB_0002a8e4;" (if "if") (parenthesized_expression "(pbVar21 != pbVar11)" (( "(") (binary_expression "pbVar21 != pbVar11" (identifier "pbVar21") (!= "!=") (identifier "pbVar11")) () ")")) (goto_statement "goto LAB_0002a8e4;" (goto "goto") (statement_identifier "LAB_0002a8e4") (; ";"))) (expression_statement "pbVar26 = *(byte **)(puVar31 + -0x154);" (assignment_expression "pbVar26 = *(byte **)(puVar31 + -0x154)" (identifier "pbVar26") (= "=") (pointer_expression "*(byte **)(puVar31 + -0x154)" (* "*") (cast_expression "(byte **)(puVar31 + -0x154)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x154)" (( "(") (binary_expression "puVar31 + -0x154" (identifier "puVar31") (+ "+") (number_literal "-0x154")) () ")"))))) (; ";")) (expression_statement "unaff_s6 = (byte *)0x0;" (assignment_expression "unaff_s6 = (byte *)0x0" (identifier "unaff_s6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pbVar21 = (byte *)(uint)*pbVar26;" (assignment_expression "pbVar21 = (byte *)(uint)*pbVar26" (identifier "pbVar21") (= "=") (binary_expression "(byte *)(uint)*pbVar26" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar26"))) (; ";")) (expression_statement "pbVar34 = pbVar34 + 1;" (assignment_expression "pbVar34 = pbVar34 + 1" (identifier "pbVar34") (= "=") (binary_expression "pbVar34 + 1" (identifier "pbVar34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x154) = pbVar26 + 1;" (assignment_expression "*(byte **)(puVar31 + -0x154) = pbVar26 + 1" (pointer_expression "*(byte **)(puVar31 + -0x154)" (* "*") (cast_expression "(byte **)(puVar31 + -0x154)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x154)" (( "(") (binary_expression "puVar31 + -0x154" (identifier "puVar31") (+ "+") (number_literal "-0x154")) () ")")))) (= "=") (binary_expression "pbVar26 + 1" (identifier "pbVar26") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar21 != (byte *)0x0)" (( "(") (binary_expression "pbVar21 != (byte *)0x0" (identifier "pbVar21") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pbVar34 != pbVar13) {\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }" (if "if") (parenthesized_expression "(pbVar34 != pbVar13)" (( "(") (binary_expression "pbVar34 != pbVar13" (identifier "pbVar34") (!= "!=") (identifier "pbVar13")) () ")")) (compound_statement "{\n    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);\n    if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }\n  }" ({ "{") (expression_statement "pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);" (assignment_expression "pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8)" (identifier "pbVar26") (= "=") (cast_expression "(byte *)(*(uint *)(puVar31 + 0x10) & 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(uint *)(puVar31 + 0x10) & 8)" (( "(") (binary_expression "*(uint *)(puVar31 + 0x10) & 8" (pointer_expression "*(uint *)(puVar31 + 0x10)" (* "*") (cast_expression "(uint *)(puVar31 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + 0x10)" (( "(") (binary_expression "puVar31 + 0x10" (identifier "puVar31") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (pbVar26 == (byte *)0x0) {\n      uVar2 = 1;\n    }\n    else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" (if "if") (parenthesized_expression "(pbVar26 == (byte *)0x0)" (( "(") (binary_expression "pbVar26 == (byte *)0x0" (identifier "pbVar26") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar2 = 1;\n    }" ({ "{") (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" (else "else") (compound_statement "{\n      uVar2 = (uint)(*pbVar34 != 0x2f);\n    }" ({ "{") (expression_statement "uVar2 = (uint)(*pbVar34 != 0x2f);" (assignment_expression "uVar2 = (uint)(*pbVar34 != 0x2f)" (identifier "uVar2") (= "=") (call_expression "(uint)(*pbVar34 != 0x2f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar34 != 0x2f)" (( "(") (binary_expression "*pbVar34 != 0x2f" (pointer_expression "*pbVar34" (* "*") (identifier "pbVar34")) (!= "!=") (number_literal "0x2f")) () ")")))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0002a8e4:\n  iVar4 = *(int *)(puVar31 + -0x2c);" (statement_identifier "LAB_0002a8e4") (: ":") (expression_statement "iVar4 = *(int *)(puVar31 + -0x2c);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x2c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x2c)" (* "*") (cast_expression "(int *)(puVar31 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x2c)" (( "(") (binary_expression "puVar31 + -0x2c" (identifier "puVar31") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";"))) (if_statement "if (iVar4 == **(int **)(puVar31 + -0x144)) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(iVar4 == **(int **)(puVar31 + -0x144))" (( "(") (binary_expression "iVar4 == **(int **)(puVar31 + -0x144)" (identifier "iVar4") (== "==") (pointer_expression "**(int **)(puVar31 + -0x144)" (* "*") (pointer_expression "*(int **)(puVar31 + -0x144)" (* "*") (cast_expression "(int **)(puVar31 + -0x144)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x144)" (( "(") (binary_expression "puVar31 + -0x144" (identifier "puVar31") (+ "+") (number_literal "-0x144")) () ")")))))) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "pcVar35 = *(code **)(pcVar29 + -0x7b8c);" (assignment_expression "pcVar35 = *(code **)(pcVar29 + -0x7b8c)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(pcVar29 + -0x7b8c)" (* "*") (cast_expression "(code **)(pcVar29 + -0x7b8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar29 + -0x7b8c)" (( "(") (binary_expression "pcVar29 + -0x7b8c" (identifier "pcVar29") (+ "+") (number_literal "-0x7b8c")) () ")"))))) (; ";")) (expression_statement "pcVar36 = rpl_fnmatch;" (assignment_expression "pcVar36 = rpl_fnmatch" (identifier "pcVar36") (= "=") (identifier "rpl_fnmatch")) (; ";")) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar29 = *(code **)(pcVar35 + 0x302e0);" (assignment_expression "pcVar29 = *(code **)(pcVar35 + 0x302e0)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(pcVar35 + 0x302e0)" (* "*") (cast_expression "(code **)(pcVar35 + 0x302e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar35 + 0x302e0)" (( "(") (binary_expression "pcVar35 + 0x302e0" (identifier "pcVar35") (+ "+") (number_literal "0x302e0")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar31 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar31 + -0x19c)" (* "*") (cast_expression "(uint *)(puVar31 + -0x19c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x19c)" (( "(") (binary_expression "puVar31 + -0x19c" (identifier "puVar31") (+ "+") (number_literal "-0x19c")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "piVar22 = *(int **)(pcVar35 + 0x30338);" (assignment_expression "piVar22 = *(int **)(pcVar35 + 0x30338)" (identifier "piVar22") (= "=") (pointer_expression "*(int **)(pcVar35 + 0x30338)" (* "*") (cast_expression "(int **)(pcVar35 + 0x30338)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar35 + 0x30338)" (( "(") (binary_expression "pcVar35 + 0x30338" (identifier "pcVar35") (+ "+") (number_literal "0x30338")) () ")"))))) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x180) = pbVar34;" (assignment_expression "*(byte **)(puVar31 + -0x180) = pbVar34" (pointer_expression "*(byte **)(puVar31 + -0x180)" (* "*") (cast_expression "(byte **)(puVar31 + -0x180)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x180)" (( "(") (binary_expression "puVar31 + -0x180" (identifier "puVar31") (+ "+") (number_literal "-0x180")) () ")")))) (= "=") (identifier "pbVar34")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x198) = pbVar21;" (assignment_expression "*(byte **)(puVar31 + -0x198) = pbVar21" (pointer_expression "*(byte **)(puVar31 + -0x198)" (* "*") (cast_expression "(byte **)(puVar31 + -0x198)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x198)" (( "(") (binary_expression "puVar31 + -0x198" (identifier "puVar31") (+ "+") (number_literal "-0x198")) () ")")))) (= "=") (identifier "pbVar21")) (; ";")) (expression_statement "*(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;" (assignment_expression "*(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c" (pointer_expression "*(code **)(puVar31 + -0x1c8)" (* "*") (cast_expression "(code **)(puVar31 + -0x1c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")")))) (= "=") (binary_expression "pcVar35 + 0x37e9c" (identifier "pcVar35") (+ "+") (number_literal "0x37e9c"))) (; ";")) (expression_statement "*(code **)(puVar31 + -0x17c) = pcVar36;" (assignment_expression "*(code **)(puVar31 + -0x17c) = pcVar36" (pointer_expression "*(code **)(puVar31 + -0x17c)" (* "*") (cast_expression "(code **)(puVar31 + -0x17c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x17c)" (( "(") (binary_expression "puVar31 + -0x17c" (identifier "puVar31") (+ "+") (number_literal "-0x17c")) () ")")))) (= "=") (identifier "pcVar36")) (; ";")) (expression_statement "*(int *)(puVar31 + -0x184) = iVar10;" (assignment_expression "*(int *)(puVar31 + -0x184) = iVar10" (pointer_expression "*(int *)(puVar31 + -0x184)" (* "*") (cast_expression "(int *)(puVar31 + -0x184)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x184)" (( "(") (binary_expression "puVar31 + -0x184" (identifier "puVar31") (+ "+") (number_literal "-0x184")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar31 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar31 + -0x188)" (* "*") (cast_expression "(byte **)(puVar31 + -0x188)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x188)" (( "(") (binary_expression "puVar31 + -0x188" (identifier "puVar31") (+ "+") (number_literal "-0x188")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar31 + -0x18c) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x18c) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x18c)" (* "*") (cast_expression "(int **)(puVar31 + -0x18c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x18c)" (( "(") (binary_expression "puVar31 + -0x18c" (identifier "puVar31") (+ "+") (number_literal "-0x18c")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar31 + -400) = pbVar26;" (assignment_expression "*(byte **)(puVar31 + -400) = pbVar26" (pointer_expression "*(byte **)(puVar31 + -400)" (* "*") (cast_expression "(byte **)(puVar31 + -400)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -400)" (( "(") (binary_expression "puVar31 + -400" (identifier "puVar31") (+ "+") (number_literal "-400")) () ")")))) (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x194) = pbVar13;" (assignment_expression "*(byte **)(puVar31 + -0x194) = pbVar13" (pointer_expression "*(byte **)(puVar31 + -0x194)" (* "*") (cast_expression "(byte **)(puVar31 + -0x194)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x194)" (( "(") (binary_expression "puVar31 + -0x194" (identifier "puVar31") (+ "+") (number_literal "-0x194")) () ")")))) (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x1a0) = pbVar12;" (assignment_expression "*(byte **)(puVar31 + -0x1a0) = pbVar12" (pointer_expression "*(byte **)(puVar31 + -0x1a0)" (* "*") (cast_expression "(byte **)(puVar31 + -0x1a0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1a0)" (( "(") (binary_expression "puVar31 + -0x1a0" (identifier "puVar31") (+ "+") (number_literal "-0x1a0")) () ")")))) (= "=") (identifier "pbVar12")) (; ";")) (expression_statement "*(int *)(puVar31 + -0x1b4) = iVar4;" (assignment_expression "*(int *)(puVar31 + -0x1b4) = iVar4" (pointer_expression "*(int *)(puVar31 + -0x1b4)" (* "*") (cast_expression "(int *)(puVar31 + -0x1b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1b4)" (( "(") (binary_expression "puVar31 + -0x1b4" (identifier "puVar31") (+ "+") (number_literal "-0x1b4")) () ")")))) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x1b8) = pbVar33;" (assignment_expression "*(byte **)(puVar31 + -0x1b8) = pbVar33" (pointer_expression "*(byte **)(puVar31 + -0x1b8)" (* "*") (cast_expression "(byte **)(puVar31 + -0x1b8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1b8)" (( "(") (binary_expression "puVar31 + -0x1b8" (identifier "puVar31") (+ "+") (number_literal "-0x1b8")) () ")")))) (= "=") (identifier "pbVar33")) (; ";")) (expression_statement "*(int *)(puVar31 + -0x1a4) = *piVar22;" (assignment_expression "*(int *)(puVar31 + -0x1a4) = *piVar22" (pointer_expression "*(int *)(puVar31 + -0x1a4)" (* "*") (cast_expression "(int *)(puVar31 + -0x1a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1a4)" (( "(") (binary_expression "puVar31 + -0x1a4" (identifier "puVar31") (+ "+") (number_literal "-0x1a4")) () ")")))) (= "=") (pointer_expression "*piVar22" (* "*") (identifier "piVar22"))) (; ";")) (expression_statement "iVar10 = (*pcVar29)();" (assignment_expression "iVar10 = (*pcVar29)()" (identifier "iVar10") (= "=") (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar10 != 1) {\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar10 != 1)" (( "(") (binary_expression "iVar10 != 1" (identifier "iVar10") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    puVar20 = puVar31 + -0x1ac;\n    pcVar35 = *(code **)(iVar4 + -0x7b28);\n    puVar23 = puVar31 + -0x1b4;\n    *(undefined4 *)(puVar31 + -0x1ac) = 0;\n    *(undefined4 *)(puVar31 + -0x1a8) = 0;\n    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);\n    uVar2 = iVar10 + 1;\n    iVar4 = *(int *)(puVar31 + -0x1c8);\n    if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar20 = puVar31 + -0x1ac;" (assignment_expression "puVar20 = puVar31 + -0x1ac" (identifier "puVar20") (= "=") (binary_expression "puVar31 + -0x1ac" (identifier "puVar31") (+ "+") (number_literal "-0x1ac"))) (; ";")) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(iVar4 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b28)" (( "(") (binary_expression "iVar4 + -0x7b28" (identifier "iVar4") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "puVar23 = puVar31 + -0x1b4;" (assignment_expression "puVar23 = puVar31 + -0x1b4" (identifier "puVar23") (= "=") (binary_expression "puVar31 + -0x1b4" (identifier "puVar31") (+ "+") (number_literal "-0x1b4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x1ac)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1ac)" (( "(") (binary_expression "puVar31 + -0x1ac" (identifier "puVar31") (+ "+") (number_literal "-0x1ac")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x1a8)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1a8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1a8)" (( "(") (binary_expression "puVar31 + -0x1a8" (identifier "puVar31") (+ "+") (number_literal "-0x1a8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = (*pcVar35)(0,puVar23,0,puVar20);" (assignment_expression "iVar10 = (*pcVar35)(0,puVar23,0,puVar20)" (identifier "iVar10") (= "=") (call_expression "(*pcVar35)(0,puVar23,0,puVar20)" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "(0,puVar23,0,puVar20)" (( "(") (number_literal "0") (, ",") (identifier "puVar23") (, ",") (number_literal "0") (, ",") (identifier "puVar20") () ")")))) (; ";")) (expression_statement "uVar2 = iVar10 + 1;" (assignment_expression "uVar2 = iVar10 + 1" (identifier "uVar2") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (uVar2 != 0) {\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n      uVar5 = 0x129;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar10 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar31 + -0x1b8);\n      piVar19 = piVar25;\n      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar17 = iVar10 + 1;\n      iVar4 = *(int *)(puVar31 + -0x1c8);\n      if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" ({ "{") (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7b68)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7b68)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b68)" (( "(") (binary_expression "iVar4 + -0x7b68" (identifier "iVar4") (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar20)" (( "(") (identifier "puVar20") () ")")))) (; ";")) (expression_statement "uVar5 = 0x129;" (assignment_expression "uVar5 = 0x129" (identifier "uVar5") (= "=") (number_literal "0x129")) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar10 == 0) goto LAB_0002b570;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b570;" (goto "goto") (statement_identifier "LAB_0002b570") (; ";"))) (expression_statement "piVar25 = (int *)(puVar31 + -0x1b8);" (assignment_expression "piVar25 = (int *)(puVar31 + -0x1b8)" (identifier "piVar25") (= "=") (cast_expression "(int *)(puVar31 + -0x1b8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1b8)" (( "(") (binary_expression "puVar31 + -0x1b8" (identifier "puVar31") (+ "+") (number_literal "-0x1b8")) () ")")))) (; ";")) (expression_statement "piVar19 = piVar25;" (assignment_expression "piVar19 = piVar25" (identifier "piVar19") (= "=") (identifier "piVar25")) (; ";")) (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7b28)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b28)" (( "(") (binary_expression "iVar4 + -0x7b28" (identifier "iVar4") (+ "+") (number_literal "-0x7b28")) () ")"))))) () ")")) (argument_list "(0,piVar25,0,puVar20)" (( "(") (number_literal "0") (, ",") (identifier "piVar25") (, ",") (number_literal "0") (, ",") (identifier "puVar20") () ")")))) (; ";")) (expression_statement "iVar17 = iVar10 + 1;" (assignment_expression "iVar17 = iVar10 + 1" (identifier "iVar17") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar17 != 0) {\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);\n        iVar4 = *(int *)(puVar31 + -0x1c8);\n        if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar18 = uVar2 + iVar17;\n        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar2 = 0xffffffff;\n        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();\n        iVar10 = *(int *)(puVar31 + -0x1c8);\n        *puVar3 = 0xc;\n        goto LAB_0002b300;\n      }" ({ "{") (expression_statement "iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);" (assignment_expression "iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20)" (identifier "iVar16") (= "=") (call_expression "(**(code **)(iVar4 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b68))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7b68)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7b68)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b68)" (( "(") (binary_expression "iVar4 + -0x7b68" (identifier "iVar4") (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar20)" (( "(") (identifier "puVar20") () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar16 == 0) {\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = 0x12d;\n          goto LAB_0002b570;\n        }" ({ "{") (expression_statement "uVar5 = 0x12d;" (assignment_expression "uVar5 = 0x12d" (identifier "uVar5") (= "=") (number_literal "0x12d")) (; ";")) (goto_statement "goto LAB_0002b570;" (goto "goto") (statement_identifier "LAB_0002b570") (; ";")) (} "}"))) (expression_statement "uVar18 = uVar2 + iVar17;" (assignment_expression "uVar18 = uVar2 + iVar17" (identifier "uVar18") (= "=") (binary_expression "uVar2 + iVar17" (identifier "uVar2") (+ "+") (identifier "iVar17"))) (; ";")) (if_statement "if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" (if "if") (parenthesized_expression "((uVar2 <= uVar18) && (uVar18 < 0x40000000))" (( "(") (binary_expression "(uVar2 <= uVar18) && (uVar18 < 0x40000000)" (parenthesized_expression "(uVar2 <= uVar18)" (( "(") (binary_expression "uVar2 <= uVar18" (identifier "uVar2") (<= "<=") (identifier "uVar18")) () ")")) (&& "&&") (parenthesized_expression "(uVar18 < 0x40000000)" (( "(") (binary_expression "uVar18 < 0x40000000" (identifier "uVar18") (< "<") (number_literal "0x40000000")) () ")"))) () ")")) (compound_statement "{\n          if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar16 = (**(code **)(iVar4 + -0x7be8))();\n          iVar4 = *(int *)(puVar31 + -0x1c8);\n          if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" ({ "{") (if_statement "if (uVar18 < 2000) {\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" (if "if") (parenthesized_expression "(uVar18 < 2000)" (( "(") (binary_expression "uVar18 < 2000" (identifier "uVar18") (< "<") (number_literal "2000")) () ")")) (compound_statement "{\n            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);\n            puVar24 = puVar31 + iVar16 + -0x1c8;\n            piVar19 = (int *)(puVar24 + uVar2 * 4);\n            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" ({ "{") (expression_statement "iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8)" (identifier "iVar16") (= "=") (unary_expression "-(uVar18 * 4 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar18 * 4 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar18 * 4 + 7 & 0xfffffff8" (binary_expression "uVar18 * 4 + 7" (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4")) (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar24 = puVar31 + iVar16 + -0x1c8;" (assignment_expression "puVar24 = puVar31 + iVar16 + -0x1c8" (identifier "puVar24") (= "=") (binary_expression "puVar31 + iVar16 + -0x1c8" (binary_expression "puVar31 + iVar16" (identifier "puVar31") (+ "+") (identifier "iVar16")) (+ "+") (number_literal "-0x1c8"))) (; ";")) (expression_statement "piVar19 = (int *)(puVar24 + uVar2 * 4);" (assignment_expression "piVar19 = (int *)(puVar24 + uVar2 * 4)" (identifier "piVar19") (= "=") (cast_expression "(int *)(puVar24 + uVar2 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + uVar2 * 4)" (( "(") (binary_expression "puVar24 + uVar2 * 4" (identifier "puVar24") (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "(**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);" (call_expression "(**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7b28)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b28)" (( "(") (binary_expression "iVar4 + -0x7b28" (identifier "iVar4") (+ "+") (number_literal "-0x7b28")) () ")"))))) () ")")) (argument_list "(puVar24,puVar23,uVar2,puVar20)" (( "(") (identifier "puVar24") (, ",") (identifier "puVar23") (, ",") (identifier "uVar2") (, ",") (identifier "puVar20") () ")"))) (; ";")) (expression_statement "iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (* "*") (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (( "(") (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")")))) (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar20)" (( "(") (identifier "puVar20") () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) {\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );\n            }" ({ "{") (labeled_statement "LAB_0002b590:\n              do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );" (statement_identifier "LAB_0002b590") (: ":") (do_statement "do {\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              } while( true );" (do "do") (compound_statement "{\n                uVar5 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);\n              }" ({ "{") (expression_statement "uVar5 = 0x147;" (assignment_expression "uVar5 = 0x147" (identifier "uVar5") (= "=") (number_literal "0x147")) (; ";")) (labeled_statement "LAB_0002b570:\n                (**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);" (statement_identifier "LAB_0002b570") (: ":") (expression_statement "(**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);" (call_expression "(**(code **)(iVar4 + -0x7ce0))\n                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar4 + -0x7ce0))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7ce0)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7ce0)" (* "*") (cast_expression "(code **)(iVar4 + -0x7ce0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7ce0)" (( "(") (binary_expression "iVar4 + -0x7ce0" (identifier "iVar4") (+ "+") (number_literal "-0x7ce0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,\n                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558)" (( "(") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7864")) (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7870")) (, ",") (identifier "uVar5") (, ",") (binary_expression "*(int *)(iVar4 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar4 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar4 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -0x7e24)" (( "(") (binary_expression "iVar4 + -0x7e24" (identifier "iVar4") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7558")) () ")"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "(**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);" (call_expression "(**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20)" (parenthesized_expression "(**(code **)(iVar4 + -0x7b28))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7b28)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b28)" (( "(") (binary_expression "iVar4 + -0x7b28" (identifier "iVar4") (+ "+") (number_literal "-0x7b28")) () ")"))))) () ")")) (argument_list "(piVar19,piVar25,iVar17,puVar20)" (( "(") (identifier "piVar19") (, ",") (identifier "piVar25") (, ",") (identifier "iVar17") (, ",") (identifier "puVar20") () ")"))) (; ";")) (expression_statement "*(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + iVar16 + -0x1d0)" (* "*") (cast_expression "(byte **)(puVar31 + iVar16 + -0x1d0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + iVar16 + -0x1d0)" (( "(") (binary_expression "puVar31 + iVar16 + -0x1d0" (binary_expression "puVar31 + iVar16" (identifier "puVar31") (+ "+") (identifier "iVar16")) (+ "+") (number_literal "-0x1d0")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "uVar2") (= "=") (call_expression "FUN_00029320(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "FUN_00029320") (argument_list "(puVar24,piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (( "(") (identifier "puVar24") (, ",") (identifier "piVar19") (, ",") (binary_expression "piVar19 + iVar10" (identifier "piVar19") (+ "+") (identifier "iVar10")) (, ",") (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pbVar27 << 0x1d)" (( "(") (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar27")) (<< "<<") (number_literal "0x1d")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002b300;" (goto "goto") (statement_identifier "LAB_0002b300") (; ";")) (} "}"))) (expression_statement "iVar16 = (**(code **)(iVar4 + -0x7be8))();" (assignment_expression "iVar16 = (**(code **)(iVar4 + -0x7be8))()" (identifier "iVar16") (= "=") (call_expression "(**(code **)(iVar4 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7be8))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7be8)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7be8)" (* "*") (cast_expression "(code **)(iVar4 + -0x7be8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7be8)" (( "(") (binary_expression "iVar4 + -0x7be8" (identifier "iVar4") (+ "+") (number_literal "-0x7be8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar16 != 0) {\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(int *)(puVar31 + -0x1bc) = iVar16;\n            piVar19 = (int *)(iVar16 + uVar2 * 4);\n            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);\n            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);\n            iVar4 = *(int *)(puVar31 + -0x1c8);\n            if (iVar16 == 0) goto LAB_0002b590;\n            pcVar35 = *(code **)(iVar4 + -0x7b28);\n            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);\n            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);\n            *(byte **)(puVar31 + -0x1d0) = pbVar27;\n            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));\n            iVar10 = *(int *)(puVar31 + -0x1c8);\n            goto LAB_0002b300;\n          }" ({ "{") (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(iVar4 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b28)" (( "(") (binary_expression "iVar4 + -0x7b28" (identifier "iVar4") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x1bc) = iVar16;" (assignment_expression "*(int *)(puVar31 + -0x1bc) = iVar16" (pointer_expression "*(int *)(puVar31 + -0x1bc)" (* "*") (cast_expression "(int *)(puVar31 + -0x1bc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1bc)" (( "(") (binary_expression "puVar31 + -0x1bc" (identifier "puVar31") (+ "+") (number_literal "-0x1bc")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "piVar19 = (int *)(iVar16 + uVar2 * 4);" (assignment_expression "piVar19 = (int *)(iVar16 + uVar2 * 4)" (identifier "piVar19") (= "=") (cast_expression "(int *)(iVar16 + uVar2 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar2 * 4)" (( "(") (binary_expression "iVar16 + uVar2 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "(*pcVar35)(iVar16,puVar23,uVar2,puVar20);" (call_expression "(*pcVar35)(iVar16,puVar23,uVar2,puVar20)" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "(iVar16,puVar23,uVar2,puVar20)" (( "(") (identifier "iVar16") (, ",") (identifier "puVar23") (, ",") (identifier "uVar2") (, ",") (identifier "puVar20") () ")"))) (; ";")) (expression_statement "iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (identifier "iVar16") (= "=") (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (* "*") (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b68)" (( "(") (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")")))) (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar20)" (( "(") (identifier "puVar20") () ")")))) (; ";")) (expression_statement "iVar4 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar16 == 0) goto LAB_0002b590;" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b590;" (goto "goto") (statement_identifier "LAB_0002b590") (; ";"))) (expression_statement "pcVar35 = *(code **)(iVar4 + -0x7b28);" (assignment_expression "pcVar35 = *(code **)(iVar4 + -0x7b28)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(iVar4 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar4 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7b28)" (( "(") (binary_expression "iVar4 + -0x7b28" (identifier "iVar4") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1bc)" (( "(") (binary_expression "puVar31 + -0x1bc" (identifier "puVar31") (+ "+") (number_literal "-0x1bc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1bc)" (( "(") (binary_expression "puVar31 + -0x1bc" (identifier "puVar31") (+ "+") (number_literal "-0x1bc")) () ")"))))) (; ";")) (expression_statement "(*pcVar35)(piVar19,piVar25,iVar17,puVar20);" (call_expression "(*pcVar35)(piVar19,piVar25,iVar17,puVar20)" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "(piVar19,piVar25,iVar17,puVar20)" (( "(") (identifier "piVar19") (, ",") (identifier "piVar25") (, ",") (identifier "iVar17") (, ",") (identifier "puVar20") () ")"))) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0x1d0)" (* "*") (cast_expression "(byte **)(puVar31 + -0x1d0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1d0)" (( "(") (binary_expression "puVar31 + -0x1d0" (identifier "puVar31") (+ "+") (number_literal "-0x1d0")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "uVar2") (= "=") (call_expression "FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "FUN_00029320") (argument_list "(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (( "(") (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1bc)" (( "(") (binary_expression "puVar31 + -0x1bc" (identifier "puVar31") (+ "+") (number_literal "-0x1bc")) () ")")))) (, ",") (identifier "piVar19") (, ",") (binary_expression "piVar19 + iVar10" (identifier "piVar19") (+ "+") (identifier "iVar10")) (, ",") (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pbVar27 << 0x1d)" (( "(") (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar27")) (<< "<<") (number_literal "0x1d")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" (* "*") (cast_expression "(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x1c8) + -0x7b54)" (( "(") (binary_expression "*(int *)(puVar31 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")")))) (+ "+") (number_literal "-0x7b54")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar31 + -0x1bc))" (( "(") (pointer_expression "*(undefined4 *)(puVar31 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1bc)" (( "(") (binary_expression "puVar31 + -0x1bc" (identifier "puVar31") (+ "+") (number_literal "-0x1bc")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002b300;" (goto "goto") (statement_identifier "LAB_0002b300") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" (identifier "uVar2") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();" (assignment_expression "puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(**(code **)(iVar4 + -0x7c3c))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar4 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar4 + -0x7c3c))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7c3c)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7c3c)" (* "*") (cast_expression "(code **)(iVar4 + -0x7c3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7c3c)" (( "(") (binary_expression "iVar4 + -0x7c3c" (identifier "iVar4") (+ "+") (number_literal "-0x7c3c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (expression_statement "*puVar3 = 0xc;" (assignment_expression "*puVar3 = 0xc" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_0002b300;" (goto "goto") (statement_identifier "LAB_0002b300") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "piVar19 = *(int **)(puVar31 + -0x1b8);" (assignment_expression "piVar19 = *(int **)(puVar31 + -0x1b8)" (identifier "piVar19") (= "=") (pointer_expression "*(int **)(puVar31 + -0x1b8)" (* "*") (cast_expression "(int **)(puVar31 + -0x1b8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1b8)" (( "(") (binary_expression "puVar31 + -0x1b8" (identifier "puVar31") (+ "+") (number_literal "-0x1b8")) () ")"))))) (; ";")) (expression_statement "iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);" (assignment_expression "iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(iVar4 + -0x7c0c))(piVar19)" (parenthesized_expression "(**(code **)(iVar4 + -0x7c0c))" (( "(") (pointer_expression "**(code **)(iVar4 + -0x7c0c)" (* "*") (pointer_expression "*(code **)(iVar4 + -0x7c0c)" (* "*") (cast_expression "(code **)(iVar4 + -0x7c0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + -0x7c0c)" (( "(") (binary_expression "iVar4 + -0x7c0c" (identifier "iVar4") (+ "+") (number_literal "-0x7c0c")) () ")"))))) () ")")) (argument_list "(piVar19)" (( "(") (identifier "piVar19") () ")")))) (; ";")) (expression_statement "*(byte **)(puVar31 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar31 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar31 + -0x1d0)" (* "*") (cast_expression "(byte **)(puVar31 + -0x1d0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1d0)" (( "(") (binary_expression "puVar31 + -0x1d0" (identifier "puVar31") (+ "+") (number_literal "-0x1d0")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "uVar2") (= "=") (call_expression "FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "FUN_0002a610") (argument_list "(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (( "(") (pointer_expression "*(undefined4 *)(puVar31 + -0x1b4)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1b4)" (( "(") (binary_expression "puVar31 + -0x1b4" (identifier "puVar31") (+ "+") (number_literal "-0x1b4")) () ")")))) (, ",") (identifier "piVar19") (, ",") (binary_expression "(int)piVar19 + iVar10" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (+ "+") (identifier "iVar10")) (, ",") (binary_expression "(uint)((int)pbVar27 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar27 << 0x1d)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)pbVar27 << 0x1d)" (( "(") (binary_expression "(int)pbVar27 << 0x1d" (cast_expression "(int)pbVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar27")) (<< "<<") (number_literal "0x1d")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar31 + -0x1c8);" (assignment_expression "iVar10 = *(int *)(puVar31 + -0x1c8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar31 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1c8)" (( "(") (binary_expression "puVar31 + -0x1c8" (identifier "puVar31") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (labeled_statement "LAB_0002b300:\n  iVar4 = *(int *)(puVar31 + -0x1a4);" (statement_identifier "LAB_0002b300") (: ":") (expression_statement "iVar4 = *(int *)(puVar31 + -0x1a4);" (assignment_expression "iVar4 = *(int *)(puVar31 + -0x1a4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(puVar31 + -0x1a4)" (* "*") (cast_expression "(int *)(puVar31 + -0x1a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x1a4)" (( "(") (binary_expression "puVar31 + -0x1a4" (identifier "puVar31") (+ "+") (number_literal "-0x1a4")) () ")"))))) (; ";"))) (if_statement "if (iVar4 != *piVar22) {\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(iVar4 != *piVar22)" (( "(") (binary_expression "iVar4 != *piVar22" (identifier "iVar4") (!= "!=") (pointer_expression "*piVar22" (* "*") (identifier "piVar22"))) () ")")) (compound_statement "{\n    (**(code **)(iVar10 + -0x7b8c))();\n    iVar10 = piVar19[8];\n    iVar17 = *piVar19;\n    uVar2 = (uint)(iVar10 < iVar17);\n    uVar18 = piVar19[7];\n    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }\n    piVar19[8] = iVar17;\n    piVar19[7] = (iVar17 - iVar10) + uVar18;\n    return uVar2;\n  }" ({ "{") (expression_statement "(**(code **)(iVar10 + -0x7b8c))();" (call_expression "(**(code **)(iVar10 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar10 + -0x7b8c))" (( "(") (pointer_expression "**(code **)(iVar10 + -0x7b8c)" (* "*") (pointer_expression "*(code **)(iVar10 + -0x7b8c)" (* "*") (cast_expression "(code **)(iVar10 + -0x7b8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar10 + -0x7b8c)" (( "(") (binary_expression "iVar10 + -0x7b8c" (identifier "iVar10") (+ "+") (number_literal "-0x7b8c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar10 = piVar19[8];" (assignment_expression "iVar10 = piVar19[8]" (identifier "iVar10") (= "=") (subscript_expression "piVar19[8]" (identifier "piVar19") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar17 = *piVar19;" (assignment_expression "iVar17 = *piVar19" (identifier "iVar17") (= "=") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) (; ";")) (expression_statement "uVar2 = (uint)(iVar10 < iVar17);" (assignment_expression "uVar2 = (uint)(iVar10 < iVar17)" (identifier "uVar2") (= "=") (call_expression "(uint)(iVar10 < iVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar10 < iVar17)" (( "(") (binary_expression "iVar10 < iVar17" (identifier "iVar10") (< "<") (identifier "iVar17")) () ")")))) (; ";")) (expression_statement "uVar18 = piVar19[7];" (assignment_expression "uVar18 = piVar19[7]" (identifier "uVar18") (= "=") (subscript_expression "piVar19[7]" (identifier "piVar19") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }" (if "if") (parenthesized_expression "((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0))" (( "(") (binary_expression "(uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)" (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)" (( "(") (comma_expression "uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0" (assignment_expression "uVar2 = (uint)((int)uVar18 < iVar10)" (identifier "uVar2") (= "=") (call_expression "(uint)((int)uVar18 < iVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar18 < iVar10)" (( "(") (binary_expression "(int)uVar18 < iVar10" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (identifier "iVar10")) () ")")))) (, ",") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      iVar9 = iVar17 - iVar10;\n      uVar7 = uVar18;\n      iVar16 = iVar17;\n      do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));\n    }" ({ "{") (expression_statement "iVar9 = iVar17 - iVar10;" (assignment_expression "iVar9 = iVar17 - iVar10" (identifier "iVar9") (= "=") (binary_expression "iVar17 - iVar10" (identifier "iVar17") (- "-") (identifier "iVar10"))) (; ";")) (expression_statement "uVar7 = uVar18;" (assignment_expression "uVar7 = uVar18" (identifier "uVar7") (= "=") (identifier "uVar18")) (; ";")) (expression_statement "iVar16 = iVar17;" (assignment_expression "iVar16 = iVar17" (identifier "iVar16") (= "=") (identifier "iVar17")) (; ";")) (do_statement "do {\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));" (do "do") (compound_statement "{\n        iVar14 = iVar10 - uVar7;\n        uVar2 = iVar9 + uVar7;\n        if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }\n      }" ({ "{") (expression_statement "iVar14 = iVar10 - uVar7;" (assignment_expression "iVar14 = iVar10 - uVar7" (identifier "iVar14") (= "=") (binary_expression "iVar10 - uVar7" (identifier "iVar10") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "uVar2 = iVar9 + uVar7;" (assignment_expression "uVar2 = iVar9 + uVar7" (identifier "uVar2") (= "=") (binary_expression "iVar9 + uVar7" (identifier "iVar9") (+ "+") (identifier "uVar7"))) (; ";")) (if_statement "if (iVar14 < iVar9) {\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }\n        else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" (if "if") (parenthesized_expression "(iVar14 < iVar9)" (( "(") (binary_expression "iVar14 < iVar9" (identifier "iVar14") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n          iVar16 = iVar16 - iVar14;\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);\n        }" ({ "{") (expression_statement "iVar16 = iVar16 - iVar14;" (assignment_expression "iVar16 = iVar16 - iVar14" (identifier "iVar16") (= "=") (binary_expression "iVar16 - iVar14" (identifier "iVar16") (- "-") (identifier "iVar14"))) (; ";")) (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(iVar4 + uVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar7 * 4)" (( "(") (binary_expression "iVar4 + uVar7 * 4" (identifier "iVar4") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);" (assignment_expression "puVar6 = (undefined4 *)(iVar4 + iVar16 * 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(iVar4 + iVar16 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar16 * 4)" (( "(") (binary_expression "iVar4 + iVar16 * 4" (identifier "iVar4") (+ "+") (binary_expression "iVar16 * 4" (identifier "iVar16") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);" (do "do") (compound_statement "{\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            uVar2 = uVar7;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          }" ({ "{") (expression_statement "puVar15 = puVar3 + 1;" (assignment_expression "puVar15 = puVar3 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" (identifier "uVar5") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "*puVar3 = *puVar6;" (assignment_expression "*puVar3 = *puVar6" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar2 = uVar7;" (assignment_expression "uVar2 = uVar7" (identifier "uVar2") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" (identifier "puVar3") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15)" (( "(") (binary_expression "(undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15" (cast_expression "(undefined4 *)(iVar4 + (iVar14 + uVar7) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + (iVar14 + uVar7) * 4)" (( "(") (binary_expression "iVar4 + (iVar14 + uVar7) * 4" (identifier "iVar4") (+ "+") (binary_expression "(iVar14 + uVar7) * 4" (parenthesized_expression "(iVar14 + uVar7)" (( "(") (binary_expression "iVar14 + uVar7" (identifier "iVar14") (+ "+") (identifier "uVar7")) () ")")) (* "*") (number_literal "4"))) () ")"))) (!= "!=") (identifier "puVar15")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" (else "else") (compound_statement "{\n          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);\n          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);\n          do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));\n        }" ({ "{") (expression_statement "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);" (assignment_expression "puVar3 = (undefined4 *)(iVar4 + uVar7 * 4)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(iVar4 + uVar7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar7 * 4)" (( "(") (binary_expression "iVar4 + uVar7 * 4" (identifier "iVar4") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);" (assignment_expression "puVar6 = (undefined4 *)(iVar4 + iVar10 * 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(iVar4 + iVar10 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + iVar10 * 4)" (( "(") (binary_expression "iVar4 + iVar10 * 4" (identifier "iVar4") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));" (do "do") (compound_statement "{\n            puVar15 = puVar3 + 1;\n            uVar5 = *puVar3;\n            *puVar3 = *puVar6;\n            *puVar6 = uVar5;\n            puVar3 = puVar15;\n            puVar6 = puVar6 + 1;\n          }" ({ "{") (expression_statement "puVar15 = puVar3 + 1;" (assignment_expression "puVar15 = puVar3 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = *puVar3;" (assignment_expression "uVar5 = *puVar3" (identifier "uVar5") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "*puVar3 = *puVar6;" (assignment_expression "*puVar3 = *puVar6" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "*puVar6 = uVar5;" (assignment_expression "*puVar6 = uVar5" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar3 = puVar15;" (assignment_expression "puVar3 = puVar15" (identifier "puVar3") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar15 != (undefined4 *)(iVar4 + uVar2 * 4))" (( "(") (binary_expression "puVar15 != (undefined4 *)(iVar4 + uVar2 * 4)" (identifier "puVar15") (!= "!=") (cast_expression "(undefined4 *)(iVar4 + uVar2 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar2 * 4)" (( "(") (binary_expression "iVar4 + uVar2 * 4" (identifier "iVar4") (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) () ")")))) () ")")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10))" (( "(") (binary_expression "(iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10)" (parenthesized_expression "(iVar10 < iVar16)" (( "(") (binary_expression "iVar10 < iVar16" (identifier "iVar10") (< "<") (identifier "iVar16")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10)" (( "(") (comma_expression "iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10" (assignment_expression "iVar9 = iVar16 - iVar10" (identifier "iVar9") (= "=") (binary_expression "iVar16 - iVar10" (identifier "iVar16") (- "-") (identifier "iVar10"))) (, ",") (comma_expression "uVar7 = uVar2, (int)uVar2 < iVar10" (assignment_expression "uVar7 = uVar2" (identifier "uVar7") (= "=") (identifier "uVar2")) (, ",") (binary_expression "(int)uVar2 < iVar10" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (< "<") (identifier "iVar10")))) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "piVar19[8] = iVar17;" (assignment_expression "piVar19[8] = iVar17" (subscript_expression "piVar19[8]" (identifier "piVar19") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "piVar19[7] = (iVar17 - iVar10) + uVar18;" (assignment_expression "piVar19[7] = (iVar17 - iVar10) + uVar18" (subscript_expression "piVar19[7]" (identifier "piVar19") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "(iVar17 - iVar10) + uVar18" (parenthesized_expression "(iVar17 - iVar10)" (( "(") (binary_expression "iVar17 - iVar10" (identifier "iVar17") (- "-") (identifier "iVar10")) () ")")) (+ "+") (identifier "uVar18"))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

int function_1(type_1 var_4,type_2 *var_1,type_2 *var_26,type_2 *string_end,
              type_3 no_leading_period,int flags)

{
  type_4 *puVar1;
  type_5 var_5;
  type_6 *var_42;
  int var_12;
  type_6 uVar5;
  type_7 *var_28;
  type_8 var_22;
  type_7 *puVar7;
  type_6 *var_43;
  type_5 var_40;
  int var_35;
  int var_2;
  type_8 *var_23;
  int var_27;
  type_8 *var_20;
  type_8 *var_24;
  int var_41;
  type_9 *ppVar18;
  type_6 *var_44;
  int var_32;
  type_5 var_33;
  int *var_37;
  type_7 *var_9;
  type_5 var_11;
  type_4 *unaff_s2;
  type_8 *var_29;
  int *var_18;
  int *var_16;
  type_8 *var_6;
  int *var_7;
  type_7 *var_25;
  type_2 *var_34;
  type_8 *unaff_s6;
  int *piVar27;
  type_8 *var_21;
  type_4 *var_13;
  type_10 *var_30;
  type_4 *var_17;
  type_8 *var_14;
  type_8 *var_31;
  type_10 *var_19;
  type_10 *pcVar35;
  type_7 auStack_68 [24];
  type_5 var_8;
  type_9 *local_34;
  type_9 *var_10;
  int *var_15;
  
  puVar1 = PTR___stack_chk_guard_0005b58c;
  var_9 = auStack_68;
  var_6 = (type_8 *)(var_1 + 1);
  var_10 = (type_9 *)0x0;
  var_15 = *(int **)PTR___stack_chk_guard_0005b58c;
  var_20 = (type_8 *)var_1;
  var_8 = (*(type_10 *)PTR_wcslen_0005b4a8)(var_1);
  var_13 = PTR_DAT_0005b118;
  var_2 = var_1[1];
  if (var_2 != 0) {
    var_7 = (int *)0x0;
    local_34 = (type_9 *)&var_10;
    unaff_s2 = var_3 + -0x78dc;
    var_11 = (type_5)(var_4 - 0x3f < 2);
    var_9 = auStack_68;
    unaff_s6 = var_6;
    do {
      while (var_18 = (int *)var_13, var_2 != 0x5b) {
        var_20 = &DAT_c0000601;
        var_5 = var_2 - 0x21;
        var_26 = (type_2 *)(type_5)(var_5 < 0x20);
        if ((type_8 *)var_26 != (type_8 *)0x0) {
          while ((int)((0xc0000601U >> (var_5 & 0x1f)) << 0x1f) < 0) {
            var_2 = *(int *)(var_6 + 4);
            if (var_2 != 0x28) goto LAB_00028d14;
            var_26 = (type_2 *)0x1;
            var_7 = (int *)((int)var_7 + 1);
            var_6 = var_6 + 4;
            var_5 = 7;
          }
          if (var_2 != 0x29) goto LAB_00028e9c;
          if (var_7 != (int *)0x0) {
            var_2 = *(int *)(var_6 + 4);
            var_7 = (int *)((int)var_7 + -1);
LAB_00028d14:
            var_6 = var_6 + 4;
            goto joined_r0x00028e80;
          }
          if (1 < var_4 - 0x3f) {
            var_8 = ((int)var_6 - (int)unaff_s6 >> 2) + 1;
          }
          if ((var_8 < 0x40000000) && (var_8 * 4 < 0x1f3c)) {
            var_2 = -(var_8 * 4 + 0xb & 0xfffffff8);
            var_42 = (type_6 *)
                     (*(type_10 *)PTR_wmempcpy_0005b4a4)
                               (var_9 + var_2 + 0x1c,unaff_s6,(int)var_6 - (int)unaff_s6 >> 2);
            *var_42 = 0;
            ((type_9 *)(var_9 + var_2 + 0x18))->next = (type_9 *)0x0;
            local_34->next = (type_9 *)(var_9 + var_2 + 0x18);
            if (var_10 == (type_9 *)0x0) {
              var_2 = (*(type_10 *)PTR___assert_fail_0005b410)
                                 (var_3 + -0x78bc,var_3 + -0x78cc,0x454,
                                  var_3 + -0x7564);
              return var_2;
            }
            if (*(int *)(var_6 + -4) != 0x29) {
              var_2 = (*(type_10 *)PTR___assert_fail_0005b410)
                                 (var_3 + -0x78ac,var_3 + -0x78cc,0x455,
                                  var_3 + -0x7564);
              return var_2;
            }
            if (0x1f < var_4 - 0x21) {
              var_2 = (*(type_10 *)PTR___assert_fail_0005b410)
                                 (var_3 + -0x7898,var_3 + -0x78cc,0x4ad,
                                  var_3 + -0x7564);
              return var_2;
            }
                    /* WARNING: Could not emulate address calculation at 0x00028f94 */
                    /* WARNING: Treating indirect jump as call */
            var_2 = (*(type_10 *)(&_gp + *(int *)(var_3 + (var_4 - 0x21) * 4 + -0x7850)))();
            return var_2;
          }
          goto LAB_00028d20;
        }
        if ((var_2 == 0x7c) && (var_7 == (int *)0x0)) {
          var_5 = var_8;
          if (var_11 == 0) {
            var_5 = ((int)var_6 - (int)unaff_s6 >> 2) + 1;
          }
          var_20 = (type_8 *)0x40000000;
          if ((var_5 < 0x40000000) && (var_5 * 4 < 0x1f3c)) {
            var_26 = (type_2 *)((int)var_6 - (int)unaff_s6 >> 2);
            var_12 = -(var_5 * 4 + 0xb & 0xfffffff8);
            var_14 = var_6 + 4;
            ppVar18 = (type_9 *)(var_9 + var_12 + 0x18);
            var_42 = (type_6 *)(*(type_10 *)PTR_wmempcpy_0005b4a4)(var_9 + var_12 + 0x1c);
            *var_42 = 0;
            var_2 = *(int *)(var_6 + 4);
            ppVar18->next = (type_9 *)0x0;
            local_34->next = ppVar18;
            var_20 = unaff_s6;
            var_6 = var_14;
            local_34 = ppVar18;
            var_9 = var_9 + var_12;
            unaff_s6 = var_14;
            goto joined_r0x00028e80;
          }
          goto LAB_00028d20;
        }
LAB_00028e9c:
        var_2 = *(int *)(var_6 + 4);
        var_6 = var_6 + 4;
        if (var_2 == 0) goto LAB_00028d20;
      }
      if (*(int *)(var_13 + -0x4730) == 0) {
        var_2 = (*(type_10 *)PTR_getenv_0005b510)(unaff_s2);
        uVar5 = 0xffffffff;
        if (var_2 != 0) {
          uVar5 = 1;
        }
        *(type_6 *)(var_13 + -0x4730) = uVar5;
      }
      var_2 = *(int *)(var_6 + 4);
      var_14 = var_6 + 4;
      if ((var_2 == 0x21) || ((*(int *)(var_13 + -0x4730) < 0 && (var_2 == 0x5e)))) {
        var_2 = *(int *)(var_6 + 8);
        var_14 = var_6 + 8;
      }
      if (var_2 == 0x5d) {
        var_2 = *(int *)(var_14 + 4);
        var_14 = var_14 + 4;
      }
      var_20 = (type_8 *)0x5d;
      while (var_6 = var_14 + 4, var_2 != 0x5d) {
        if (var_2 == 0) goto LAB_00028d20;
        var_14 = var_6;
        var_2 = *(int *)var_6;
      }
      var_2 = *(int *)(var_14 + 4);
joined_r0x00028e80:
    } while (var_2 != 0);
  }
LAB_00028d20:
  if (var_15 == *(int **)puVar1) {
    return -1;
  }
  var_19 = var_36;
  var_16 = var_15;
  var_13 = PTR___stack_chk_fail_0005b564;
  (*(type_10 *)PTR___stack_chk_fail_0005b564)();
  var_17 = var_13 + 0x39dd0;
  var_42 = *(type_6 **)(var_13 + 0x3226c);
  *(type_8 **)(var_9 + -0xc) = var_6;
  *(type_6 **)(var_9 + -0x558) = var_42;
  *(type_4 **)(var_9 + -0x570) = var_17;
  *(type_7 **)(var_9 + -8) = auStack_68;
  *(type_4 **)(var_9 + -0x1c) = puVar1;
  *(type_10 **)(var_9 + -4) = var_19;
  *(type_8 **)(var_9 + -0x10) = unaff_s6;
  *(int **)(var_9 + -0x14) = var_7;
  *(int **)(var_9 + -0x18) = var_18;
  *(type_4 **)(var_9 + -0x20) = unaff_s2;
  *(type_5 *)(var_9 + -0x24) = var_11;
  *(type_2 **)(var_9 + -0x28) = var_1;
  var_2 = *var_16;
  *(type_6 *)(var_9 + -0x2c) = *var_42;
  var_5 = *(type_5 *)(var_9 + 0x10);
  var_6 = (type_8 *)var_26;
  var_14 = var_20;
  if (var_2 != 0) {
    var_11 = var_5 & 2;
    var_1 = (type_2 *)(var_5 & 0x10);
    *(type_5 *)(var_9 + -0x554) = var_5 & 5;
    *(type_6 *)(var_9 + -0x55c) = *(type_6 *)(var_13 + 0x31df8);
    *(int *)(var_9 + -0x560) = *(int *)(var_13 + 0x31fac) + -0x77d0;
    *(int *)(var_9 + -0x544) = *(int *)(var_13 + 0x32070) + -0x73ec;
    *(int *)(var_9 + -0x54c) = *(int *)(var_13 + 0x31fac) + -0x78dc;
    var_7 = var_16 + 1;
    unaff_s6 = (type_8 *)string_end;
    do {
      var_18 = var_7;
      if (var_1 != (type_2 *)0x0) {
        var_2 = (**(type_10 **)(var_17 + -0x7b70))(var_2);
        var_17 = *(type_4 **)(var_9 + -0x570);
      }
      if (var_2 - 0x21U < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        var_2 = (*(type_10 *)(var_17 + *(int *)(*(int *)(var_9 + -0x560) + (var_2 - 0x21U) * 4)))
                           ();
        return var_2;
      }
      var_7 = var_18;
      if ((type_8 *)var_26 == var_14) goto LAB_000295c4;
      var_12 = *(int *)var_14;
      if (var_1 != (type_2 *)0x0) {
        var_12 = (**(type_10 **)(var_17 + -0x7b70))(var_12);
        var_17 = *(type_4 **)(var_9 + -0x570);
      }
      var_5 = 1;
      if (var_12 != var_2) goto LAB_000295c8;
      unaff_s6 = (type_8 *)0x0;
      var_2 = *var_18;
      var_14 = var_14 + 4;
      var_7 = var_18 + 1;
      var_16 = var_18;
    } while (var_2 != 0);
  }
  var_5 = 0;
  var_16 = var_18;
  if (var_14 != (type_8 *)var_26) {
    var_16 = (int *)(*(type_5 *)(var_9 + 0x10) & 8);
    if (var_16 == (int *)0x0) {
LAB_000295c4:
      var_5 = 1;
    }
    else {
      var_5 = (type_5)(*(int *)var_14 != 0x2f);
    }
  }
LAB_000295c8:
  var_12 = *(int *)(var_9 + -0x2c);
  if (var_12 == **(int **)(var_9 + -0x558)) {
    return var_5;
  }
  var_19 = *(type_10 **)(var_17 + -0x7b8c);
  pcVar35 = ext_match;
  (*var_19)();
  var_30 = *(type_10 **)(var_19 + 0x315c4);
  *(type_8 **)(var_9 + -0x590) = var_14;
  *(type_4 **)(var_9 + -0x5a8) = unaff_s2;
  var_42 = *(type_6 **)(var_19 + 0x3166c);
  *(type_2 **)(var_9 + -0x5b0) = var_1;
  *(int *)(var_9 + -0x594) = var_2;
  var_21 = var_20 + 1;
  *(type_5 *)(var_9 + -0x5c0) = (type_5)(type_8)var_9[-0x575];
  *(int **)(var_9 + -0x5a0) = var_16;
  *(type_10 **)(var_9 + -0x5d8) = var_19 + 0x391d0;
  *(int *)(var_9 + -0x588) = var_12;
  *(type_10 **)(var_9 + -0x58c) = pcVar35;
  *(type_8 **)(var_9 + -0x598) = unaff_s6;
  *(int **)(var_9 + -0x59c) = var_7;
  *(type_2 **)(var_9 + -0x5a4) = var_26;
  *(type_5 *)(var_9 + -0x5ac) = var_11;
  *(type_2 **)(var_9 + -0x5c4) = string_end;
  *(type_6 *)(var_9 + -0x5b8) = 0;
  *(type_6 *)(var_9 + -0x5b4) = *var_42;
  var_14 = var_20;
  var_24 = var_6;
  uVar5 = (*var_30)(var_20);
  var_2 = (int)(char)var_20[1];
  var_12 = *(int *)(var_9 + -0x5d8);
  *(type_6 *)(var_9 + -0x5cc) = uVar5;
  var_28 = var_9 + -0x5f0;
  if (var_2 != 0) {
    var_7 = (int *)0x0;
    var_26 = *(type_2 **)(var_12 + -0x7fd8);
    var_11 = (type_5)(*(int *)(var_9 + -0x588) - 0x3fU < 2);
    *(type_7 **)(var_9 + -0x5bc) = var_9 + -0x5b8;
    *(int *)(var_9 + -0x5c8) = *(int *)(var_12 + -0x7e24) + -0x78dc;
    var_25 = var_9 + -0x5f0;
    unaff_s6 = var_21;
    do {
      while (var_28 = var_25, var_2 == 0x5b) {
        if (*(int *)((int)var_26 + -0x4730) == 0) {
          var_2 = (**(type_10 **)(var_12 + -0x7be0))(*(type_6 *)(var_9 + -0x5c8));
          uVar5 = 0xffffffff;
          var_12 = *(int *)(var_9 + -0x5d8);
          if (var_2 != 0) {
            uVar5 = 1;
          }
          *(type_6 *)((int)var_26 + -0x4730) = uVar5;
        }
        var_22 = var_21[1];
        var_23 = var_21 + 1;
        if ((var_22 == 0x21) || ((*(int *)((int)var_26 + -0x4730) < 0 && (var_22 == 0x5e)))) {
          var_22 = var_21[2];
          var_23 = var_21 + 2;
        }
        if (var_22 == 0x5d) {
          var_22 = var_23[1];
          var_23 = var_23 + 1;
        }
        var_14 = (type_8 *)0x5d;
        while (var_21 = var_23 + 1, var_22 != 0x5d) {
          if (var_22 == 0) goto LAB_0002a034;
          var_23 = var_21;
          var_22 = *var_21;
        }
        var_2 = (int)(char)var_23[1];
joined_r0x0002a188:
        if (var_2 == 0) goto LAB_0002a034;
      }
      var_14 = &DAT_c0000601;
      var_5 = var_2 - 0x21U & 0xff;
      var_24 = (type_8 *)(type_5)(var_5 < 0x20);
      if (var_24 != (type_8 *)0x0) {
        while ((int)((0xc0000601U >> (var_5 & 0x1f)) << 0x1f) < 0) {
          var_2 = (int)(char)var_21[1];
          if (var_2 != 0x28) goto LAB_0002a028;
          var_24 = (type_8 *)0x1;
          var_7 = (int *)((int)var_7 + 1);
          var_21 = var_21 + 1;
          var_5 = 7;
        }
        if (var_2 != 0x29) goto LAB_0002a198;
        if (var_7 != (int *)0x0) {
          var_2 = (int)(char)var_21[1];
          var_7 = (int *)((int)var_7 + -1);
LAB_0002a028:
          var_21 = var_21 + 1;
          goto joined_r0x0002a188;
        }
        if (1 < *(int *)(var_9 + -0x588) - 0x3fU) {
          *(type_8 **)(var_9 + -0x5cc) = var_21 + (1 - (int)unaff_s6);
        }
        if ((*(int *)(var_9 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {
          var_2 = -((*(int *)(var_9 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);
          var_28 = var_25 + var_2;
          puVar7 = (type_7 *)
                   (**(type_10 **)(var_12 + -0x7b7c))
                             (var_25 + var_2 + 0x1c,unaff_s6,(int)var_21 - (int)unaff_s6);
          var_43 = *(type_6 **)(var_9 + -0x5bc);
          var_12 = *(int *)(var_9 + -0x5d8);
          *puVar7 = 0;
          *(type_6 *)(var_25 + var_2 + 0x18) = 0;
          *var_43 = var_25 + var_2 + 0x18;
          var_11 = *(type_5 *)(var_9 + -0x5b8);
          if (var_11 != 0) {
            if (var_21[-1] == 0x29) {
              var_26 = (type_2 *)(*(int *)(var_9 + -0x588) + -0x21);
              if (var_26 < (type_8 *)0x20) {
                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                var_2 = (*(type_10 *)(*(int *)(*(int *)(var_12 + -0x7e24) + -0x76e0 + (int)var_26 * 4)
                                   + var_12))();
                return var_2;
              }
              (**(type_10 **)(var_12 + -0x7ce0))
                        (*(int *)(var_12 + -0x7e24) + -0x7898,*(int *)(var_12 + -0x7e24) + -0x78cc,
                         0x4ad,*(int *)(var_12 + -0x7e24) + -0x7570);
            }
            (**(type_10 **)(var_12 + -0x7ce0))
                      (*(int *)(var_12 + -0x7e24) + -0x78ac,*(int *)(var_12 + -0x7e24) + -0x78cc,0x455
                       ,*(int *)(var_12 + -0x7e24) + -0x7570);
          }
          var_24 = (type_8 *)0x454;
          var_19 = *(type_10 **)(var_12 + -0x7ce0);
          string_end = (type_2 *)(*(int *)(var_12 + -0x7e24) + -0x7570);
          var_14 = (type_8 *)(*(int *)(var_12 + -0x7e24) + -0x78cc);
          var_23 = (type_8 *)(*(int *)(var_12 + -0x7e24) + -0x78bc);
          (*var_19)();
          goto LAB_0002a608;
        }
        break;
      }
      if ((var_2 != 0x7c) || (var_7 != (int *)0x0)) {
LAB_0002a198:
        var_2 = (int)(char)var_21[1];
        var_21 = var_21 + 1;
        goto joined_r0x0002a188;
      }
      var_23 = *(type_8 **)(var_9 + -0x5cc);
      if (var_11 == 0) {
        var_23 = var_21 + (1 - (int)unaff_s6);
      }
      if (0x1f3b < ((type_5)(var_23 + 7) & 0xfffffffc) - 4) break;
      var_19 = *(type_10 **)(var_12 + -0x7b7c);
      var_24 = var_21 + -(int)unaff_s6;
      var_29 = var_21 + 1;
      var_27 = -(((type_5)(var_23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
      *(type_7 **)(var_9 + -0x5d0) = var_25 + var_27 + 0x18;
      var_28 = (type_7 *)(*var_19)(var_25 + var_27 + 0x1c);
      var_12 = *(int *)(var_9 + -0x5d8);
      var_44 = *(type_6 **)(var_9 + -0x5d0);
      var_2 = (int)(char)var_21[1];
      *var_28 = 0;
      var_43 = *(type_6 **)(var_9 + -0x5bc);
      *var_44 = 0;
      *(type_6 **)(var_9 + -0x5bc) = var_44;
      *var_43 = var_44;
      var_14 = unaff_s6;
      unaff_s6 = var_29;
      var_21 = var_29;
      var_28 = var_25 + var_27;
      var_25 = var_25 + var_27;
    } while (var_2 != 0);
  }
LAB_0002a034:
  var_23 = *(type_8 **)(var_9 + -0x5b4);
  var_19 = *(type_10 **)(var_12 + -0x7b8c);
  if (var_23 == (type_8 *)*var_42) {
    return -1;
  }
LAB_0002a608:
  pcVar35 = var_39;
  (*var_19)();
  var_30 = var_19 + 0x38ae0;
  var_43 = *(type_6 **)(var_19 + 0x30f7c);
  *(type_7 **)(var_28 + -8) = var_9 + -0x5f0;
  *(type_2 **)(var_28 + -0x1c) = var_26;
  *(type_10 **)(var_28 + -0x160) = var_30;
  *(type_10 **)(var_28 + -4) = pcVar35;
  *(type_8 **)(var_28 + -0xc) = var_21;
  *(type_8 **)(var_28 + -0x10) = unaff_s6;
  *(int **)(var_28 + -0x14) = var_7;
  *(type_8 **)(var_28 + -0x18) = var_6;
  *(type_6 **)(var_28 + -0x20) = var_42;
  *(type_5 *)(var_28 + -0x24) = var_11;
  *(type_8 **)(var_28 + -0x28) = var_20;
  *(type_6 **)(var_28 + -0x144) = var_43;
  *(type_8 **)(var_28 + -0x154) = var_23 + 1;
  var_29 = (type_8 *)(type_5)*var_23;
  *(type_6 *)(var_28 + -0x2c) = *var_43;
  var_2 = *(int *)(var_19 + 0x30cbc);
  var_21 = var_24;
  var_31 = var_14;
  if (var_29 != (type_8 *)0x0) {
    var_5 = *(type_5 *)(var_28 + 0x10);
    var_11 = var_5 & 2;
    var_20 = (type_8 *)(var_5 & 0x10);
    *(type_5 *)(var_28 + -0x140) = var_5 & 5;
    *(type_6 *)(var_28 + -0x148) = *(type_6 *)(var_19 + 0x30b08);
    *(int *)(var_28 + -0x14c) = var_2 + -0x7660;
    *(int *)(var_28 + -0x138) = *(int *)(var_19 + 0x30d80) + -0x60e0;
    *(int *)(var_28 + -0x13c) = *(int *)(var_19 + 0x30cbc) + -0x78dc;
    var_6 = var_23;
    unaff_s6 = (type_8 *)string_end;
    do {
      var_23 = var_29;
      if (var_20 != (type_8 *)0x0) {
        var_16 = (int *)(**(type_10 **)(var_30 + -0x7cdc))();
        var_30 = *(type_10 **)(var_28 + -0x160);
        var_23 = (type_8 *)(type_5)*(type_8 *)(*var_16 + (int)var_29 * 4 + 3);
      }
      if (((type_5)(var_23 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        var_2 = (*(var_30 +
                   *(int *)(*(int *)(var_28 + -0x14c) + ((type_5)(var_23 + -0x21) & 0xff) * 4)))();
        return var_2;
      }
      var_5 = 1;
      var_29 = var_23;
      if (var_31 == var_24) goto LAB_0002a8e4;
      var_29 = (type_8 *)(type_5)*var_31;
      if (var_20 != (type_8 *)0x0) {
        var_16 = (int *)(**(type_10 **)(var_30 + -0x7cdc))();
        var_30 = *(type_10 **)(var_28 + -0x160);
        var_29 = *(type_8 **)(*var_16 + (int)var_29 * 4);
      }
      var_5 = 1;
      unaff_s6 = var_23;
      if (var_29 != var_23) goto LAB_0002a8e4;
      var_6 = *(type_8 **)(var_28 + -0x154);
      unaff_s6 = (type_8 *)0x0;
      var_29 = (type_8 *)(type_5)*var_6;
      var_31 = var_31 + 1;
      *(type_8 **)(var_28 + -0x154) = var_6 + 1;
    } while (var_29 != (type_8 *)0x0);
  }
  var_5 = 0;
  if (var_31 != var_24) {
    var_6 = (type_8 *)(*(type_5 *)(var_28 + 0x10) & 8);
    if (var_6 == (type_8 *)0x0) {
      var_5 = 1;
    }
    else {
      var_5 = (type_5)(*var_31 != 0x2f);
    }
  }
LAB_0002a8e4:
  var_12 = *(int *)(var_28 + -0x2c);
  if (var_12 == **(int **)(var_28 + -0x144)) {
    return var_5;
  }
  var_19 = *(type_10 **)(var_30 + -0x7b8c);
  pcVar35 = rpl_fnmatch;
  (*var_19)();
  var_30 = *(type_10 **)(var_19 + 0x302e0);
  *(type_5 *)(var_28 + -0x19c) = var_11;
  var_16 = *(int **)(var_19 + 0x30338);
  *(type_8 **)(var_28 + -0x180) = var_31;
  *(type_8 **)(var_28 + -0x198) = var_29;
  *(type_10 **)(var_28 + -0x1c8) = var_19 + 0x37e9c;
  *(type_10 **)(var_28 + -0x17c) = pcVar35;
  *(int *)(var_28 + -0x184) = var_2;
  *(type_8 **)(var_28 + -0x188) = unaff_s6;
  *(int **)(var_28 + -0x18c) = var_7;
  *(type_8 **)(var_28 + -400) = var_6;
  *(type_8 **)(var_28 + -0x194) = var_24;
  *(type_8 **)(var_28 + -0x1a0) = var_20;
  *(int *)(var_28 + -0x1b4) = var_12;
  *(type_8 **)(var_28 + -0x1b8) = var_14;
  *(int *)(var_28 + -0x1a4) = *var_16;
  var_2 = (*var_30)();
  var_12 = *(int *)(var_28 + -0x1c8);
  if (var_2 != 1) {
    var_9 = var_28 + -0x1ac;
    var_19 = *(type_10 **)(var_12 + -0x7b28);
    var_25 = var_28 + -0x1b4;
    *(type_6 *)(var_28 + -0x1ac) = 0;
    *(type_6 *)(var_28 + -0x1a8) = 0;
    var_2 = (*var_19)(0,var_25,0,var_9);
    var_5 = var_2 + 1;
    var_12 = *(int *)(var_28 + -0x1c8);
    if (var_5 != 0) {
      var_2 = (**(type_10 **)(var_12 + -0x7b68))(var_9);
      uVar5 = 0x129;
      var_12 = *(int *)(var_28 + -0x1c8);
      if (var_2 == 0) goto LAB_0002b570;
      piVar27 = (int *)(var_28 + -0x1b8);
      var_37 = piVar27;
      var_2 = (**(type_10 **)(var_12 + -0x7b28))(0,piVar27,0,var_9);
      var_27 = var_2 + 1;
      var_12 = *(int *)(var_28 + -0x1c8);
      if (var_27 != 0) {
        var_32 = (**(type_10 **)(var_12 + -0x7b68))(var_9);
        var_12 = *(int *)(var_28 + -0x1c8);
        if (var_32 == 0) {
          uVar5 = 0x12d;
          goto LAB_0002b570;
        }
        var_33 = var_5 + var_27;
        if ((var_5 <= var_33) && (var_33 < 0x40000000)) {
          if (var_33 < 2000) {
            var_32 = -(var_33 * 4 + 7 & 0xfffffff8);
            var_34 = (type_2 *)(var_28 + var_32 + -0x1c8);
            var_37 = var_34 + var_5;
            (**(type_10 **)(var_12 + -0x7b28))(var_34,var_25,var_5,var_9);
            var_35 = (**(type_10 **)(*(int *)(var_28 + -0x1c8) + -0x7b68))(var_9);
            var_12 = *(int *)(var_28 + -0x1c8);
            if (var_35 != 0) {
              (**(type_10 **)(var_12 + -0x7b28))(var_37,piVar27,var_27,var_9);
              *(type_8 **)(var_28 + var_32 + -0x1d0) = var_21;
              var_2 = var_36(var_34,var_37,var_37 + var_2,
                                         var_38((type_5)((int)var_21 << 0x1d) >> 0x1f,0),
                                         *(int *)(var_28 + var_32 + -0x1d0));
              var_12 = *(int *)(var_28 + -0x1c8);
              goto LAB_0002b300;
            }
          }
          else {
            var_32 = (**(type_10 **)(var_12 + -0x7be8))();
            var_12 = *(int *)(var_28 + -0x1c8);
            if (var_32 == 0) goto LAB_0002b490;
            var_19 = *(type_10 **)(var_12 + -0x7b28);
            *(int *)(var_28 + -0x1bc) = var_32;
            var_37 = (int *)(var_32 + var_5 * 4);
            (*var_19)(var_32,var_25,var_5,var_9);
            var_32 = (**(type_10 **)(*(int *)(var_28 + -0x1c8) + -0x7b68))(var_9);
            var_12 = *(int *)(var_28 + -0x1c8);
            if (var_32 != 0) {
              var_19 = *(type_10 **)(var_12 + -0x7b28);
              *(type_6 *)(var_28 + -0x1bc) = *(type_6 *)(var_28 + -0x1bc);
              (*var_19)(var_37,piVar27,var_27,var_9);
              *(type_8 **)(var_28 + -0x1d0) = var_21;
              var_2 = var_36(*(type_2 **)(var_28 + -0x1bc),var_37,var_37 + var_2
                                         ,var_38((type_5)((int)var_21 << 0x1d) >> 0x1f,0),
                                         *(int *)(var_28 + -0x1d0));
              (**(type_10 **)(*(int *)(var_28 + -0x1c8) + -0x7b54))(*(type_6 *)(var_28 + -0x1bc));
              var_12 = *(int *)(var_28 + -0x1c8);
              goto LAB_0002b300;
            }
          }
          uVar5 = 0x147;
LAB_0002b570:
          var_2 = (**(type_10 **)(var_12 + -0x7ce0))
                             (*(int *)(var_12 + -0x7e24) + -0x7864,
                              *(int *)(var_12 + -0x7e24) + -0x7870,uVar5,
                              *(int *)(var_12 + -0x7e24) + -0x7558);
          return var_2;
        }
LAB_0002b490:
        var_2 = -1;
        var_42 = (type_6 *)(**(type_10 **)(var_12 + -0x7c3c))();
        var_12 = *(int *)(var_28 + -0x1c8);
        *var_42 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  var_37 = *(int **)(var_28 + -0x1b8);
  var_2 = (**(type_10 **)(var_12 + -0x7c0c))(var_37);
  *(type_8 **)(var_28 + -0x1d0) = var_21;
  var_2 = var_39(*(char **)(var_28 + -0x1b4),(char *)var_37,
                            (char *)((int)var_37 + var_2),
                            var_38((type_5)((int)var_21 << 0x1d) >> 0x1f,0),*(int *)(var_28 + -0x1d0))
  ;
  var_12 = *(int *)(var_28 + -0x1c8);
LAB_0002b300:
  var_27 = *(int *)(var_28 + -0x1a4);
  if (var_27 != *var_16) {
    (**(type_10 **)(var_12 + -0x7b8c))();
    var_2 = var_37[8];
    var_12 = *var_37;
    var_5 = (type_5)(var_2 < var_12);
    var_33 = var_37[7];
    if ((var_5 != 0) && (var_5 = (type_5)((int)var_33 < var_2), var_5 != 0)) {
      var_35 = var_12 - var_2;
      var_40 = var_33;
      var_32 = var_12;
      do {
        var_41 = var_2 - var_40;
        var_5 = var_35 + var_40;
        if (var_41 < var_35) {
          var_32 = var_32 - var_41;
          var_42 = (type_6 *)(var_27 + var_40 * 4);
          var_43 = (type_6 *)(var_27 + var_32 * 4);
          do {
            var_44 = var_42 + 1;
            uVar5 = *var_42;
            *var_42 = *var_43;
            *var_43 = uVar5;
            var_5 = var_40;
            var_42 = var_44;
            var_43 = var_43 + 1;
          } while ((type_6 *)(var_27 + (var_41 + var_40) * 4) != var_44);
        }
        else {
          var_42 = (type_6 *)(var_27 + var_40 * 4);
          var_43 = (type_6 *)(var_27 + var_2 * 4);
          do {
            var_44 = var_42 + 1;
            uVar5 = *var_42;
            *var_42 = *var_43;
            *var_43 = uVar5;
            var_42 = var_44;
            var_43 = var_43 + 1;
          } while (var_44 != (type_6 *)(var_27 + var_5 * 4));
        }
      } while ((var_2 < var_32) && (var_35 = var_32 - var_2, var_40 = var_5, (int)var_5 < var_2));
    }
    var_37[8] = var_12;
    var_37[7] = (var_12 - var_2) + var_33;
    return var_5;
  }
  return var_2;
}


(translation_unit (function_definition type: (type_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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (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: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (number_literal))) body: (compound_statement (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: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) (identifier) (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (return_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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (labeled_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)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal))))) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))))))) (labeled_statement label: (statement_identifier) (expression_statement (MISSING ";")))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (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))))) right: (identifier))) (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (identifier) right: (number_literal))))) 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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal))))) right: (binary_expression left: (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: (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (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: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) 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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))))))) (labeled_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: (identifier) right: (pointer_expression argument: (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: (identifier) right: (number_literal)))))))) consequence: (compound_statement (return_statement (identifier)))) (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: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (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: (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))))) right: (identifier))) (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: (identifier) right: (number_literal))))) right: (identifier))) (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: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (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: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (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)) 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: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (labeled_statement label: (statement_identifier) (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: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (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)) right: (number_literal))) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (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)) right: (number_literal))) 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: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (number_literal) (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)))))) (return_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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (number_literal) (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)))))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (number_literal) (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)))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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)) right: (binary_expression left: (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))) right: (number_literal)))))) right: (identifier)))))) arguments: (argument_list)))) (return_statement (identifier)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))) (goto_statement label: (statement_identifier)))) (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))) consequence: (break_statement)) (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: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (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: (pointer_expression argument: (identifier)) 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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (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: (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (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: (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))))) right: (binary_expression left: (identifier) 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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) 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: (identifier) right: (number_literal))))) right: (pointer_expression argument: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal))))) right: (binary_expression left: (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: (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (parenthesized_expression (binary_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: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (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: (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))))))) (labeled_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: (identifier) right: (pointer_expression argument: (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: (identifier) right: (number_literal)))))))) consequence: (compound_statement (return_statement (identifier)))) (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: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) 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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) 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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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)))) (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: (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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (number_literal) (identifier) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (number_literal) (identifier) (number_literal) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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))))))) arguments: (argument_list (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: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (identifier) (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))))))) condition: (parenthesized_expression (true)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (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: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (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))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (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: (identifier) right: (number_literal))) consequence: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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))))))) arguments: (argument_list (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: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (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: (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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))))))) arguments: (argument_list (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: (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))))))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (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))))))) (labeled_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: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) right: (identifier))))) alternative: (else_clause (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (return_statement (identifier)))) (return_statement (identifier)))))

uint MASKED(int param_1,byte *param_2,byte *param_3,byte *param_4)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  byte bVar8;
  undefined4 *puVar6;
  uint uVar7;
  int iVar9;
  int iVar10;
  byte *pbVar11;
  byte *pbVar12;
  byte *pbVar13;
  int iVar14;
  undefined4 *puVar15;
  int iVar16;
  int iVar17;
  uint uVar18;
  int *piVar19;
  undefined1 *puVar20;
  uint unaff_s1;
  undefined *unaff_s2;
  byte *pbVar21;
  int *unaff_s4;
  int *piVar22;
  int *unaff_s5;
  undefined1 *puVar23;
  undefined1 *puVar24;
  byte *unaff_s6;
  int *piVar25;
  byte *pbVar26;
  byte *pbVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  byte *pbVar33;
  byte *pbVar34;
  code *pcVar35;
  code *pcVar36;
  undefined1 auStack_68 [24];
  uint local_44;
  int *local_34;
  int local_30;
  int *local_2c;
  
  puVar1 = PTR___stack_chk_guard_0005b58c;
  puVar20 = auStack_68;
  pbVar26 = param_2 + 4;
  local_30 = 0;
  local_2c = *(int **)PTR___stack_chk_guard_0005b58c;
  pbVar12 = param_2;
  local_44 = (*(code *)PTR_wcslen_0005b4a8)(param_2);
  puVar28 = PTR_DAT_0005b118;
  iVar10 = *(int *)(param_2 + 4);
  if (iVar10 != 0) {
    unaff_s5 = (int *)0x0;
    local_34 = &local_30;
    unaff_s2 = PTR_DAT_0005b2cc + -0x78dc;
    unaff_s1 = (uint)(param_1 - 0x3fU < 2);
    puVar20 = auStack_68;
    unaff_s6 = pbVar26;
    do {
      while (unaff_s4 = (int *)puVar28, iVar10 != 0x5b) {
        pbVar12 = &DAT_c0000601;
        uVar2 = iVar10 - 0x21;
        param_3 = (byte *)(uint)(uVar2 < 0x20);
        if (param_3 != (byte *)0x0) {
          while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {
            iVar10 = *(int *)(pbVar26 + 4);
            if (iVar10 != 0x28) goto LAB_00028d14;
            param_3 = (byte *)0x1;
            unaff_s5 = (int *)((int)unaff_s5 + 1);
            pbVar26 = pbVar26 + 4;
            uVar2 = 7;
          }
          if (iVar10 != 0x29) goto LAB_00028e9c;
          if (unaff_s5 != (int *)0x0) {
            iVar10 = *(int *)(pbVar26 + 4);
            unaff_s5 = (int *)((int)unaff_s5 + -1);
LAB_00028d14:
            pbVar26 = pbVar26 + 4;
            goto joined_r0x00028e80;
          }
          if (1 < param_1 - 0x3fU) {
            local_44 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;
          }
          if ((local_44 < 0x40000000) && (local_44 * 4 < 0x1f3c)) {
            iVar10 = -(local_44 * 4 + 0xb & 0xfffffff8);
            puVar3 = (undefined4 *)
                     (*(code *)PTR_wmempcpy_0005b4a4)
                               (puVar20 + iVar10 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6 >> 2);
            *puVar3 = 0;
            *(undefined4 *)(puVar20 + iVar10 + 0x18) = 0;
            *local_34 = (int)(puVar20 + iVar10 + 0x18);
            if (local_30 == 0) {
              uVar2 = (*(code *)PTR___assert_fail_0005b410)
                                (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,
                                 PTR_DAT_0005b2cc + -0x7564);
              return uVar2;
            }
            if (*(int *)(pbVar26 + -4) != 0x29) {
              uVar2 = (*(code *)PTR___assert_fail_0005b410)
                                (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,
                                 PTR_DAT_0005b2cc + -0x7564);
              return uVar2;
            }
            if (0x1f < param_1 - 0x21U) {
              uVar2 = (*(code *)PTR___assert_fail_0005b410)
                                (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,
                                 PTR_DAT_0005b2cc + -0x7564);
              return uVar2;
            }
                    /* WARNING: Could not emulate address calculation at 0x00028f94 */
                    /* WARNING: Treating indirect jump as call */
            uVar2 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc + (param_1 - 0x21U) * 4 + -0x7850)
                              ))();
            return uVar2;
          }
          goto LAB_00028d20;
        }
        if ((iVar10 == 0x7c) && (unaff_s5 == (int *)0x0)) {
          uVar2 = local_44;
          if (unaff_s1 == 0) {
            uVar2 = ((int)pbVar26 - (int)unaff_s6 >> 2) + 1;
          }
          pbVar12 = (byte *)0x40000000;
          if ((uVar2 < 0x40000000) && (uVar2 * 4 < 0x1f3c)) {
            param_3 = (byte *)((int)pbVar26 - (int)unaff_s6 >> 2);
            iVar4 = -(uVar2 * 4 + 0xb & 0xfffffff8);
            pbVar33 = pbVar26 + 4;
            piVar22 = (int *)(puVar20 + iVar4 + 0x18);
            puVar3 = (undefined4 *)(*(code *)PTR_wmempcpy_0005b4a4)(puVar20 + iVar4 + 0x1c);
            *puVar3 = 0;
            iVar10 = *(int *)(pbVar26 + 4);
            *piVar22 = 0;
            *local_34 = (int)piVar22;
            pbVar12 = unaff_s6;
            pbVar26 = pbVar33;
            local_34 = piVar22;
            puVar20 = puVar20 + iVar4;
            unaff_s6 = pbVar33;
            goto joined_r0x00028e80;
          }
          goto LAB_00028d20;
        }
LAB_00028e9c:
        iVar10 = *(int *)(pbVar26 + 4);
        pbVar26 = pbVar26 + 4;
        if (iVar10 == 0) goto LAB_00028d20;
      }
      if (*(int *)(puVar28 + -0x4730) == 0) {
        iVar10 = (*(code *)PTR_getenv_0005b510)(unaff_s2);
        uVar5 = 0xffffffff;
        if (iVar10 != 0) {
          uVar5 = 1;
        }
        *(undefined4 *)(puVar28 + -0x4730) = uVar5;
      }
      iVar10 = *(int *)(pbVar26 + 4);
      pbVar33 = pbVar26 + 4;
      if ((iVar10 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (iVar10 == 0x5e)))) {
        iVar10 = *(int *)(pbVar26 + 8);
        pbVar33 = pbVar26 + 8;
      }
      if (iVar10 == 0x5d) {
        iVar10 = *(int *)(pbVar33 + 4);
        pbVar33 = pbVar33 + 4;
      }
      pbVar12 = (byte *)0x5d;
      while (pbVar26 = pbVar33 + 4, iVar10 != 0x5d) {
        if (iVar10 == 0) goto LAB_00028d20;
        pbVar33 = pbVar26;
        iVar10 = *(int *)pbVar26;
      }
      iVar10 = *(int *)(pbVar33 + 4);
joined_r0x00028e80:
    } while (iVar10 != 0);
  }
LAB_00028d20:
  if (local_2c == *(int **)puVar1) {
    return 0xffffffff;
  }
  pcVar35 = FUN_00029320;
  piVar22 = local_2c;
  puVar28 = PTR___stack_chk_fail_0005b564;
  (*(code *)PTR___stack_chk_fail_0005b564)();
  puVar30 = puVar28 + 0x39dd0;
  puVar3 = *(undefined4 **)(puVar28 + 0x3226c);
  *(byte **)(puVar20 + -0xc) = pbVar26;
  *(undefined4 **)(puVar20 + -0x558) = puVar3;
  *(undefined **)(puVar20 + -0x570) = puVar30;
  *(undefined1 **)(puVar20 + -8) = auStack_68;
  *(undefined **)(puVar20 + -0x1c) = puVar1;
  *(code **)(puVar20 + -4) = pcVar35;
  *(byte **)(puVar20 + -0x10) = unaff_s6;
  *(int **)(puVar20 + -0x14) = unaff_s5;
  *(int **)(puVar20 + -0x18) = unaff_s4;
  *(undefined **)(puVar20 + -0x20) = unaff_s2;
  *(uint *)(puVar20 + -0x24) = unaff_s1;
  *(byte **)(puVar20 + -0x28) = param_2;
  iVar10 = *piVar22;
  *(undefined4 *)(puVar20 + -0x2c) = *puVar3;
  uVar2 = *(uint *)(puVar20 + 0x10);
  pbVar26 = param_3;
  pbVar33 = pbVar12;
  if (iVar10 != 0) {
    unaff_s1 = uVar2 & 2;
    param_2 = (byte *)(uVar2 & 0x10);
    *(uint *)(puVar20 + -0x554) = uVar2 & 5;
    *(undefined4 *)(puVar20 + -0x55c) = *(undefined4 *)(puVar28 + 0x31df8);
    *(int *)(puVar20 + -0x560) = *(int *)(puVar28 + 0x31fac) + -0x77d0;
    *(int *)(puVar20 + -0x544) = *(int *)(puVar28 + 0x32070) + -0x73ec;
    *(int *)(puVar20 + -0x54c) = *(int *)(puVar28 + 0x31fac) + -0x78dc;
    unaff_s5 = piVar22 + 1;
    unaff_s6 = param_4;
    do {
      unaff_s4 = unaff_s5;
      if (param_2 != (byte *)0x0) {
        iVar10 = (**(code **)(puVar30 + -0x7b70))(iVar10);
        puVar30 = *(undefined **)(puVar20 + -0x570);
      }
      if (iVar10 - 0x21U < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x00029404. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar2 = (*(code *)(puVar30 + *(int *)(*(int *)(puVar20 + -0x560) + (iVar10 - 0x21U) * 4)))()
        ;
        return uVar2;
      }
      unaff_s5 = unaff_s4;
      if (param_3 == pbVar33) goto LAB_000295c4;
      iVar4 = *(int *)pbVar33;
      if (param_2 != (byte *)0x0) {
        iVar4 = (**(code **)(puVar30 + -0x7b70))(iVar4);
        puVar30 = *(undefined **)(puVar20 + -0x570);
      }
      uVar2 = 1;
      if (iVar4 != iVar10) goto LAB_000295c8;
      unaff_s6 = (byte *)0x0;
      iVar10 = *unaff_s4;
      pbVar33 = pbVar33 + 4;
      unaff_s5 = unaff_s4 + 1;
      piVar22 = unaff_s4;
    } while (iVar10 != 0);
  }
  uVar2 = 0;
  piVar22 = unaff_s4;
  if (pbVar33 != param_3) {
    piVar22 = (int *)(*(uint *)(puVar20 + 0x10) & 8);
    if (piVar22 == (int *)0x0) {
LAB_000295c4:
      uVar2 = 1;
    }
    else {
      uVar2 = (uint)(*(int *)pbVar33 != 0x2f);
    }
  }
LAB_000295c8:
  iVar4 = *(int *)(puVar20 + -0x2c);
  if (iVar4 == **(int **)(puVar20 + -0x558)) {
    return uVar2;
  }
  pcVar35 = *(code **)(puVar30 + -0x7b8c);
  pcVar36 = FUN_00029f20;
  (*pcVar35)();
  puVar31 = puVar20 + -0x5f0;
  pcVar29 = *(code **)(pcVar35 + 0x315c4);
  *(byte **)(puVar20 + -0x590) = pbVar33;
  *(undefined **)(puVar20 + -0x5a8) = unaff_s2;
  puVar3 = *(undefined4 **)(pcVar35 + 0x3166c);
  *(byte **)(puVar20 + -0x5b0) = param_2;
  *(int *)(puVar20 + -0x594) = iVar10;
  pbVar27 = pbVar12 + 1;
  *(uint *)(puVar20 + -0x5c0) = (uint)(byte)puVar20[-0x575];
  *(int **)(puVar20 + -0x5a0) = piVar22;
  *(code **)(puVar20 + -0x5d8) = pcVar35 + 0x391d0;
  *(int *)(puVar20 + -0x588) = iVar4;
  *(code **)(puVar20 + -0x58c) = pcVar36;
  *(byte **)(puVar20 + -0x598) = unaff_s6;
  *(int **)(puVar20 + -0x59c) = unaff_s5;
  *(byte **)(puVar20 + -0x5a4) = param_3;
  *(uint *)(puVar20 + -0x5ac) = unaff_s1;
  *(byte **)(puVar20 + -0x5c4) = param_4;
  *(undefined4 *)(puVar20 + -0x5b8) = 0;
  *(undefined4 *)(puVar20 + -0x5b4) = *puVar3;
  pbVar33 = pbVar12;
  pbVar13 = pbVar26;
  uVar5 = (*pcVar29)(pbVar12);
  iVar10 = (int)(char)pbVar12[1];
  iVar4 = *(int *)(puVar20 + -0x5d8);
  *(undefined4 *)(puVar20 + -0x5cc) = uVar5;
  if (iVar10 != 0) {
    unaff_s5 = (int *)0x0;
    param_3 = *(byte **)(iVar4 + -0x7fd8);
    unaff_s1 = (uint)(*(int *)(puVar20 + -0x588) - 0x3fU < 2);
    *(undefined1 **)(puVar20 + -0x5bc) = puVar20 + -0x5b8;
    *(int *)(puVar20 + -0x5c8) = *(int *)(iVar4 + -0x7e24) + -0x78dc;
    puVar23 = puVar20 + -0x5f0;
    unaff_s6 = pbVar27;
    do {
      while (puVar31 = puVar23, iVar10 == 0x5b) {
        if (*(int *)(param_3 + -0x4730) == 0) {
          iVar10 = (**(code **)(iVar4 + -0x7be0))(*(undefined4 *)(puVar20 + -0x5c8));
          uVar5 = 0xffffffff;
          iVar4 = *(int *)(puVar20 + -0x5d8);
          if (iVar10 != 0) {
            uVar5 = 1;
          }
          *(undefined4 *)(param_3 + -0x4730) = uVar5;
        }
        bVar8 = pbVar27[1];
        pbVar11 = pbVar27 + 1;
        if ((bVar8 == 0x21) || ((*(int *)(param_3 + -0x4730) < 0 && (bVar8 == 0x5e)))) {
          bVar8 = pbVar27[2];
          pbVar11 = pbVar27 + 2;
        }
        if (bVar8 == 0x5d) {
          bVar8 = pbVar11[1];
          pbVar11 = pbVar11 + 1;
        }
        pbVar33 = (byte *)0x5d;
        while (pbVar27 = pbVar11 + 1, bVar8 != 0x5d) {
          if (bVar8 == 0) goto LAB_0002a034;
          pbVar11 = pbVar27;
          bVar8 = *pbVar27;
        }
        iVar10 = (int)(char)pbVar11[1];
joined_r0x0002a188:
        puVar23 = puVar31;
        if (iVar10 == 0) goto LAB_0002a034;
      }
      pbVar33 = &DAT_c0000601;
      uVar2 = iVar10 - 0x21U & 0xff;
      pbVar13 = (byte *)(uint)(uVar2 < 0x20);
      if (pbVar13 != (byte *)0x0) {
        while ((int)((0xc0000601U >> (uVar2 & 0x1f)) << 0x1f) < 0) {
          iVar10 = (int)(char)pbVar27[1];
          if (iVar10 != 0x28) goto LAB_0002a028;
          pbVar13 = (byte *)0x1;
          unaff_s5 = (int *)((int)unaff_s5 + 1);
          pbVar27 = pbVar27 + 1;
          uVar2 = 7;
        }
        if (iVar10 != 0x29) goto LAB_0002a198;
        if (unaff_s5 != (int *)0x0) {
          iVar10 = (int)(char)pbVar27[1];
          unaff_s5 = (int *)((int)unaff_s5 + -1);
LAB_0002a028:
          pbVar27 = pbVar27 + 1;
          goto joined_r0x0002a188;
        }
        if (1 < *(int *)(puVar20 + -0x588) - 0x3fU) {
          *(byte **)(puVar20 + -0x5cc) = pbVar27 + (1 - (int)unaff_s6);
        }
        if ((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) - 4 < 0x1f3c) {
          iVar10 = -((*(int *)(puVar20 + -0x5cc) + 7U & 0xfffffffc) + 7 & 0xfffffff8);
          puVar23 = (undefined1 *)
                    (**(code **)(iVar4 + -0x7b7c))
                              (puVar31 + iVar10 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);
          puVar3 = *(undefined4 **)(puVar20 + -0x5bc);
          iVar4 = *(int *)(puVar20 + -0x5d8);
          *puVar23 = 0;
          *(undefined4 *)(puVar31 + iVar10 + 0x18) = 0;
          *puVar3 = puVar31 + iVar10 + 0x18;
          if (*(int *)(puVar20 + -0x5b8) == 0) {
            uVar2 = (**(code **)(iVar4 + -0x7ce0))
                              (*(int *)(iVar4 + -0x7e24) + -0x78bc,
                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x454,
                               *(int *)(iVar4 + -0x7e24) + -0x7570);
            return uVar2;
          }
          if (pbVar27[-1] != 0x29) {
            uVar2 = (**(code **)(iVar4 + -0x7ce0))
                              (*(int *)(iVar4 + -0x7e24) + -0x78ac,
                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x455,
                               *(int *)(iVar4 + -0x7e24) + -0x7570);
            return uVar2;
          }
          if (0x1f < *(int *)(puVar20 + -0x588) - 0x21U) {
            uVar2 = (**(code **)(iVar4 + -0x7ce0))
                              (*(int *)(iVar4 + -0x7e24) + -0x7898,
                               *(int *)(iVar4 + -0x7e24) + -0x78cc,0x4ad,
                               *(int *)(iVar4 + -0x7e24) + -0x7570);
            return uVar2;
          }
                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          uVar2 = (*(code *)(*(int *)(*(int *)(iVar4 + -0x7e24) + -0x76e0 +
                                     (*(int *)(puVar20 + -0x588) - 0x21U) * 4) + iVar4))();
          return uVar2;
        }
        break;
      }
      if ((iVar10 != 0x7c) || (unaff_s5 != (int *)0x0)) {
LAB_0002a198:
        iVar10 = (int)(char)pbVar27[1];
        pbVar27 = pbVar27 + 1;
        goto joined_r0x0002a188;
      }
      pbVar11 = *(byte **)(puVar20 + -0x5cc);
      if (unaff_s1 == 0) {
        pbVar11 = pbVar27 + (1 - (int)unaff_s6);
      }
      if (0x1f3b < ((uint)(pbVar11 + 7) & 0xfffffffc) - 4) break;
      pcVar35 = *(code **)(iVar4 + -0x7b7c);
      pbVar13 = pbVar27 + -(int)unaff_s6;
      pbVar21 = pbVar27 + 1;
      iVar17 = -(((uint)(pbVar11 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
      puVar32 = puVar31 + iVar17;
      *(undefined1 **)(puVar20 + -0x5d0) = puVar31 + iVar17 + 0x18;
      puVar23 = (undefined1 *)(*pcVar35)(puVar31 + iVar17 + 0x1c);
      iVar4 = *(int *)(puVar20 + -0x5d8);
      puVar15 = *(undefined4 **)(puVar20 + -0x5d0);
      iVar10 = (int)(char)pbVar27[1];
      *puVar23 = 0;
      puVar6 = *(undefined4 **)(puVar20 + -0x5bc);
      *puVar15 = 0;
      *(undefined4 **)(puVar20 + -0x5bc) = puVar15;
      *puVar6 = puVar15;
      pbVar33 = unaff_s6;
      unaff_s6 = pbVar21;
      pbVar27 = pbVar21;
      puVar31 = puVar31 + iVar17;
      puVar23 = puVar32;
    } while (iVar10 != 0);
  }
LAB_0002a034:
  pbVar11 = *(byte **)(puVar20 + -0x5b4);
  pcVar35 = *(code **)(iVar4 + -0x7b8c);
  if (pbVar11 == (byte *)*puVar3) {
    return 0xffffffff;
  }
  pcVar36 = FUN_0002a610;
  (*pcVar35)();
  pcVar29 = pcVar35 + 0x38ae0;
  puVar6 = *(undefined4 **)(pcVar35 + 0x30f7c);
  *(undefined1 **)(puVar31 + -8) = puVar20 + -0x5f0;
  *(byte **)(puVar31 + -0x1c) = param_3;
  *(code **)(puVar31 + -0x160) = pcVar29;
  *(code **)(puVar31 + -4) = pcVar36;
  *(byte **)(puVar31 + -0xc) = pbVar27;
  *(byte **)(puVar31 + -0x10) = unaff_s6;
  *(int **)(puVar31 + -0x14) = unaff_s5;
  *(byte **)(puVar31 + -0x18) = pbVar26;
  *(undefined4 **)(puVar31 + -0x20) = puVar3;
  *(uint *)(puVar31 + -0x24) = unaff_s1;
  *(byte **)(puVar31 + -0x28) = pbVar12;
  *(undefined4 **)(puVar31 + -0x144) = puVar6;
  *(byte **)(puVar31 + -0x154) = pbVar11 + 1;
  pbVar21 = (byte *)(uint)*pbVar11;
  *(undefined4 *)(puVar31 + -0x2c) = *puVar6;
  iVar10 = *(int *)(pcVar35 + 0x30cbc);
  pbVar27 = pbVar13;
  pbVar34 = pbVar33;
  if (pbVar21 != (byte *)0x0) {
    uVar2 = *(uint *)(puVar31 + 0x10);
    unaff_s1 = uVar2 & 2;
    pbVar12 = (byte *)(uVar2 & 0x10);
    *(uint *)(puVar31 + -0x140) = uVar2 & 5;
    *(undefined4 *)(puVar31 + -0x148) = *(undefined4 *)(pcVar35 + 0x30b08);
    *(int *)(puVar31 + -0x14c) = iVar10 + -0x7660;
    *(int *)(puVar31 + -0x138) = *(int *)(pcVar35 + 0x30d80) + -0x60e0;
    *(int *)(puVar31 + -0x13c) = *(int *)(pcVar35 + 0x30cbc) + -0x78dc;
    pbVar26 = pbVar11;
    unaff_s6 = param_4;
    do {
      pbVar11 = pbVar21;
      if (pbVar12 != (byte *)0x0) {
        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();
        pcVar29 = *(code **)(puVar31 + -0x160);
        pbVar11 = (byte *)(uint)*(byte *)(*piVar22 + (int)pbVar21 * 4 + 3);
      }
      if (((uint)(pbVar11 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar2 = (*(pcVar29 +
                  *(int *)(*(int *)(puVar31 + -0x14c) + ((uint)(pbVar11 + -0x21) & 0xff) * 4)))();
        return uVar2;
      }
      uVar2 = 1;
      pbVar21 = pbVar11;
      if (pbVar34 == pbVar13) goto LAB_0002a8e4;
      pbVar21 = (byte *)(uint)*pbVar34;
      if (pbVar12 != (byte *)0x0) {
        piVar22 = (int *)(**(code **)(pcVar29 + -0x7cdc))();
        pcVar29 = *(code **)(puVar31 + -0x160);
        pbVar21 = *(byte **)(*piVar22 + (int)pbVar21 * 4);
      }
      uVar2 = 1;
      unaff_s6 = pbVar11;
      if (pbVar21 != pbVar11) goto LAB_0002a8e4;
      pbVar26 = *(byte **)(puVar31 + -0x154);
      unaff_s6 = (byte *)0x0;
      pbVar21 = (byte *)(uint)*pbVar26;
      pbVar34 = pbVar34 + 1;
      *(byte **)(puVar31 + -0x154) = pbVar26 + 1;
    } while (pbVar21 != (byte *)0x0);
  }
  uVar2 = 0;
  if (pbVar34 != pbVar13) {
    pbVar26 = (byte *)(*(uint *)(puVar31 + 0x10) & 8);
    if (pbVar26 == (byte *)0x0) {
      uVar2 = 1;
    }
    else {
      uVar2 = (uint)(*pbVar34 != 0x2f);
    }
  }
LAB_0002a8e4:
  iVar4 = *(int *)(puVar31 + -0x2c);
  if (iVar4 == **(int **)(puVar31 + -0x144)) {
    return uVar2;
  }
  pcVar35 = *(code **)(pcVar29 + -0x7b8c);
  pcVar36 = rpl_fnmatch;
  (*pcVar35)();
  pcVar29 = *(code **)(pcVar35 + 0x302e0);
  *(uint *)(puVar31 + -0x19c) = unaff_s1;
  piVar22 = *(int **)(pcVar35 + 0x30338);
  *(byte **)(puVar31 + -0x180) = pbVar34;
  *(byte **)(puVar31 + -0x198) = pbVar21;
  *(code **)(puVar31 + -0x1c8) = pcVar35 + 0x37e9c;
  *(code **)(puVar31 + -0x17c) = pcVar36;
  *(int *)(puVar31 + -0x184) = iVar10;
  *(byte **)(puVar31 + -0x188) = unaff_s6;
  *(int **)(puVar31 + -0x18c) = unaff_s5;
  *(byte **)(puVar31 + -400) = pbVar26;
  *(byte **)(puVar31 + -0x194) = pbVar13;
  *(byte **)(puVar31 + -0x1a0) = pbVar12;
  *(int *)(puVar31 + -0x1b4) = iVar4;
  *(byte **)(puVar31 + -0x1b8) = pbVar33;
  *(int *)(puVar31 + -0x1a4) = *piVar22;
  iVar10 = (*pcVar29)();
  iVar4 = *(int *)(puVar31 + -0x1c8);
  if (iVar10 != 1) {
    puVar20 = puVar31 + -0x1ac;
    pcVar35 = *(code **)(iVar4 + -0x7b28);
    puVar23 = puVar31 + -0x1b4;
    *(undefined4 *)(puVar31 + -0x1ac) = 0;
    *(undefined4 *)(puVar31 + -0x1a8) = 0;
    iVar10 = (*pcVar35)(0,puVar23,0,puVar20);
    uVar2 = iVar10 + 1;
    iVar4 = *(int *)(puVar31 + -0x1c8);
    if (uVar2 != 0) {
      iVar10 = (**(code **)(iVar4 + -0x7b68))(puVar20);
      uVar5 = 0x129;
      iVar4 = *(int *)(puVar31 + -0x1c8);
      if (iVar10 == 0) goto LAB_0002b570;
      piVar25 = (int *)(puVar31 + -0x1b8);
      piVar19 = piVar25;
      iVar10 = (**(code **)(iVar4 + -0x7b28))(0,piVar25,0,puVar20);
      iVar17 = iVar10 + 1;
      iVar4 = *(int *)(puVar31 + -0x1c8);
      if (iVar17 != 0) {
        iVar16 = (**(code **)(iVar4 + -0x7b68))(puVar20);
        iVar4 = *(int *)(puVar31 + -0x1c8);
        if (iVar16 == 0) {
          uVar5 = 0x12d;
          goto LAB_0002b570;
        }
        uVar18 = uVar2 + iVar17;
        if ((uVar2 <= uVar18) && (uVar18 < 0x40000000)) {
          if (uVar18 < 2000) {
            iVar16 = -(uVar18 * 4 + 7 & 0xfffffff8);
            puVar24 = puVar31 + iVar16 + -0x1c8;
            piVar19 = (int *)(puVar24 + uVar2 * 4);
            (**(code **)(iVar4 + -0x7b28))(puVar24,puVar23,uVar2,puVar20);
            iVar9 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);
            iVar4 = *(int *)(puVar31 + -0x1c8);
            if (iVar9 == 0) {
LAB_0002b590:
              do {
                uVar5 = 0x147;
LAB_0002b570:
                (**(code **)(iVar4 + -0x7ce0))
                          (*(int *)(iVar4 + -0x7e24) + -0x7864,*(int *)(iVar4 + -0x7e24) + -0x7870,
                           uVar5,*(int *)(iVar4 + -0x7e24) + -0x7558);
              } while( true );
            }
            (**(code **)(iVar4 + -0x7b28))(piVar19,piVar25,iVar17,puVar20);
            *(byte **)(puVar31 + iVar16 + -0x1d0) = pbVar27;
            uVar2 = FUN_00029320(puVar24,piVar19,piVar19 + iVar10,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            iVar10 = *(int *)(puVar31 + -0x1c8);
            goto LAB_0002b300;
          }
          iVar16 = (**(code **)(iVar4 + -0x7be8))();
          iVar4 = *(int *)(puVar31 + -0x1c8);
          if (iVar16 != 0) {
            pcVar35 = *(code **)(iVar4 + -0x7b28);
            *(int *)(puVar31 + -0x1bc) = iVar16;
            piVar19 = (int *)(iVar16 + uVar2 * 4);
            (*pcVar35)(iVar16,puVar23,uVar2,puVar20);
            iVar16 = (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b68))(puVar20);
            iVar4 = *(int *)(puVar31 + -0x1c8);
            if (iVar16 == 0) goto LAB_0002b590;
            pcVar35 = *(code **)(iVar4 + -0x7b28);
            *(undefined4 *)(puVar31 + -0x1bc) = *(undefined4 *)(puVar31 + -0x1bc);
            (*pcVar35)(piVar19,piVar25,iVar17,puVar20);
            *(byte **)(puVar31 + -0x1d0) = pbVar27;
            uVar2 = FUN_00029320(*(undefined4 *)(puVar31 + -0x1bc),piVar19,piVar19 + iVar10,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            (**(code **)(*(int *)(puVar31 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar31 + -0x1bc));
            iVar10 = *(int *)(puVar31 + -0x1c8);
            goto LAB_0002b300;
          }
        }
        uVar2 = 0xffffffff;
        puVar3 = (undefined4 *)(**(code **)(iVar4 + -0x7c3c))();
        iVar10 = *(int *)(puVar31 + -0x1c8);
        *puVar3 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  piVar19 = *(int **)(puVar31 + -0x1b8);
  iVar10 = (**(code **)(iVar4 + -0x7c0c))(piVar19);
  *(byte **)(puVar31 + -0x1d0) = pbVar27;
  uVar2 = FUN_0002a610(*(undefined4 *)(puVar31 + -0x1b4),piVar19,(int)piVar19 + iVar10,
                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);
  iVar10 = *(int *)(puVar31 + -0x1c8);
LAB_0002b300:
  iVar4 = *(int *)(puVar31 + -0x1a4);
  if (iVar4 != *piVar22) {
    (**(code **)(iVar10 + -0x7b8c))();
    iVar10 = piVar19[8];
    iVar17 = *piVar19;
    uVar2 = (uint)(iVar10 < iVar17);
    uVar18 = piVar19[7];
    if ((uVar2 != 0) && (uVar2 = (uint)((int)uVar18 < iVar10), uVar2 != 0)) {
      iVar9 = iVar17 - iVar10;
      uVar7 = uVar18;
      iVar16 = iVar17;
      do {
        iVar14 = iVar10 - uVar7;
        uVar2 = iVar9 + uVar7;
        if (iVar14 < iVar9) {
          iVar16 = iVar16 - iVar14;
          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);
          puVar6 = (undefined4 *)(iVar4 + iVar16 * 4);
          do {
            puVar15 = puVar3 + 1;
            uVar5 = *puVar3;
            *puVar3 = *puVar6;
            *puVar6 = uVar5;
            uVar2 = uVar7;
            puVar3 = puVar15;
            puVar6 = puVar6 + 1;
          } while ((undefined4 *)(iVar4 + (iVar14 + uVar7) * 4) != puVar15);
        }
        else {
          puVar3 = (undefined4 *)(iVar4 + uVar7 * 4);
          puVar6 = (undefined4 *)(iVar4 + iVar10 * 4);
          do {
            puVar15 = puVar3 + 1;
            uVar5 = *puVar3;
            *puVar3 = *puVar6;
            *puVar6 = uVar5;
            puVar3 = puVar15;
            puVar6 = puVar6 + 1;
          } while (puVar15 != (undefined4 *)(iVar4 + uVar2 * 4));
        }
      } while ((iVar10 < iVar16) && (iVar9 = iVar16 - iVar10, uVar7 = uVar2, (int)uVar2 < iVar10));
    }
    piVar19[8] = iVar17;
    piVar19[7] = (iVar17 - iVar10) + uVar18;
    return uVar2;
  }
  return uVar2;
}

