
int ext_match(int opt,char *pattern,char *string,char *string_end,_Bool no_leading_period,int flags)

{
  patternlist *ppVar1;
  patternlist *ppVar2;
  uint uVar3;
  undefined1 *puVar4;
  byte bVar8;
  undefined4 *puVar5;
  int *piVar6;
  uint uVar7;
  int iVar9;
  undefined4 *puVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  byte *pbVar14;
  byte *pbVar15;
  int iVar16;
  undefined4 uVar17;
  int iVar18;
  uint uVar19;
  int *string_00;
  undefined1 *puVar20;
  patternlist *unaff_s1;
  undefined4 *puVar21;
  byte *pbVar22;
  byte *pbVar23;
  uint unaff_s3;
  int unaff_s5;
  undefined1 *puVar24;
  wchar_t *pattern_00;
  byte *unaff_s6;
  int *piVar25;
  byte *pbVar26;
  int in_t9;
  code *pcVar27;
  code *pcVar28;
  byte *pbVar29;
  code *pcVar30;
  undefined1 auStack_68 [24];
  int local_50;
  patternlist *local_48;
  byte *local_44;
  int local_40;
  char *local_3c;
  uint local_38;
  patternlist *local_34;
  patternlist *list;
  byte *local_2c;
  
  local_50 = in_t9 + 0x391d0;
  puVar21 = *(undefined4 **)(in_t9 + 0x3166c);
  local_38 = (uint)no_leading_period;
  pbVar26 = (byte *)(pattern + 1);
  list = (patternlist *)0x0;
  local_2c = (byte *)*puVar21;
  pbVar14 = (byte *)pattern;
  pbVar15 = (byte *)string;
  local_3c = string_end;
  local_44 = (byte *)(**(code **)(in_t9 + 0x315c4))(pattern);
  iVar11 = (int)pattern[1];
  iVar12 = local_50;
  puVar4 = auStack_68;
  if (iVar11 != 0) {
    unaff_s5 = 0;
    unaff_s3 = *(uint *)(local_50 + -0x7fd8);
    local_34 = (patternlist *)&list;
    unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);
    local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;
    puVar20 = auStack_68;
    unaff_s6 = pbVar26;
LAB_00029fdc:
    do {
      puVar4 = puVar20;
      if (iVar11 == 0x5b) {
        if (*(int *)(unaff_s3 - 0x4730) == 0) {
          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);
          uVar17 = 0xffffffff;
          if (iVar11 != 0) {
            uVar17 = 1;
          }
          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;
          iVar12 = local_50;
        }
        bVar8 = pbVar26[1];
        pbVar23 = pbVar26 + 1;
        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {
          bVar8 = pbVar26[2];
          pbVar23 = pbVar26 + 2;
        }
        if (bVar8 == 0x5d) {
          bVar8 = pbVar23[1];
          pbVar23 = pbVar23 + 1;
        }
        pbVar14 = (byte *)0x5d;
        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {
          if (bVar8 == 0) goto LAB_0002a034;
          pbVar23 = pbVar26;
          bVar8 = *pbVar26;
        }
        iVar11 = (int)(char)pbVar23[1];
      }
      else {
        pbVar14 = &DAT_c0000601;
        uVar3 = iVar11 - 0x21U & 0xff;
        pbVar15 = (byte *)(uint)(uVar3 < 0x20);
        if (pbVar15 == (byte *)0x0) {
          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {
            pbVar23 = local_44;
            if (unaff_s1 == (patternlist *)0x0) {
              pbVar23 = pbVar26 + (1 - (int)unaff_s6);
            }
            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;
            pbVar15 = pbVar26 + -(int)unaff_s6;
            pbVar22 = pbVar26 + 1;
            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);
            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);
            ppVar2 = local_34;
            ppVar1 = local_48;
            iVar12 = local_50;
            iVar11 = (int)(char)pbVar26[1];
            *puVar4 = 0;
            local_48->next = (patternlist *)0x0;
            local_34 = ppVar1;
            ppVar2->next = ppVar1;
            pbVar14 = unaff_s6;
            unaff_s6 = pbVar22;
            pbVar26 = pbVar22;
            puVar4 = puVar20 + iVar13;
            puVar20 = puVar20 + iVar13;
            if (iVar11 == 0) break;
            goto LAB_00029fdc;
          }
LAB_0002a198:
          iVar11 = (int)(char)pbVar26[1];
        }
        else {
          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {
            iVar11 = (int)(char)pbVar26[1];
            if (iVar11 != 0x28) goto joined_r0x0002a19c;
            pbVar15 = (byte *)0x1;
            unaff_s5 = unaff_s5 + 1;
            pbVar26 = pbVar26 + 1;
            uVar3 = 7;
          }
          if (iVar11 != 0x29) goto LAB_0002a198;
          if (unaff_s5 == 0) {
            if (1 < opt - 0x3fU) {
              local_44 = pbVar26 + (1 - (int)unaff_s6);
            }
            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {
              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
              puVar4 = puVar20 + iVar11;
              puVar24 = (undefined1 *)
                        (**(code **)(iVar12 + -0x7b7c))
                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);
              ppVar1 = local_34;
              iVar12 = local_50;
              *puVar24 = 0;
              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;
              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);
              unaff_s1 = list;
              if (list != (patternlist *)0x0) {
                if (pbVar26[-1] == 0x29) {
                  unaff_s3 = opt - 0x21;
                  if (unaff_s3 < 0x20) {
                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */
                    /* WARNING: Treating indirect jump as call */
                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4
                                                ) + iVar12))();
                    return iVar11;
                  }
                  (**(code **)(iVar12 + -0x7ce0))
                            (*(int *)(iVar12 + -0x7e24) + -0x7898,
                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,
                             *(int *)(iVar12 + -0x7e24) + -0x7570);
                }
                (**(code **)(iVar12 + -0x7ce0))
                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc
                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);
              }
              pbVar15 = (byte *)0x454;
              pcVar27 = *(code **)(iVar12 + -0x7ce0);
              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);
              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);
              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);
              (*pcVar27)();
              goto LAB_0002a608;
            }
            break;
          }
          iVar11 = (int)(char)pbVar26[1];
          unaff_s5 = unaff_s5 + -1;
        }
joined_r0x0002a19c:
        pbVar26 = pbVar26 + 1;
      }
    } while (iVar11 != 0);
  }
LAB_0002a034:
  pcVar27 = *(code **)(iVar12 + -0x7b8c);
  pbVar23 = local_2c;
  if (local_2c == (byte *)*puVar21) {
    return -1;
  }
LAB_0002a608:
  pcVar30 = internal_fnmatch;
  (*pcVar27)();
  pcVar28 = pcVar27 + 0x38ae0;
  puVar5 = *(undefined4 **)(pcVar27 + 0x30f7c);
  *(undefined1 **)(puVar4 + -8) = auStack_68;
  *(uint *)(puVar4 + -0x1c) = unaff_s3;
  *(code **)(puVar4 + -0x160) = pcVar28;
  *(code **)(puVar4 + -4) = pcVar30;
  *(byte **)(puVar4 + -0xc) = pbVar26;
  *(byte **)(puVar4 + -0x10) = unaff_s6;
  *(int *)(puVar4 + -0x14) = unaff_s5;
  *(char **)(puVar4 + -0x18) = string;
  *(undefined4 **)(puVar4 + -0x20) = puVar21;
  *(patternlist **)(puVar4 + -0x24) = unaff_s1;
  *(char **)(puVar4 + -0x28) = pattern;
  *(undefined4 **)(puVar4 + -0x144) = puVar5;
  *(byte **)(puVar4 + -0x154) = pbVar23 + 1;
  pbVar22 = (byte *)(uint)*pbVar23;
  *(undefined4 *)(puVar4 + -0x2c) = *puVar5;
  iVar11 = *(int *)(pcVar27 + 0x30cbc);
  pbVar26 = pbVar15;
  pbVar29 = pbVar14;
  if (pbVar22 != (byte *)0x0) {
    uVar3 = *(uint *)(puVar4 + 0x10);
    unaff_s1 = (patternlist *)(uVar3 & 2);
    pattern = (char *)(uVar3 & 0x10);
    *(uint *)(puVar4 + -0x140) = uVar3 & 5;
    *(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);
    *(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;
    *(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;
    *(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;
    string = (char *)pbVar23;
    unaff_s6 = (byte *)string_end;
    do {
      pbVar23 = pbVar22;
      if (pattern != (char *)0x0) {
        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();
        pcVar28 = *(code **)(puVar4 + -0x160);
        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);
      }
      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar11 = (*(pcVar28 +
                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();
        return iVar11;
      }
      uVar3 = 1;
      pbVar22 = pbVar23;
      if (pbVar29 == pbVar15) goto LAB_0002a8e4;
      pbVar22 = (byte *)(uint)*pbVar29;
      if (pattern != (char *)0x0) {
        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();
        pcVar28 = *(code **)(puVar4 + -0x160);
        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);
      }
      uVar3 = 1;
      unaff_s6 = pbVar23;
      if (pbVar22 != pbVar23) goto LAB_0002a8e4;
      string = *(char **)(puVar4 + -0x154);
      unaff_s6 = (byte *)0x0;
      pbVar22 = (byte *)(uint)(byte)*string;
      pbVar29 = pbVar29 + 1;
      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;
    } while (pbVar22 != (byte *)0x0);
  }
  uVar3 = 0;
  if (pbVar29 != pbVar15) {
    string = (char *)(*(uint *)(puVar4 + 0x10) & 8);
    if ((byte *)string == (byte *)0x0) {
      uVar3 = 1;
    }
    else {
      uVar3 = (uint)(*pbVar29 != 0x2f);
    }
  }
LAB_0002a8e4:
  iVar12 = *(int *)(puVar4 + -0x2c);
  if (iVar12 == **(int **)(puVar4 + -0x144)) {
    return uVar3;
  }
  pcVar27 = *(code **)(pcVar28 + -0x7b8c);
  pcVar30 = rpl_fnmatch;
  (*pcVar27)();
  pcVar28 = *(code **)(pcVar27 + 0x302e0);
  *(patternlist **)(puVar4 + -0x19c) = unaff_s1;
  piVar6 = *(int **)(pcVar27 + 0x30338);
  *(byte **)(puVar4 + -0x180) = pbVar29;
  *(byte **)(puVar4 + -0x198) = pbVar22;
  *(code **)(puVar4 + -0x1c8) = pcVar27 + 0x37e9c;
  *(code **)(puVar4 + -0x17c) = pcVar30;
  *(int *)(puVar4 + -0x184) = iVar11;
  *(byte **)(puVar4 + -0x188) = unaff_s6;
  *(int *)(puVar4 + -0x18c) = unaff_s5;
  *(char **)(puVar4 + -400) = string;
  *(byte **)(puVar4 + -0x194) = pbVar15;
  *(char **)(puVar4 + -0x1a0) = pattern;
  *(int *)(puVar4 + -0x1b4) = iVar12;
  *(byte **)(puVar4 + -0x1b8) = pbVar14;
  *(int *)(puVar4 + -0x1a4) = *piVar6;
  iVar11 = (*pcVar28)();
  iVar12 = *(int *)(puVar4 + -0x1c8);
  if (iVar11 != 1) {
    puVar20 = puVar4 + -0x1ac;
    pcVar27 = *(code **)(iVar12 + -0x7b28);
    puVar24 = puVar4 + -0x1b4;
    *(undefined4 *)(puVar4 + -0x1ac) = 0;
    *(undefined4 *)(puVar4 + -0x1a8) = 0;
    iVar11 = (*pcVar27)(0,puVar24,0,puVar20);
    uVar3 = iVar11 + 1;
    iVar12 = *(int *)(puVar4 + -0x1c8);
    if (uVar3 != 0) {
      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);
      uVar17 = 0x129;
      iVar12 = *(int *)(puVar4 + -0x1c8);
      if (iVar11 == 0) goto LAB_0002b570;
      piVar25 = (int *)(puVar4 + -0x1b8);
      string_00 = piVar25;
      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);
      iVar13 = iVar11 + 1;
      iVar12 = *(int *)(puVar4 + -0x1c8);
      if (iVar13 != 0) {
        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);
        iVar12 = *(int *)(puVar4 + -0x1c8);
        if (iVar18 == 0) {
          uVar17 = 0x12d;
          goto LAB_0002b570;
        }
        uVar19 = uVar3 + iVar13;
        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {
          if (uVar19 < 2000) {
            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);
            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);
            string_00 = pattern_00 + uVar3;
            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);
            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);
            iVar12 = *(int *)(puVar4 + -0x1c8);
            if (iVar9 != 0) {
              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);
              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;
              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,
                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),
                                         *(int *)(puVar4 + iVar18 + -0x1d0));
              iVar12 = *(int *)(puVar4 + -0x1c8);
              goto LAB_0002b300;
            }
          }
          else {
            iVar18 = (**(code **)(iVar12 + -0x7be8))();
            iVar12 = *(int *)(puVar4 + -0x1c8);
            if (iVar18 == 0) goto LAB_0002b490;
            pcVar27 = *(code **)(iVar12 + -0x7b28);
            *(int *)(puVar4 + -0x1bc) = iVar18;
            string_00 = (int *)(iVar18 + uVar3 * 4);
            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);
            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);
            iVar12 = *(int *)(puVar4 + -0x1c8);
            if (iVar18 != 0) {
              pcVar27 = *(code **)(iVar12 + -0x7b28);
              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);
              (*pcVar27)(string_00,piVar25,iVar13,puVar20);
              *(byte **)(puVar4 + -0x1d0) = pbVar26;
              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11
                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),
                                         *(int *)(puVar4 + -0x1d0));
              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));
              iVar12 = *(int *)(puVar4 + -0x1c8);
              goto LAB_0002b300;
            }
          }
          uVar17 = 0x147;
LAB_0002b570:
          iVar11 = (**(code **)(iVar12 + -0x7ce0))
                             (*(int *)(iVar12 + -0x7e24) + -0x7864,
                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,
                              *(int *)(iVar12 + -0x7e24) + -0x7558);
          return iVar11;
        }
LAB_0002b490:
        iVar11 = -1;
        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();
        iVar12 = *(int *)(puVar4 + -0x1c8);
        *puVar21 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  string_00 = *(int **)(puVar4 + -0x1b8);
  iVar11 = (**(code **)(iVar12 + -0x7c0c))(string_00);
  *(byte **)(puVar4 + -0x1d0) = pbVar26;
  iVar11 = internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,
                            (char *)((int)string_00 + iVar11),
                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))
  ;
  iVar12 = *(int *)(puVar4 + -0x1c8);
LAB_0002b300:
  iVar13 = *(int *)(puVar4 + -0x1a4);
  if (iVar13 != *piVar6) {
    (**(code **)(iVar12 + -0x7b8c))();
    iVar11 = string_00[8];
    iVar12 = *string_00;
    uVar3 = (uint)(iVar11 < iVar12);
    uVar19 = string_00[7];
    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {
      iVar9 = iVar12 - iVar11;
      uVar7 = uVar19;
      iVar18 = iVar12;
      do {
        iVar16 = iVar11 - uVar7;
        uVar3 = iVar9 + uVar7;
        if (iVar16 < iVar9) {
          iVar18 = iVar18 - iVar16;
          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);
          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);
          do {
            puVar10 = puVar21 + 1;
            uVar17 = *puVar21;
            *puVar21 = *puVar5;
            *puVar5 = uVar17;
            uVar3 = uVar7;
            puVar21 = puVar10;
            puVar5 = puVar5 + 1;
          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);
        }
        else {
          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);
          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);
          do {
            puVar10 = puVar21 + 1;
            uVar17 = *puVar21;
            *puVar21 = *puVar5;
            *puVar5 = uVar17;
            puVar21 = puVar10;
            puVar5 = puVar5 + 1;
          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));
        }
      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));
    }
    string_00[8] = iVar12;
    string_00[7] = (iVar12 - iVar11) + uVar19;
    return uVar3;
  }
  return iVar11;
}



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

{
  undefined *puVar1;
  undefined *puVar2;
  uint uVar3;
  byte bVar7;
  undefined4 *puVar4;
  int *piVar5;
  uint uVar6;
  int iVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  int iVar11;
  int iVar12;
  byte *pbVar13;
  byte *pbVar14;
  int iVar15;
  undefined4 uVar16;
  int iVar17;
  int iVar18;
  uint uVar19;
  int *piVar20;
  undefined1 *puVar21;
  uint unaff_s1;
  byte *pbVar22;
  byte *pbVar23;
  undefined *unaff_s3;
  int unaff_s5;
  undefined1 *puVar24;
  undefined1 *puVar25;
  byte *unaff_s6;
  int *piVar26;
  byte *pbVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined1 *puVar30;
  undefined1 *puVar31;
  byte *pbVar32;
  code *pcVar33;
  code *pcVar34;
  undefined1 auStack_68 [24];
  byte *local_44;
  int *local_34;
  int local_30;
  byte *local_2c;
  
  puVar1 = PTR___stack_chk_guard_0005b58c;
  puVar30 = auStack_68;
  pbVar27 = param_2 + 1;
  local_30 = 0;
  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;
  pbVar13 = param_2;
  pbVar14 = param_3;
  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);
  puVar28 = PTR_DAT_0005b118;
  iVar11 = (int)(char)param_2[1];
  if (iVar11 != 0) {
    unaff_s5 = 0;
    unaff_s1 = (uint)(param_1 - 0x3fU < 2);
    puVar2 = PTR_DAT_0005b2cc + -0x78dc;
    local_34 = &local_30;
    puVar21 = auStack_68;
    unaff_s6 = pbVar27;
LAB_00029fdc:
    do {
      puVar30 = puVar21;
      unaff_s3 = puVar28;
      if (iVar11 == 0x5b) {
        if (*(int *)(puVar28 + -0x4730) == 0) {
          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);
          uVar16 = 0xffffffff;
          if (iVar11 != 0) {
            uVar16 = 1;
          }
          *(undefined4 *)(puVar28 + -0x4730) = uVar16;
        }
        bVar7 = pbVar27[1];
        pbVar23 = pbVar27 + 1;
        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {
          bVar7 = pbVar27[2];
          pbVar23 = pbVar27 + 2;
        }
        if (bVar7 == 0x5d) {
          bVar7 = pbVar23[1];
          pbVar23 = pbVar23 + 1;
        }
        pbVar13 = (byte *)0x5d;
        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {
          if (bVar7 == 0) goto LAB_0002a034;
          pbVar23 = pbVar27;
          bVar7 = *pbVar27;
        }
        iVar11 = (int)(char)pbVar23[1];
      }
      else {
        pbVar13 = &DAT_c0000601;
        uVar3 = iVar11 - 0x21U & 0xff;
        pbVar14 = (byte *)(uint)(uVar3 < 0x20);
        if (pbVar14 == (byte *)0x0) {
          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {
            pbVar23 = local_44;
            if (unaff_s1 == 0) {
              pbVar23 = pbVar27 + (1 - (int)unaff_s6);
            }
            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;
            pbVar14 = pbVar27 + -(int)unaff_s6;
            pbVar22 = pbVar27 + 1;
            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
            puVar31 = puVar30 + iVar12;
            piVar5 = (int *)(puVar30 + iVar12 + 0x18);
            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);
            iVar11 = (int)(char)pbVar27[1];
            *puVar21 = 0;
            *piVar5 = 0;
            *local_34 = (int)piVar5;
            pbVar13 = unaff_s6;
            unaff_s6 = pbVar22;
            pbVar27 = pbVar22;
            puVar30 = puVar30 + iVar12;
            local_34 = piVar5;
            puVar21 = puVar31;
            if (iVar11 == 0) break;
            goto LAB_00029fdc;
          }
LAB_0002a198:
          iVar11 = (int)(char)pbVar27[1];
        }
        else {
          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {
            iVar11 = (int)(char)pbVar27[1];
            if (iVar11 != 0x28) goto joined_r0x0002a19c;
            pbVar14 = (byte *)0x1;
            unaff_s5 = unaff_s5 + 1;
            pbVar27 = pbVar27 + 1;
            uVar3 = 7;
          }
          if (iVar11 != 0x29) goto LAB_0002a198;
          if (unaff_s5 == 0) {
            if (1 < param_1 - 0x3fU) {
              local_44 = pbVar27 + (1 - (int)unaff_s6);
            }
            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {
              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
              puVar21 = (undefined1 *)
                        (*(code *)PTR_mempcpy_0005b574)
                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);
              *puVar21 = 0;
              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;
              *local_34 = (int)(puVar30 + iVar11 + 0x18);
              if (local_30 == 0) {
                uVar3 = (*(code *)PTR___assert_fail_0005b410)
                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,
                                   PTR_DAT_0005b2cc + -0x7570);
                return uVar3;
              }
              if (pbVar27[-1] != 0x29) {
                uVar3 = (*(code *)PTR___assert_fail_0005b410)
                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,
                                   PTR_DAT_0005b2cc + -0x7570);
                return uVar3;
              }
              if (0x1f < param_1 - 0x21U) {
                uVar3 = (*(code *)PTR___assert_fail_0005b410)
                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,
                                   PTR_DAT_0005b2cc + -0x7570);
                return uVar3;
              }
                    /* WARNING: Could not emulate address calculation at 0x0002a294 */
                    /* WARNING: Treating indirect jump as call */
              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +
                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();
              return uVar3;
            }
            break;
          }
          iVar11 = (int)(char)pbVar27[1];
          unaff_s5 = unaff_s5 + -1;
        }
joined_r0x0002a19c:
        pbVar27 = pbVar27 + 1;
      }
      puVar21 = puVar30;
    } while (iVar11 != 0);
  }
LAB_0002a034:
  if (local_2c == *(byte **)puVar1) {
    return 0xffffffff;
  }
  pcVar33 = FUN_0002a610;
  pbVar23 = local_2c;
  puVar28 = PTR___stack_chk_fail_0005b564;
  (*(code *)PTR___stack_chk_fail_0005b564)();
  puVar2 = puVar28 + 0x38ae0;
  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);
  *(undefined1 **)(puVar30 + -8) = auStack_68;
  *(undefined **)(puVar30 + -0x1c) = unaff_s3;
  *(undefined **)(puVar30 + -0x160) = puVar2;
  *(code **)(puVar30 + -4) = pcVar33;
  *(byte **)(puVar30 + -0xc) = pbVar27;
  *(byte **)(puVar30 + -0x10) = unaff_s6;
  *(int *)(puVar30 + -0x14) = unaff_s5;
  *(byte **)(puVar30 + -0x18) = param_3;
  *(undefined **)(puVar30 + -0x20) = puVar1;
  *(uint *)(puVar30 + -0x24) = unaff_s1;
  *(byte **)(puVar30 + -0x28) = param_2;
  *(undefined4 **)(puVar30 + -0x144) = puVar4;
  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;
  pbVar22 = (byte *)(uint)*pbVar23;
  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;
  iVar11 = *(int *)(puVar28 + 0x30cbc);
  pbVar27 = pbVar14;
  pbVar32 = pbVar13;
  if (pbVar22 != (byte *)0x0) {
    uVar3 = *(uint *)(puVar30 + 0x10);
    unaff_s1 = uVar3 & 2;
    param_2 = (byte *)(uVar3 & 0x10);
    *(uint *)(puVar30 + -0x140) = uVar3 & 5;
    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);
    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;
    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;
    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;
    param_3 = pbVar23;
    unaff_s6 = param_4;
    do {
      pbVar23 = pbVar22;
      if (param_2 != (byte *)0x0) {
        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();
        puVar2 = *(undefined **)(puVar30 + -0x160);
        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);
      }
      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +
                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();
        return uVar3;
      }
      uVar3 = 1;
      pbVar22 = pbVar23;
      if (pbVar32 == pbVar14) goto LAB_0002a8e4;
      pbVar22 = (byte *)(uint)*pbVar32;
      if (param_2 != (byte *)0x0) {
        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();
        puVar2 = *(undefined **)(puVar30 + -0x160);
        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);
      }
      uVar3 = 1;
      unaff_s6 = pbVar23;
      if (pbVar22 != pbVar23) goto LAB_0002a8e4;
      param_3 = *(byte **)(puVar30 + -0x154);
      unaff_s6 = (byte *)0x0;
      pbVar22 = (byte *)(uint)*param_3;
      pbVar32 = pbVar32 + 1;
      *(byte **)(puVar30 + -0x154) = param_3 + 1;
    } while (pbVar22 != (byte *)0x0);
  }
  uVar3 = 0;
  if (pbVar32 != pbVar14) {
    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);
    if (param_3 == (byte *)0x0) {
      uVar3 = 1;
    }
    else {
      uVar3 = (uint)(*pbVar32 != 0x2f);
    }
  }
LAB_0002a8e4:
  iVar12 = *(int *)(puVar30 + -0x2c);
  if (iVar12 == **(int **)(puVar30 + -0x144)) {
    return uVar3;
  }
  pcVar33 = *(code **)(puVar2 + -0x7b8c);
  pcVar34 = rpl_fnmatch;
  (*pcVar33)();
  pcVar29 = *(code **)(pcVar33 + 0x302e0);
  *(uint *)(puVar30 + -0x19c) = unaff_s1;
  piVar5 = *(int **)(pcVar33 + 0x30338);
  *(byte **)(puVar30 + -0x180) = pbVar32;
  *(byte **)(puVar30 + -0x198) = pbVar22;
  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;
  *(code **)(puVar30 + -0x17c) = pcVar34;
  *(int *)(puVar30 + -0x184) = iVar11;
  *(byte **)(puVar30 + -0x188) = unaff_s6;
  *(int *)(puVar30 + -0x18c) = unaff_s5;
  *(byte **)(puVar30 + -400) = param_3;
  *(byte **)(puVar30 + -0x194) = pbVar14;
  *(byte **)(puVar30 + -0x1a0) = param_2;
  *(int *)(puVar30 + -0x1b4) = iVar12;
  *(byte **)(puVar30 + -0x1b8) = pbVar13;
  *(int *)(puVar30 + -0x1a4) = *piVar5;
  iVar11 = (*pcVar29)();
  iVar12 = *(int *)(puVar30 + -0x1c8);
  if (iVar11 != 1) {
    puVar21 = puVar30 + -0x1ac;
    pcVar33 = *(code **)(iVar12 + -0x7b28);
    puVar24 = puVar30 + -0x1b4;
    *(undefined4 *)(puVar30 + -0x1ac) = 0;
    *(undefined4 *)(puVar30 + -0x1a8) = 0;
    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);
    uVar3 = iVar11 + 1;
    iVar12 = *(int *)(puVar30 + -0x1c8);
    if (uVar3 != 0) {
      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);
      uVar16 = 0x129;
      iVar12 = *(int *)(puVar30 + -0x1c8);
      if (iVar11 == 0) goto LAB_0002b570;
      piVar26 = (int *)(puVar30 + -0x1b8);
      piVar20 = piVar26;
      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);
      iVar18 = iVar11 + 1;
      iVar12 = *(int *)(puVar30 + -0x1c8);
      if (iVar18 != 0) {
        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);
        iVar12 = *(int *)(puVar30 + -0x1c8);
        if (iVar17 == 0) {
          uVar16 = 0x12d;
          goto LAB_0002b570;
        }
        uVar19 = uVar3 + iVar18;
        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {
          if (uVar19 < 2000) {
            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);
            puVar25 = puVar30 + iVar17 + -0x1c8;
            piVar20 = (int *)(puVar25 + uVar3 * 4);
            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);
            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);
            iVar12 = *(int *)(puVar30 + -0x1c8);
            if (iVar8 == 0) {
LAB_0002b590:
              do {
                uVar16 = 0x147;
LAB_0002b570:
                (**(code **)(iVar12 + -0x7ce0))
                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870
                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);
              } while( true );
            }
            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);
            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;
            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            iVar11 = *(int *)(puVar30 + -0x1c8);
            goto LAB_0002b300;
          }
          iVar17 = (**(code **)(iVar12 + -0x7be8))();
          iVar12 = *(int *)(puVar30 + -0x1c8);
          if (iVar17 != 0) {
            pcVar33 = *(code **)(iVar12 + -0x7b28);
            *(int *)(puVar30 + -0x1bc) = iVar17;
            piVar20 = (int *)(iVar17 + uVar3 * 4);
            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);
            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);
            iVar12 = *(int *)(puVar30 + -0x1c8);
            if (iVar17 == 0) goto LAB_0002b590;
            pcVar33 = *(code **)(iVar12 + -0x7b28);
            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);
            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);
            *(byte **)(puVar30 + -0x1d0) = pbVar27;
            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));
            iVar11 = *(int *)(puVar30 + -0x1c8);
            goto LAB_0002b300;
          }
        }
        uVar3 = 0xffffffff;
        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();
        iVar11 = *(int *)(puVar30 + -0x1c8);
        *puVar4 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  piVar20 = *(int **)(puVar30 + -0x1b8);
  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);
  *(byte **)(puVar30 + -0x1d0) = pbVar27;
  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,
                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);
  iVar11 = *(int *)(puVar30 + -0x1c8);
LAB_0002b300:
  iVar12 = *(int *)(puVar30 + -0x1a4);
  if (iVar12 != *piVar5) {
    (**(code **)(iVar11 + -0x7b8c))();
    iVar11 = piVar20[8];
    iVar18 = *piVar20;
    uVar3 = (uint)(iVar11 < iVar18);
    uVar19 = piVar20[7];
    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {
      iVar8 = iVar18 - iVar11;
      uVar6 = uVar19;
      iVar17 = iVar18;
      do {
        iVar15 = iVar11 - uVar6;
        uVar3 = iVar8 + uVar6;
        if (iVar15 < iVar8) {
          iVar17 = iVar17 - iVar15;
          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);
          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);
          do {
            puVar9 = puVar4 + 1;
            uVar16 = *puVar4;
            *puVar4 = *puVar10;
            *puVar10 = uVar16;
            uVar3 = uVar6;
            puVar4 = puVar9;
            puVar10 = puVar10 + 1;
          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);
        }
        else {
          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);
          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);
          do {
            puVar9 = puVar4 + 1;
            uVar16 = *puVar4;
            *puVar4 = *puVar10;
            *puVar10 = uVar16;
            puVar4 = puVar9;
            puVar10 = puVar10 + 1;
          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));
        }
      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));
    }
    piVar20[8] = iVar18;
    piVar20[7] = (iVar18 - iVar11) + uVar19;
    return uVar3;
  }
  return uVar3;
}


lui gp,0x4
addiu gp,gp,-0x6e30
addu gp,gp,t9
addiu sp,sp,-0x68
lw t9,-0x7c0c(gp)
sw s8,0x60(sp)
or s8,sp,zero
sw s2,0x48(sp)
lw s2,-0x7b64(gp)
lbu v0,0x7b(s8)
sw s0,0x40(sp)
or s0,a1,zero
sw s7,0x5c(sp)
addiu s7,a1,0x1
sw v0,0x30(s8)
sw s4,0x50(sp)
or s4,a2,zero
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 s3,0x4c(sp)
sw s1,0x44(sp)
sw a3,0x2c(s8)
sw zero,0x38(s8)
lw v0,0x0(s2)
sw v0,0x3c(s8)
jalr t9
_nop
lb a0,0x1(s0)
lw gp,0x18(s8)
beq a0,zero,0x0002a030
_sw v0,0x24(s8)
lw v0,0x68(s8)
or s5,zero,zero
lw s3,-0x7fd8(gp)
or s6,s7,zero
addiu s1,v0,-0x3f
addiu v0,s8,0x38
sltiu s1,s1,0x2
sw v0,0x34(s8)
lw v0,-0x7e24(gp)
addiu v0,v0,-0x78dc
sw v0,0x28(s8)
li v0,0x5b
beq a0,v0,0x0002a134
_lui v0,0xc000
addiu a1,v0,0x601
addiu v0,a0,-0x21
andi v0,v0,0xff
sltiu a2,v0,0x20
beq a2,zero,0x0002a098
_li t2,0x28
srlv v0,a1,v0
ext v0,v0,0x0,0x1
bne v0,zero,0x0002a078
_li v0,0x29
bne a0,v0,0x0002a198
_nop
beq s5,zero,0x0002a1f0
_addiu v0,s5,-0x1
lb a0,0x1(s7)
addiu s7,s7,0x1
or s5,v0,zero
bne a0,zero,0x00029fdc
_li v0,0x5b
li v0,-0x1
lw a0,0x3c(s8)
lw v1,0x0(s2)
bne a0,v1,0x0002a608
_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
lb a0,0x1(s7)
bne a0,t2,0x0002a028
_addiu s7,s7,0x1
addiu v0,a0,-0x21
andi v0,v0,0xff
sltiu a2,v0,0x20
bne a2,zero,0x00029ffc
_addiu s5,s5,0x1
li v0,0x7c
bne a0,v0,0x0002a198
_nop
bne s5,zero,0x0002a198
_nop
bne s1,zero,0x0002a0bc
_lw v0,0x24(s8)
subu v0,s7,s6
addiu v0,v0,0x1
li a0,-0x4
addiu v0,v0,0x7
and v0,v0,a0
addiu a0,v0,-0x4
sltiu a0,a0,0x1f3c
beq a0,zero,0x0002a030
_addiu v0,v0,0x7
lw t9,-0x7b7c(gp)
subu a2,s7,s6
srl v0,v0,0x3
or a1,s6,zero
sll v0,v0,0x3
addiu s6,s7,0x1
subu sp,sp,v0
addiu t2,sp,0x18
addiu a0,sp,0x1c
jalr t9
_sw t2,0x20(s8)
lw gp,0x18(s8)
lw t2,0x20(s8)
lb a0,0x1(s7)
or s7,s6,zero
sb zero,0x0(v0)
lw v0,0x34(s8)
sw zero,0x0(t2)
sw t2,0x34(s8)
bne a0,zero,0x00029fd8
_sw t2,0x0(v0)
b 0x0002a034
_li v0,-0x1
lw v0,-0x4730(s3)
beq v0,zero,0x0002a1d0
_lw t9,-0x7be0(gp)
lb v0,0x1(s7)
li a1,0x21
beq v0,a1,0x0002a1b4
_addiu a0,s7,0x1
lw a1,-0x4730(s3)
bltz a1,0x0002a1ac
_li a1,0x5e
li v1,0x5d
beq v0,v1,0x0002a1c4
_nop
b 0x0002a17c
_li a1,0x5d
beq v0,zero,0x0002a030
_or a0,s7,zero
lb v0,0x0(s7)
bne v0,a1,0x0002a170
_addiu s7,a0,0x1
lb a0,0x1(a0)
bne a0,zero,0x00029fd8
_li v0,-0x1
b 0x0002a034
_nop
lb a0,0x1(s7)
bne a0,zero,0x00029fd8
_addiu s7,s7,0x1
b 0x0002a034
_li v0,-0x1
bne v0,a1,0x0002a160
_li v1,0x5d
lb v0,0x2(s7)
li v1,0x5d
bne v0,v1,0x0002a168
_addiu a0,s7,0x2
lb v0,0x1(a0)
b 0x0002a168
_addiu a0,a0,0x1
jalr t9
_lw a0,0x28(s8)
li a0,0x1
li a1,-0x1
lw gp,0x18(s8)
movn a1,a0,v0
b 0x0002a140
_sw a1,-0x4730(s3)
lw v0,0x68(s8)
addiu v0,v0,-0x3f
sltiu v0,v0,0x2
bne v0,zero,0x0002a20c
_subu v0,s7,s6
addiu v0,v0,0x1
sw v0,0x24(s8)
lw v0,0x24(s8)
li a0,-0x4
addiu v0,v0,0x7
and v0,v0,a0
addiu a0,v0,-0x4
sltiu a0,a0,0x1f3c
beq a0,zero,0x0002a030
_addiu v0,v0,0x7
lw t9,-0x7b7c(gp)
subu a2,s7,s6
srl v0,v0,0x3
or a1,s6,zero
sll v0,v0,0x3
subu sp,sp,v0
addiu a0,sp,0x1c
jalr t9
_addiu s1,sp,0x18
lw v1,0x34(s8)
lw gp,0x18(s8)
sb zero,0x0(v0)
sw zero,0x0(s1)
sw s1,0x0(v1)
lw s1,0x38(s8)
beq s1,zero,0x0002a5e4
_li v0,0x29
lb a0,-0x1(s7)
bne a0,v0,0x0002a5c0
_lw v0,0x68(s8)
addiu s3,v0,-0x21
sltiu v0,s3,0x20
beq v0,zero,0x0002a59c
_lw v0,-0x7e24(gp)
sll s3,s3,0x2
addiu v0,v0,-0x76e0
addu s3,v0,s3
lw v0,0x0(s3)
addu v0,v0,gp
jr v0
_nop
lw a3,-0x7e24(gp)
li a2,0x4ad
lw a1,-0x7e24(gp)
lw a0,-0x7e24(gp)
lw t9,-0x7ce0(gp)
addiu a3,a3,-0x7570
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,-0x7570
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,-0x7570
addiu a1,a1,-0x78cc
jalr t9
_addiu a0,a0,-0x78bc
jalr t9
_nop
(translation_unit "uint FUN_00029f20(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}\n\n" (function_definition "uint FUN_00029f20(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_00029f20(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  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "undefined1 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "undefined *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * 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 "undefined1 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "byte *pbVar32;" type_identifier (pointer_declarator "*pbVar32" * identifier) ;) (declaration "code *pcVar33;" type_identifier (pointer_declarator "*pcVar33" * identifier) ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "byte *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "byte *local_2c;" type_identifier (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 "puVar30 = auStack_68;" (assignment_expression "puVar30 = auStack_68" identifier = identifier) ;) (expression_statement "pbVar27 = param_2 + 1;" (assignment_expression "pbVar27 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(byte **)PTR___stack_chk_guard_0005b58c" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_0005b58c" * (cast_expression "(byte **)PTR___stack_chk_guard_0005b58c" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (expression_statement "pbVar14 = param_3;" (assignment_expression "pbVar14 = param_3" identifier = identifier) ;) (expression_statement "local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);" (assignment_expression "local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2)" identifier = (cast_expression "(byte *)(*(code *)PTR_strlen_0005b4e4)(param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strlen_0005b4e4)(param_2)" (parenthesized_expression "(*(code *)PTR_strlen_0005b4e4)" ( (pointer_expression "*(code *)PTR_strlen_0005b4e4" * (cast_expression "(code *)PTR_strlen_0005b4e4" ( (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 "iVar11 = (int)(char)param_2[1];" (assignment_expression "iVar11 = (int)(char)param_2[1]" identifier = (cast_expression "(int)(char)param_2[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)param_2[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])))) ;) (if_statement "if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }" { (expression_statement "unaff_s5 = 0;" (assignment_expression "unaff_s5 = 0" 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 "puVar2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "puVar2 = PTR_DAT_0005b2cc + -0x78dc" identifier = (binary_expression "PTR_DAT_0005b2cc + -0x78dc" identifier + number_literal)) ;) (expression_statement "local_34 = &local_30;" (assignment_expression "local_34 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "puVar21 = auStack_68;" (assignment_expression "puVar21 = auStack_68" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar27;" (assignment_expression "unaff_s6 = pbVar27" identifier = identifier) ;) (labeled_statement "LAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);" statement_identifier : (do_statement "do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);" do (compound_statement "{\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    }" { (expression_statement "puVar30 = puVar21;" (assignment_expression "puVar30 = puVar21" identifier = identifier) ;) (expression_statement "unaff_s3 = puVar28;" (assignment_expression "unaff_s3 = puVar28" identifier = identifier) ;) (if_statement "if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" if (parenthesized_expression "(iVar11 == 0x5b)" ( (binary_expression "iVar11 == 0x5b" identifier == number_literal) )) (compound_statement "{\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }" { (if_statement "if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\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          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }" { (expression_statement "iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);" (assignment_expression "iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2)" identifier = (call_expression "(*(code *)PTR_getenv_0005b510)(puVar2)" (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 "(puVar2)" ( identifier )))) ;) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar11 != 0) {\n            uVar16 = 1;\n          }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar16 = 1;\n          }" { (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(puVar28 + -0x4730) = uVar16;" (assignment_expression "*(undefined4 *)(puVar28 + -0x4730) = uVar16" (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 "bVar7 = pbVar27[1];" (assignment_expression "bVar7 = pbVar27[1]" identifier = (subscript_expression "pbVar27[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar27 + 1;" (assignment_expression "pbVar23 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }" if (parenthesized_expression "((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e))))" ( (binary_expression "(bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))" (parenthesized_expression "(bVar7 == 0x21)" ( (binary_expression "bVar7 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))" ( (parenthesized_expression "(*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e))" ( (binary_expression "*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 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 "(bVar7 == 0x5e)" ( (binary_expression "bVar7 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }" { (expression_statement "bVar7 = pbVar27[2];" (assignment_expression "bVar7 = pbVar27[2]" identifier = (subscript_expression "pbVar27[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar27 + 2;" (assignment_expression "pbVar23 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (if_statement "if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" if (parenthesized_expression "(bVar7 == 0x5d)" ( (binary_expression "bVar7 == 0x5d" identifier == number_literal) )) (compound_statement "{\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" { (expression_statement "bVar7 = pbVar23[1];" (assignment_expression "bVar7 = pbVar23[1]" identifier = (subscript_expression "pbVar23[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar13 = (byte *)0x5d;" (assignment_expression "pbVar13 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }" while (parenthesized_expression "(pbVar27 = pbVar23 + 1, bVar7 != 0x5d)" ( (comma_expression "pbVar27 = pbVar23 + 1, bVar7 != 0x5d" (assignment_expression "pbVar27 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) , (binary_expression "bVar7 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }" { (if_statement "if (bVar7 == 0) goto LAB_0002a034;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) (expression_statement "pbVar23 = pbVar27;" (assignment_expression "pbVar23 = pbVar27" identifier = identifier) ;) (expression_statement "bVar7 = *pbVar27;" (assignment_expression "bVar7 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) })) (expression_statement "iVar11 = (int)(char)pbVar23[1];" (assignment_expression "iVar11 = (int)(char)pbVar23[1]" identifier = (cast_expression "(int)(char)pbVar23[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar23[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar23[1]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" else (compound_statement "{\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" { (expression_statement "pbVar13 = &DAT_c0000601;" (assignment_expression "pbVar13 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar3 = iVar11 - 0x21U & 0xff;" (assignment_expression "uVar3 = iVar11 - 0x21U & 0xff" identifier = (binary_expression "iVar11 - 0x21U & 0xff" (binary_expression "iVar11 - 0x21U" identifier - number_literal) & number_literal)) ;) (expression_statement "pbVar14 = (byte *)(uint)(uVar3 < 0x20);" (assignment_expression "pbVar14 = (byte *)(uint)(uVar3 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar3 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar3 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < 0x20)" ( (binary_expression "uVar3 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" if (parenthesized_expression "(pbVar14 == (byte *)0x0)" ( (binary_expression "pbVar14 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }" { (if_statement "if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" if (parenthesized_expression "((iVar11 == 0x7c) && (unaff_s5 == 0))" ( (binary_expression "(iVar11 == 0x7c) && (unaff_s5 == 0)" (parenthesized_expression "(iVar11 == 0x7c)" ( (binary_expression "iVar11 == 0x7c" identifier == number_literal) )) && (parenthesized_expression "(unaff_s5 == 0)" ( (binary_expression "unaff_s5 == 0" identifier == number_literal) ))) )) (compound_statement "{\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" { (expression_statement "pbVar23 = local_44;" (assignment_expression "pbVar23 = local_44" identifier = identifier) ;) (if_statement "if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }" { (expression_statement "pbVar23 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "pbVar23 = 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)(pbVar23 + 7) & 0xfffffffc) - 4) break;" if (parenthesized_expression "(0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4)" ( (binary_expression "0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4" number_literal < (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + 7)" ( (binary_expression "pbVar23 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pbVar14 = pbVar27 + -(int)unaff_s6;" (assignment_expression "pbVar14 = 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 "pbVar22 = pbVar27 + 1;" (assignment_expression "pbVar22 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + 7)" ( (binary_expression "pbVar23 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar31 = puVar30 + iVar12;" (assignment_expression "puVar31 = puVar30 + iVar12" identifier = (binary_expression "puVar30 + iVar12" identifier + identifier)) ;) (expression_statement "piVar5 = (int *)(puVar30 + iVar12 + 0x18);" (assignment_expression "piVar5 = (int *)(puVar30 + iVar12 + 0x18)" identifier = (cast_expression "(int *)(puVar30 + iVar12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + iVar12 + 0x18)" ( (binary_expression "puVar30 + iVar12 + 0x18" (binary_expression "puVar30 + iVar12" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);" (assignment_expression "puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" (parenthesized_expression "(*(code *)PTR_mempcpy_0005b574)" ( (pointer_expression "*(code *)PTR_mempcpy_0005b574" * (cast_expression "(code *)PTR_mempcpy_0005b574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar30 + iVar12 + 0x1c)" ( (binary_expression "puVar30 + iVar12 + 0x1c" (binary_expression "puVar30 + iVar12" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 "*puVar21 = 0;" (assignment_expression "*puVar21 = 0" (pointer_expression "*puVar21" * identifier) = number_literal) ;) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*local_34 = (int)piVar5;" (assignment_expression "*local_34 = (int)piVar5" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar13 = unaff_s6;" (assignment_expression "pbVar13 = unaff_s6" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar22;" (assignment_expression "unaff_s6 = pbVar22" identifier = identifier) ;) (expression_statement "pbVar27 = pbVar22;" (assignment_expression "pbVar27 = pbVar22" identifier = identifier) ;) (expression_statement "puVar30 = puVar30 + iVar12;" (assignment_expression "puVar30 = puVar30 + iVar12" identifier = (binary_expression "puVar30 + iVar12" identifier + identifier)) ;) (expression_statement "local_34 = piVar5;" (assignment_expression "local_34 = piVar5" identifier = identifier) ;) (expression_statement "puVar21 = puVar31;" (assignment_expression "puVar21 = puVar31" identifier = identifier) ;) (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00029fdc;" goto statement_identifier ;) })) (labeled_statement "LAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];" statement_identifier : (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 ])))) ;)) }) (else_clause "else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" else (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" { (while_statement "while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar3 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar3 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar3 & 0x1f)" number_literal >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }" { (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 (iVar11 != 0x28) goto joined_r0x0002a19c;" if (parenthesized_expression "(iVar11 != 0x28)" ( (binary_expression "iVar11 != 0x28" identifier != number_literal) )) (goto_statement "goto joined_r0x0002a19c;" goto statement_identifier ;)) (expression_statement "pbVar14 = (byte *)0x1;" (assignment_expression "pbVar14 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" identifier = (binary_expression "unaff_s5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar11 != 0x29) goto LAB_0002a198;" if (parenthesized_expression "(iVar11 != 0x29)" ( (binary_expression "iVar11 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_0002a198;" goto statement_identifier ;)) (if_statement "if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }" if (parenthesized_expression "(unaff_s5 == 0)" ( (binary_expression "unaff_s5 == 0" identifier == number_literal) )) (compound_statement "{\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }" { (if_statement "if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\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 = pbVar27 + (1 - (int)unaff_s6);\n            }" { (expression_statement "local_44 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "local_44 = 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 (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }" if (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c)" ( (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 + 7)" ( (binary_expression "local_44 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal) < number_literal) )) (compound_statement "{\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    /* WARNING: Could not emulate address calculation at 0x0002a294 */\n                    /* WARNING: Treating indirect jump as call */\n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }" { (expression_statement "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 + 7)" ( (binary_expression "local_44 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);" (assignment_expression "puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (parenthesized_expression "(*(code *)PTR_mempcpy_0005b574)" ( (pointer_expression "*(code *)PTR_mempcpy_0005b574" * (cast_expression "(code *)PTR_mempcpy_0005b574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (binary_expression "puVar30 + iVar11 + 0x1c" (binary_expression "puVar30 + iVar11" 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 "*puVar21 = 0;" (assignment_expression "*puVar21 = 0" (pointer_expression "*puVar21" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + iVar11 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar30 + iVar11 + 0x18)" * (cast_expression "(undefined4 *)(puVar30 + iVar11 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + iVar11 + 0x18)" ( (binary_expression "puVar30 + iVar11 + 0x18" (binary_expression "puVar30 + iVar11" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*local_34 = (int)(puVar30 + iVar11 + 0x18);" (assignment_expression "*local_34 = (int)(puVar30 + iVar11 + 0x18)" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)(puVar30 + iVar11 + 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar30 + iVar11 + 0x18)" ( (binary_expression "puVar30 + iVar11 + 0x18" (binary_expression "puVar30 + iVar11" identifier + identifier) + number_literal) )))) ;) (if_statement "if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" { (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" ( (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 + -0x7570" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (if_statement "if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" if (parenthesized_expression "(pbVar27[-1] != 0x29)" ( (binary_expression "pbVar27[-1] != 0x29" (subscript_expression "pbVar27[-1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" { (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" ( (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 + -0x7570" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (if_statement "if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\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                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" { (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" ( (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 + -0x7570" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) comment comment (expression_statement "uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();" (assignment_expression "uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" * (cast_expression "(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" ( (binary_expression "PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0" (binary_expression "PTR_DAT_0005b2cc +\n                                                  (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 uVar3;" return identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) }))) (labeled_statement "joined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;" statement_identifier : (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;)) }))) (expression_statement "puVar21 = puVar30;" (assignment_expression "puVar21 = puVar30" identifier = identifier) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;)) })) (labeled_statement "LAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }" statement_identifier : (if_statement "if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(local_2c == *(byte **)puVar1)" ( (binary_expression "local_2c == *(byte **)puVar1" identifier == (pointer_expression "*(byte **)puVar1" * (cast_expression "(byte **)puVar1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) }))) (expression_statement "pcVar33 = FUN_0002a610;" (assignment_expression "pcVar33 = FUN_0002a610" identifier = identifier) ;) (expression_statement "pbVar23 = local_2c;" (assignment_expression "pbVar23 = 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 "puVar2 = puVar28 + 0x38ae0;" (assignment_expression "puVar2 = puVar28 + 0x38ae0" identifier = (binary_expression "puVar28 + 0x38ae0" identifier + number_literal)) ;) (expression_statement "puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);" (assignment_expression "puVar4 = *(undefined4 **)(puVar28 + 0x30f7c)" identifier = (pointer_expression "*(undefined4 **)(puVar28 + 0x30f7c)" * (cast_expression "(undefined4 **)(puVar28 + 0x30f7c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x30f7c)" ( (binary_expression "puVar28 + 0x30f7c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar30 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar30 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar30 + -8)" * (cast_expression "(undefined1 **)(puVar30 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -8)" ( (binary_expression "puVar30 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar30 + -0x1c) = unaff_s3;" (assignment_expression "*(undefined **)(puVar30 + -0x1c) = unaff_s3" (pointer_expression "*(undefined **)(puVar30 + -0x1c)" * (cast_expression "(undefined **)(puVar30 + -0x1c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1c)" ( (binary_expression "puVar30 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar30 + -0x160) = puVar2;" (assignment_expression "*(undefined **)(puVar30 + -0x160) = puVar2" (pointer_expression "*(undefined **)(puVar30 + -0x160)" * (cast_expression "(undefined **)(puVar30 + -0x160)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x160)" ( (binary_expression "puVar30 + -0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar30 + -4) = pcVar33;" (assignment_expression "*(code **)(puVar30 + -4) = pcVar33" (pointer_expression "*(code **)(puVar30 + -4)" * (cast_expression "(code **)(puVar30 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -4)" ( (binary_expression "puVar30 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0xc) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0xc) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0xc)" * (cast_expression "(byte **)(puVar30 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0xc)" ( (binary_expression "puVar30 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar30 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar30 + -0x10)" * (cast_expression "(byte **)(puVar30 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x10)" ( (binary_expression "puVar30 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar30 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar30 + -0x14)" * (cast_expression "(int *)(puVar30 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14)" ( (binary_expression "puVar30 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x18) = param_3;" (assignment_expression "*(byte **)(puVar30 + -0x18) = param_3" (pointer_expression "*(byte **)(puVar30 + -0x18)" * (cast_expression "(byte **)(puVar30 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x18)" ( (binary_expression "puVar30 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar30 + -0x20) = puVar1;" (assignment_expression "*(undefined **)(puVar30 + -0x20) = puVar1" (pointer_expression "*(undefined **)(puVar30 + -0x20)" * (cast_expression "(undefined **)(puVar30 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x20)" ( (binary_expression "puVar30 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar30 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar30 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar30 + -0x24)" * (cast_expression "(uint *)(puVar30 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x24)" ( (binary_expression "puVar30 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x28) = param_2;" (assignment_expression "*(byte **)(puVar30 + -0x28) = param_2" (pointer_expression "*(byte **)(puVar30 + -0x28)" * (cast_expression "(byte **)(puVar30 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x28)" ( (binary_expression "puVar30 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar30 + -0x144) = puVar4;" (assignment_expression "*(undefined4 **)(puVar30 + -0x144) = puVar4" (pointer_expression "*(undefined4 **)(puVar30 + -0x144)" * (cast_expression "(undefined4 **)(puVar30 + -0x144)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x144)" ( (binary_expression "puVar30 + -0x144" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x154) = pbVar23 + 1;" (assignment_expression "*(byte **)(puVar30 + -0x154) = pbVar23 + 1" (pointer_expression "*(byte **)(puVar30 + -0x154)" * (cast_expression "(byte **)(puVar30 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x154)" ( (binary_expression "puVar30 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "pbVar22 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar23" identifier = (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x2c) = *puVar4;" (assignment_expression "*(undefined4 *)(puVar30 + -0x2c) = *puVar4" (pointer_expression "*(undefined4 *)(puVar30 + -0x2c)" * (cast_expression "(undefined4 *)(puVar30 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x2c)" ( (binary_expression "puVar30 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "iVar11 = *(int *)(puVar28 + 0x30cbc);" (assignment_expression "iVar11 = *(int *)(puVar28 + 0x30cbc)" identifier = (pointer_expression "*(int *)(puVar28 + 0x30cbc)" * (cast_expression "(int *)(puVar28 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30cbc)" ( (binary_expression "puVar28 + 0x30cbc" identifier + number_literal) ))))) ;) (expression_statement "pbVar27 = pbVar14;" (assignment_expression "pbVar27 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar32 = pbVar13;" (assignment_expression "pbVar32 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" if (parenthesized_expression "(pbVar22 != (byte *)0x0)" ( (binary_expression "pbVar22 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" { (expression_statement "uVar3 = *(uint *)(puVar30 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar30 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar30 + 0x10)" * (cast_expression "(uint *)(puVar30 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + 0x10)" ( (binary_expression "puVar30 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = uVar3 & 2;" (assignment_expression "unaff_s1 = uVar3 & 2" identifier = (binary_expression "uVar3 & 2" identifier & number_literal)) ;) (expression_statement "param_2 = (byte *)(uVar3 & 0x10);" (assignment_expression "param_2 = (byte *)(uVar3 & 0x10)" identifier = (cast_expression "(byte *)(uVar3 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar30 + -0x140) = uVar3 & 5;" (assignment_expression "*(uint *)(puVar30 + -0x140) = uVar3 & 5" (pointer_expression "*(uint *)(puVar30 + -0x140)" * (cast_expression "(uint *)(puVar30 + -0x140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x140)" ( (binary_expression "puVar30 + -0x140" identifier + number_literal) )))) = (binary_expression "uVar3 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar30 + -0x148)" * (cast_expression "(undefined4 *)(puVar30 + -0x148)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x148)" ( (binary_expression "puVar30 + -0x148" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar28 + 0x30b08)" * (cast_expression "(undefined4 *)(puVar28 + 0x30b08)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30b08)" ( (binary_expression "puVar28 + 0x30b08" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;" (assignment_expression "*(int *)(puVar30 + -0x14c) = iVar11 + -0x7660" (pointer_expression "*(int *)(puVar30 + -0x14c)" * (cast_expression "(int *)(puVar30 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14c)" ( (binary_expression "puVar30 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar11 + -0x7660" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar30 + -0x138)" * (cast_expression "(int *)(puVar30 + -0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x138)" ( (binary_expression "puVar30 + -0x138" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar28 + 0x30d80)" * (cast_expression "(int *)(puVar28 + 0x30d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30d80)" ( (binary_expression "puVar28 + 0x30d80" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar30 + -0x13c)" * (cast_expression "(int *)(puVar30 + -0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x13c)" ( (binary_expression "puVar30 + -0x13c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar28 + 0x30cbc)" * (cast_expression "(int *)(puVar28 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30cbc)" ( (binary_expression "puVar28 + 0x30cbc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "param_3 = pbVar23;" (assignment_expression "param_3 = pbVar23" identifier = identifier) ;) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" identifier = identifier) ;) (do_statement "do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);" do (compound_statement "{\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    }" { (expression_statement "pbVar23 = pbVar22;" (assignment_expression "pbVar23 = pbVar22" identifier = identifier) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\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        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }" { (expression_statement "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();" (assignment_expression "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(puVar2 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar2 + -0x7cdc))()" (parenthesized_expression "(**(code **)(puVar2 + -0x7cdc))" ( (pointer_expression "**(code **)(puVar2 + -0x7cdc)" * (pointer_expression "*(code **)(puVar2 + -0x7cdc)" * (cast_expression "(code **)(puVar2 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + -0x7cdc)" ( (binary_expression "puVar2 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = *(undefined **)(puVar30 + -0x160);" (assignment_expression "puVar2 = *(undefined **)(puVar30 + -0x160)" identifier = (pointer_expression "*(undefined **)(puVar30 + -0x160)" * (cast_expression "(undefined **)(puVar30 + -0x160)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x160)" ( (binary_expression "puVar30 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);" (assignment_expression "pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" identifier = (binary_expression "(byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + (int)pbVar22 * 4 + 3)" ( (binary_expression "*piVar5 + (int)pbVar22 * 4 + 3" (binary_expression "*piVar5 + (int)pbVar22 * 4" (pointer_expression "*piVar5" * identifier) + (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))) ;) })) (if_statement "if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }" if (parenthesized_expression "(((uint)(pbVar23 + -0x21) & 0xff) < 0x3c)" ( (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + -0x21)" ( (binary_expression "pbVar23 + -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        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }" { comment comment (expression_statement "uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();" (assignment_expression "uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" identifier = (call_expression "(*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))" ( (pointer_expression "*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" * (cast_expression "(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" ( (binary_expression "puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" * (cast_expression "(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" ( (binary_expression "*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar30 + -0x14c)" * (cast_expression "(int *)(puVar30 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14c)" ( (binary_expression "puVar30 + -0x14c" identifier + number_literal) )))) + (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + -0x21)" ( (binary_expression "pbVar23 + -0x21" identifier + number_literal) ))) & number_literal) )) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "pbVar22 = pbVar23;" (assignment_expression "pbVar22 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar32 == pbVar14) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar32 == pbVar14)" ( (binary_expression "pbVar32 == pbVar14" identifier == identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar22 = (byte *)(uint)*pbVar32;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar32" identifier = (binary_expression "(byte *)(uint)*pbVar32" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\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        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }" { (expression_statement "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();" (assignment_expression "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(puVar2 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar2 + -0x7cdc))()" (parenthesized_expression "(**(code **)(puVar2 + -0x7cdc))" ( (pointer_expression "**(code **)(puVar2 + -0x7cdc)" * (pointer_expression "*(code **)(puVar2 + -0x7cdc)" * (cast_expression "(code **)(puVar2 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + -0x7cdc)" ( (binary_expression "puVar2 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = *(undefined **)(puVar30 + -0x160);" (assignment_expression "puVar2 = *(undefined **)(puVar30 + -0x160)" identifier = (pointer_expression "*(undefined **)(puVar30 + -0x160)" * (cast_expression "(undefined **)(puVar30 + -0x160)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x160)" ( (binary_expression "puVar30 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);" (assignment_expression "pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4)" identifier = (pointer_expression "*(byte **)(*piVar5 + (int)pbVar22 * 4)" * (cast_expression "(byte **)(*piVar5 + (int)pbVar22 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + (int)pbVar22 * 4)" ( (binary_expression "*piVar5 + (int)pbVar22 * 4" (pointer_expression "*piVar5" * identifier) + (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = pbVar23;" (assignment_expression "unaff_s6 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar22 != pbVar23) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar22 != pbVar23)" ( (binary_expression "pbVar22 != pbVar23" identifier != identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "param_3 = *(byte **)(puVar30 + -0x154);" (assignment_expression "param_3 = *(byte **)(puVar30 + -0x154)" identifier = (pointer_expression "*(byte **)(puVar30 + -0x154)" * (cast_expression "(byte **)(puVar30 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x154)" ( (binary_expression "puVar30 + -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 "pbVar22 = (byte *)(uint)*param_3;" (assignment_expression "pbVar22 = (byte *)(uint)*param_3" identifier = (binary_expression "(byte *)(uint)*param_3" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar32 = pbVar32 + 1;" (assignment_expression "pbVar32 = pbVar32 + 1" identifier = (binary_expression "pbVar32 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar30 + -0x154) = param_3 + 1;" (assignment_expression "*(byte **)(puVar30 + -0x154) = param_3 + 1" (pointer_expression "*(byte **)(puVar30 + -0x154)" * (cast_expression "(byte **)(puVar30 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x154)" ( (binary_expression "puVar30 + -0x154" identifier + number_literal) )))) = (binary_expression "param_3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar22 != (byte *)0x0)" ( (binary_expression "pbVar22 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar32 != pbVar14)" ( (binary_expression "pbVar32 != pbVar14" identifier != identifier) )) (compound_statement "{\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }" { (expression_statement "param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);" (assignment_expression "param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8)" identifier = (cast_expression "(byte *)(*(uint *)(puVar30 + 0x10) & 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar30 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar30 + 0x10) & 8" (pointer_expression "*(uint *)(puVar30 + 0x10)" * (cast_expression "(uint *)(puVar30 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + 0x10)" ( (binary_expression "puVar30 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\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      uVar3 = 1;\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }" else (compound_statement "{\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }" { (expression_statement "uVar3 = (uint)(*pbVar32 != 0x2f);" (assignment_expression "uVar3 = (uint)(*pbVar32 != 0x2f)" identifier = (call_expression "(uint)(*pbVar32 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar32 != 0x2f)" ( (binary_expression "*pbVar32 != 0x2f" (pointer_expression "*pbVar32" * identifier) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);" statement_identifier : (expression_statement "iVar12 = *(int *)(puVar30 + -0x2c);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar30 + -0x2c)" * (cast_expression "(int *)(puVar30 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x2c)" ( (binary_expression "puVar30 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }" if (parenthesized_expression "(iVar12 == **(int **)(puVar30 + -0x144))" ( (binary_expression "iVar12 == **(int **)(puVar30 + -0x144)" identifier == (pointer_expression "**(int **)(puVar30 + -0x144)" * (pointer_expression "*(int **)(puVar30 + -0x144)" * (cast_expression "(int **)(puVar30 + -0x144)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x144)" ( (binary_expression "puVar30 + -0x144" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar33 = *(code **)(puVar2 + -0x7b8c);" (assignment_expression "pcVar33 = *(code **)(puVar2 + -0x7b8c)" identifier = (pointer_expression "*(code **)(puVar2 + -0x7b8c)" * (cast_expression "(code **)(puVar2 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + -0x7b8c)" ( (binary_expression "puVar2 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = rpl_fnmatch;" (assignment_expression "pcVar34 = rpl_fnmatch" identifier = identifier) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar29 = *(code **)(pcVar33 + 0x302e0);" (assignment_expression "pcVar29 = *(code **)(pcVar33 + 0x302e0)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x302e0)" * (cast_expression "(code **)(pcVar33 + 0x302e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x302e0)" ( (binary_expression "pcVar33 + 0x302e0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar30 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar30 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar30 + -0x19c)" * (cast_expression "(uint *)(puVar30 + -0x19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x19c)" ( (binary_expression "puVar30 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar5 = *(int **)(pcVar33 + 0x30338);" (assignment_expression "piVar5 = *(int **)(pcVar33 + 0x30338)" identifier = (pointer_expression "*(int **)(pcVar33 + 0x30338)" * (cast_expression "(int **)(pcVar33 + 0x30338)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x30338)" ( (binary_expression "pcVar33 + 0x30338" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar30 + -0x180) = pbVar32;" (assignment_expression "*(byte **)(puVar30 + -0x180) = pbVar32" (pointer_expression "*(byte **)(puVar30 + -0x180)" * (cast_expression "(byte **)(puVar30 + -0x180)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x180)" ( (binary_expression "puVar30 + -0x180" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x198) = pbVar22;" (assignment_expression "*(byte **)(puVar30 + -0x198) = pbVar22" (pointer_expression "*(byte **)(puVar30 + -0x198)" * (cast_expression "(byte **)(puVar30 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x198)" ( (binary_expression "puVar30 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;" (assignment_expression "*(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c" (pointer_expression "*(code **)(puVar30 + -0x1c8)" * (cast_expression "(code **)(puVar30 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x37e9c" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar30 + -0x17c) = pcVar34;" (assignment_expression "*(code **)(puVar30 + -0x17c) = pcVar34" (pointer_expression "*(code **)(puVar30 + -0x17c)" * (cast_expression "(code **)(puVar30 + -0x17c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x17c)" ( (binary_expression "puVar30 + -0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x184) = iVar11;" (assignment_expression "*(int *)(puVar30 + -0x184) = iVar11" (pointer_expression "*(int *)(puVar30 + -0x184)" * (cast_expression "(int *)(puVar30 + -0x184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x184)" ( (binary_expression "puVar30 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar30 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar30 + -0x188)" * (cast_expression "(byte **)(puVar30 + -0x188)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x188)" ( (binary_expression "puVar30 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x18c) = unaff_s5;" (assignment_expression "*(int *)(puVar30 + -0x18c) = unaff_s5" (pointer_expression "*(int *)(puVar30 + -0x18c)" * (cast_expression "(int *)(puVar30 + -0x18c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x18c)" ( (binary_expression "puVar30 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -400) = param_3;" (assignment_expression "*(byte **)(puVar30 + -400) = param_3" (pointer_expression "*(byte **)(puVar30 + -400)" * (cast_expression "(byte **)(puVar30 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -400)" ( (binary_expression "puVar30 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x194) = pbVar14;" (assignment_expression "*(byte **)(puVar30 + -0x194) = pbVar14" (pointer_expression "*(byte **)(puVar30 + -0x194)" * (cast_expression "(byte **)(puVar30 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x194)" ( (binary_expression "puVar30 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x1a0) = param_2;" (assignment_expression "*(byte **)(puVar30 + -0x1a0) = param_2" (pointer_expression "*(byte **)(puVar30 + -0x1a0)" * (cast_expression "(byte **)(puVar30 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1a0)" ( (binary_expression "puVar30 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x1b4) = iVar12;" (assignment_expression "*(int *)(puVar30 + -0x1b4) = iVar12" (pointer_expression "*(int *)(puVar30 + -0x1b4)" * (cast_expression "(int *)(puVar30 + -0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1b4)" ( (binary_expression "puVar30 + -0x1b4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x1b8) = pbVar13;" (assignment_expression "*(byte **)(puVar30 + -0x1b8) = pbVar13" (pointer_expression "*(byte **)(puVar30 + -0x1b8)" * (cast_expression "(byte **)(puVar30 + -0x1b8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1b8)" ( (binary_expression "puVar30 + -0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x1a4) = *piVar5;" (assignment_expression "*(int *)(puVar30 + -0x1a4) = *piVar5" (pointer_expression "*(int *)(puVar30 + -0x1a4)" * (cast_expression "(int *)(puVar30 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1a4)" ( (binary_expression "puVar30 + -0x1a4" identifier + number_literal) )))) = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "iVar11 = (*pcVar29)();" (assignment_expression "iVar11 = (*pcVar29)()" identifier = (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" if (parenthesized_expression "(iVar11 != 1)" ( (binary_expression "iVar11 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" { (expression_statement "puVar21 = puVar30 + -0x1ac;" (assignment_expression "puVar21 = puVar30 + -0x1ac" identifier = (binary_expression "puVar30 + -0x1ac" identifier + number_literal)) ;) (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "puVar24 = puVar30 + -0x1b4;" (assignment_expression "puVar24 = puVar30 + -0x1b4" identifier = (binary_expression "puVar30 + -0x1b4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar30 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar30 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1ac)" ( (binary_expression "puVar30 + -0x1ac" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar30 + -0x1a8)" * (cast_expression "(undefined4 *)(puVar30 + -0x1a8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1a8)" ( (binary_expression "puVar30 + -0x1a8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar33)(0,puVar24,0,puVar21);" (assignment_expression "iVar11 = (*pcVar33)(0,puVar24,0,puVar21)" identifier = (call_expression "(*pcVar33)(0,puVar24,0,puVar21)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(0,puVar24,0,puVar21)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "uVar3 = iVar11 + 1;" (assignment_expression "uVar3 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" { (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" ( (pointer_expression "**(code **)(iVar12 + -0x7b68)" * (pointer_expression "*(code **)(iVar12 + -0x7b68)" * (cast_expression "(code **)(iVar12 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b68)" ( (binary_expression "iVar12 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "uVar16 = 0x129;" (assignment_expression "uVar16 = 0x129" identifier = number_literal) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) goto LAB_0002b570;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;)) (expression_statement "piVar26 = (int *)(puVar30 + -0x1b8);" (assignment_expression "piVar26 = (int *)(puVar30 + -0x1b8)" identifier = (cast_expression "(int *)(puVar30 + -0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1b8)" ( (binary_expression "puVar30 + -0x1b8" identifier + number_literal) )))) ;) (expression_statement "piVar20 = piVar26;" (assignment_expression "piVar20 = piVar26" identifier = identifier) ;) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(0,piVar26,0,puVar21)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "iVar18 = iVar11 + 1;" (assignment_expression "iVar18 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }" { (expression_statement "iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);" (assignment_expression "iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" ( (pointer_expression "**(code **)(iVar12 + -0x7b68)" * (pointer_expression "*(code **)(iVar12 + -0x7b68)" * (cast_expression "(code **)(iVar12 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b68)" ( (binary_expression "iVar12 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }" { (expression_statement "uVar16 = 0x12d;" (assignment_expression "uVar16 = 0x12d" identifier = number_literal) ;) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;) })) (expression_statement "uVar19 = uVar3 + iVar18;" (assignment_expression "uVar19 = uVar3 + iVar18" identifier = (binary_expression "uVar3 + iVar18" identifier + identifier)) ;) (if_statement "if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" if (parenthesized_expression "((uVar3 <= uVar19) && (uVar19 < 0x40000000))" ( (binary_expression "(uVar3 <= uVar19) && (uVar19 < 0x40000000)" (parenthesized_expression "(uVar3 <= uVar19)" ( (binary_expression "uVar3 <= uVar19" identifier <= identifier) )) && (parenthesized_expression "(uVar19 < 0x40000000)" ( (binary_expression "uVar19 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" { (if_statement "if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(uVar19 < 2000)" ( (binary_expression "uVar19 < 2000" identifier < number_literal) )) (compound_statement "{\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar19 * 4 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar19 * 4 + 7 & 0xfffffff8)" ( (binary_expression "uVar19 * 4 + 7 & 0xfffffff8" (binary_expression "uVar19 * 4 + 7" (binary_expression "uVar19 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar25 = puVar30 + iVar17 + -0x1c8;" (assignment_expression "puVar25 = puVar30 + iVar17 + -0x1c8" identifier = (binary_expression "puVar30 + iVar17 + -0x1c8" (binary_expression "puVar30 + iVar17" identifier + identifier) + number_literal)) ;) (expression_statement "piVar20 = (int *)(puVar25 + uVar3 * 4);" (assignment_expression "piVar20 = (int *)(puVar25 + uVar3 * 4)" identifier = (cast_expression "(int *)(puVar25 + uVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + uVar3 * 4)" ( (binary_expression "puVar25 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "(**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);" (call_expression "(**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(puVar25,puVar24,uVar3,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);" (assignment_expression "iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }" { (labeled_statement "LAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );" statement_identifier : (do_statement "do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );" do (compound_statement "{\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              }" { (expression_statement "uVar16 = 0x147;" (assignment_expression "uVar16 = 0x147" identifier = number_literal) ;) (labeled_statement "LAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);" statement_identifier : (expression_statement "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);" (call_expression "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar12 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar12 + -0x7ce0)" * (pointer_expression "*(code **)(iVar12 + -0x7ce0)" * (cast_expression "(code **)(iVar12 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7ce0)" ( (binary_expression "iVar12 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , identifier , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "(**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);" (call_expression "(**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(piVar20,piVar26,iVar18,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + iVar17 + -0x1d0)" * (cast_expression "(byte **)(puVar30 + iVar17 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + iVar17 + -0x1d0)" ( (binary_expression "puVar30 + iVar17 + -0x1d0" (binary_expression "puVar30 + iVar17" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( identifier , identifier , (binary_expression "piVar20 + iVar11" 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 "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) (expression_statement "iVar17 = (**(code **)(iVar12 + -0x7be8))();" (assignment_expression "iVar17 = (**(code **)(iVar12 + -0x7be8))()" identifier = (call_expression "(**(code **)(iVar12 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7be8))" ( (pointer_expression "**(code **)(iVar12 + -0x7be8)" * (pointer_expression "*(code **)(iVar12 + -0x7be8)" * (cast_expression "(code **)(iVar12 + -0x7be8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7be8)" ( (binary_expression "iVar12 + -0x7be8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar30 + -0x1bc) = iVar17;" (assignment_expression "*(int *)(puVar30 + -0x1bc) = iVar17" (pointer_expression "*(int *)(puVar30 + -0x1bc)" * (cast_expression "(int *)(puVar30 + -0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = (int *)(iVar17 + uVar3 * 4);" (assignment_expression "piVar20 = (int *)(iVar17 + uVar3 * 4)" identifier = (cast_expression "(int *)(iVar17 + uVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + uVar3 * 4)" ( (binary_expression "iVar17 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "(*pcVar33)(iVar17,puVar24,uVar3,puVar21);" (call_expression "(*pcVar33)(iVar17,puVar24,uVar3,puVar21)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(iVar17,puVar24,uVar3,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);" (assignment_expression "iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 == 0) goto LAB_0002b590;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b590;" goto statement_identifier ;)) (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar33)(piVar20,piVar26,iVar18,puVar21);" (call_expression "(*pcVar33)(piVar20,piVar26,iVar18,puVar21)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(piVar20,piVar26,iVar18,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar30 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0x1d0)" * (cast_expression "(byte **)(puVar30 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1d0)" ( (binary_expression "puVar30 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) , identifier , (binary_expression "piVar20 + iVar11" 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 *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b54)" ( (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar30 + -0x1bc))" ( (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();" (assignment_expression "puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar12 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7c3c))" ( (pointer_expression "**(code **)(iVar12 + -0x7c3c)" * (pointer_expression "*(code **)(iVar12 + -0x7c3c)" * (cast_expression "(code **)(iVar12 + -0x7c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7c3c)" ( (binary_expression "iVar12 + -0x7c3c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0xc;" (assignment_expression "*puVar4 = 0xc" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) })) (expression_statement "piVar20 = *(int **)(puVar30 + -0x1b8);" (assignment_expression "piVar20 = *(int **)(puVar30 + -0x1b8)" identifier = (pointer_expression "*(int **)(puVar30 + -0x1b8)" * (cast_expression "(int **)(puVar30 + -0x1b8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1b8)" ( (binary_expression "puVar30 + -0x1b8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20)" identifier = (call_expression "(**(code **)(iVar12 + -0x7c0c))(piVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7c0c))" ( (pointer_expression "**(code **)(iVar12 + -0x7c0c)" * (pointer_expression "*(code **)(iVar12 + -0x7c0c)" * (cast_expression "(code **)(iVar12 + -0x7c0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7c0c)" ( (binary_expression "iVar12 + -0x7c0c" identifier + number_literal) ))))) )) (argument_list "(piVar20)" ( identifier )))) ;) (expression_statement "*(byte **)(puVar30 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0x1d0)" * (cast_expression "(byte **)(puVar30 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1d0)" ( (binary_expression "puVar30 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar30 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar30 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1b4)" ( (binary_expression "puVar30 + -0x1b4" identifier + number_literal) )))) , identifier , (binary_expression "(int)piVar20 + iVar11" (cast_expression "(int)piVar20" ( (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 "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);" statement_identifier : (expression_statement "iVar12 = *(int *)(puVar30 + -0x1a4);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1a4)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1a4)" * (cast_expression "(int *)(puVar30 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1a4)" ( (binary_expression "puVar30 + -0x1a4" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }" if (parenthesized_expression "(iVar12 != *piVar5)" ( (binary_expression "iVar12 != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }" { (expression_statement "(**(code **)(iVar11 + -0x7b8c))();" (call_expression "(**(code **)(iVar11 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar11 + -0x7b8c))" ( (pointer_expression "**(code **)(iVar11 + -0x7b8c)" * (pointer_expression "*(code **)(iVar11 + -0x7b8c)" * (cast_expression "(code **)(iVar11 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + -0x7b8c)" ( (binary_expression "iVar11 + -0x7b8c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar11 = piVar20[8];" (assignment_expression "iVar11 = piVar20[8]" identifier = (subscript_expression "piVar20[8]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "uVar3 = (uint)(iVar11 < iVar18);" (assignment_expression "uVar3 = (uint)(iVar11 < iVar18)" identifier = (call_expression "(uint)(iVar11 < iVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar11 < iVar18)" ( (binary_expression "iVar11 < iVar18" identifier < identifier) )))) ;) (expression_statement "uVar19 = piVar20[7];" (assignment_expression "uVar19 = piVar20[7]" identifier = (subscript_expression "piVar20[7]" identifier [ number_literal ])) ;) (if_statement "if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }" if (parenthesized_expression "((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0))" ( (binary_expression "(uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" ( (comma_expression "uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0" (assignment_expression "uVar3 = (uint)((int)uVar19 < iVar11)" identifier = (call_expression "(uint)((int)uVar19 < iVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar19 < iVar11)" ( (binary_expression "(int)uVar19 < iVar11" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) , (binary_expression "uVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }" { (expression_statement "iVar8 = iVar18 - iVar11;" (assignment_expression "iVar8 = iVar18 - iVar11" identifier = (binary_expression "iVar18 - iVar11" identifier - identifier)) ;) (expression_statement "uVar6 = uVar19;" (assignment_expression "uVar6 = uVar19" identifier = identifier) ;) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" identifier = identifier) ;) (do_statement "do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));" do (compound_statement "{\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      }" { (expression_statement "iVar15 = iVar11 - uVar6;" (assignment_expression "iVar15 = iVar11 - uVar6" identifier = (binary_expression "iVar11 - uVar6" identifier - identifier)) ;) (expression_statement "uVar3 = iVar8 + uVar6;" (assignment_expression "uVar3 = iVar8 + uVar6" identifier = (binary_expression "iVar8 + uVar6" identifier + identifier)) ;) (if_statement "if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" if (parenthesized_expression "(iVar15 < iVar8)" ( (binary_expression "iVar15 < iVar8" identifier < identifier) )) (compound_statement "{\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }" { (expression_statement "iVar17 = iVar17 - iVar15;" (assignment_expression "iVar17 = iVar17 - iVar15" identifier = (binary_expression "iVar17 - iVar15" identifier - identifier)) ;) (expression_statement "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);" (assignment_expression "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + uVar6 * 4)" ( (binary_expression "iVar12 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);" (assignment_expression "puVar10 = (undefined4 *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + iVar17 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);" do (compound_statement "{\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "puVar9 = puVar4 + 1;" (assignment_expression "puVar9 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = *puVar4;" (assignment_expression "uVar16 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*puVar4 = *puVar10;" (assignment_expression "*puVar4 = *puVar10" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*puVar10 = uVar16;" (assignment_expression "*puVar10 = uVar16" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "uVar3 = uVar6;" (assignment_expression "uVar3 = uVar6" identifier = identifier) ;) (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" identifier = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9)" ( (binary_expression "(undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9" (cast_expression "(undefined4 *)(iVar12 + (iVar15 + uVar6) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + (iVar15 + uVar6) * 4)" ( (binary_expression "iVar12 + (iVar15 + uVar6) * 4" identifier + (binary_expression "(iVar15 + uVar6) * 4" (parenthesized_expression "(iVar15 + uVar6)" ( (binary_expression "iVar15 + uVar6" identifier + identifier) )) * number_literal)) ))) != identifier) )) ;) }) (else_clause "else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" else (compound_statement "{\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" { (expression_statement "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);" (assignment_expression "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + uVar6 * 4)" ( (binary_expression "iVar12 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);" (assignment_expression "puVar10 = (undefined4 *)(iVar12 + iVar11 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + iVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar11 * 4)" ( (binary_expression "iVar12 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));" do (compound_statement "{\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "puVar9 = puVar4 + 1;" (assignment_expression "puVar9 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = *puVar4;" (assignment_expression "uVar16 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*puVar4 = *puVar10;" (assignment_expression "*puVar4 = *puVar10" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*puVar10 = uVar16;" (assignment_expression "*puVar10 = uVar16" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" identifier = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != (undefined4 *)(iVar12 + uVar3 * 4))" ( (binary_expression "puVar9 != (undefined4 *)(iVar12 + uVar3 * 4)" identifier != (cast_expression "(undefined4 *)(iVar12 + uVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + uVar3 * 4)" ( (binary_expression "iVar12 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) )) ;) }))) }) while (parenthesized_expression "((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11))" ( (binary_expression "(iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11)" (parenthesized_expression "(iVar11 < iVar17)" ( (binary_expression "iVar11 < iVar17" identifier < identifier) )) && (parenthesized_expression "(iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11)" ( (comma_expression "iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11" (assignment_expression "iVar8 = iVar17 - iVar11" identifier = (binary_expression "iVar17 - iVar11" identifier - identifier)) , (comma_expression "uVar6 = uVar3, (int)uVar3 < iVar11" (assignment_expression "uVar6 = uVar3" identifier = identifier) , (binary_expression "(int)uVar3 < iVar11" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier))) ))) )) ;) })) (expression_statement "piVar20[8] = iVar18;" (assignment_expression "piVar20[8] = iVar18" (subscript_expression "piVar20[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar20[7] = (iVar18 - iVar11) + uVar19;" (assignment_expression "piVar20[7] = (iVar18 - iVar11) + uVar19" (subscript_expression "piVar20[7]" identifier [ number_literal ]) = (binary_expression "(iVar18 - iVar11) + uVar19" (parenthesized_expression "(iVar18 - iVar11)" ( (binary_expression "iVar18 - iVar11" identifier - identifier) )) + identifier)) ;) (return_statement "return uVar3;" return identifier ;) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "int ext_match(int opt,char *pattern,char *string,char *string_end,_Bool no_leading_period,int flags)\n\n{\n  patternlist *ppVar1;\n  patternlist *ppVar2;\n  uint uVar3;\n  undefined1 *puVar4;\n  byte bVar8;\n  undefined4 *puVar5;\n  int *piVar6;\n  uint uVar7;\n  int iVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  int iVar16;\n  undefined4 uVar17;\n  int iVar18;\n  uint uVar19;\n  int *string_00;\n  undefined1 *puVar20;\n  patternlist *unaff_s1;\n  undefined4 *puVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  uint unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  wchar_t *pattern_00;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  int in_t9;\n  code *pcVar27;\n  code *pcVar28;\n  byte *pbVar29;\n  code *pcVar30;\n  undefined1 auStack_68 [24];\n  int local_50;\n  patternlist *local_48;\n  byte *local_44;\n  int local_40;\n  char *local_3c;\n  uint local_38;\n  patternlist *local_34;\n  patternlist *list;\n  byte *local_2c;\n  \n  local_50 = in_t9 + 0x391d0;\n  puVar21 = *(undefined4 **)(in_t9 + 0x3166c);\n  local_38 = (uint)no_leading_period;\n  pbVar26 = (byte *)(pattern + 1);\n  list = (patternlist *)0x0;\n  local_2c = (byte *)*puVar21;\n  pbVar14 = (byte *)pattern;\n  pbVar15 = (byte *)string;\n  local_3c = string_end;\n  local_44 = (byte *)(**(code **)(in_t9 + 0x315c4))(pattern);\n  iVar11 = (int)pattern[1];\n  iVar12 = local_50;\n  puVar4 = auStack_68;\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s3 = *(uint *)(local_50 + -0x7fd8);\n    local_34 = (patternlist *)&list;\n    unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);\n    local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\nLAB_00029fdc:\n    do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  pcVar27 = *(code **)(iVar12 + -0x7b8c);\n  pbVar23 = local_2c;\n  if (local_2c == (byte *)*puVar21) {\n    return -1;\n  }\nLAB_0002a608:\n  pcVar30 = internal_fnmatch;\n  (*pcVar27)();\n  pcVar28 = pcVar27 + 0x38ae0;\n  puVar5 = *(undefined4 **)(pcVar27 + 0x30f7c);\n  *(undefined1 **)(puVar4 + -8) = auStack_68;\n  *(uint *)(puVar4 + -0x1c) = unaff_s3;\n  *(code **)(puVar4 + -0x160) = pcVar28;\n  *(code **)(puVar4 + -4) = pcVar30;\n  *(byte **)(puVar4 + -0xc) = pbVar26;\n  *(byte **)(puVar4 + -0x10) = unaff_s6;\n  *(int *)(puVar4 + -0x14) = unaff_s5;\n  *(char **)(puVar4 + -0x18) = string;\n  *(undefined4 **)(puVar4 + -0x20) = puVar21;\n  *(patternlist **)(puVar4 + -0x24) = unaff_s1;\n  *(char **)(puVar4 + -0x28) = pattern;\n  *(undefined4 **)(puVar4 + -0x144) = puVar5;\n  *(byte **)(puVar4 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar4 + -0x2c) = *puVar5;\n  iVar11 = *(int *)(pcVar27 + 0x30cbc);\n  pbVar26 = pbVar15;\n  pbVar29 = pbVar14;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar4 + 0x10);\n    unaff_s1 = (patternlist *)(uVar3 & 2);\n    pattern = (char *)(uVar3 & 0x10);\n    *(uint *)(puVar4 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);\n    *(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;\n    *(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;\n    string = (char *)pbVar23;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar29 != pbVar15) {\n    string = (char *)(*(uint *)(puVar4 + 0x10) & 8);\n    if ((byte *)string == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar4 + -0x2c);\n  if (iVar12 == **(int **)(puVar4 + -0x144)) {\n    return uVar3;\n  }\n  pcVar27 = *(code **)(pcVar28 + -0x7b8c);\n  pcVar30 = rpl_fnmatch;\n  (*pcVar27)();\n  pcVar28 = *(code **)(pcVar27 + 0x302e0);\n  *(patternlist **)(puVar4 + -0x19c) = unaff_s1;\n  piVar6 = *(int **)(pcVar27 + 0x30338);\n  *(byte **)(puVar4 + -0x180) = pbVar29;\n  *(byte **)(puVar4 + -0x198) = pbVar22;\n  *(code **)(puVar4 + -0x1c8) = pcVar27 + 0x37e9c;\n  *(code **)(puVar4 + -0x17c) = pcVar30;\n  *(int *)(puVar4 + -0x184) = iVar11;\n  *(byte **)(puVar4 + -0x188) = unaff_s6;\n  *(int *)(puVar4 + -0x18c) = unaff_s5;\n  *(char **)(puVar4 + -400) = string;\n  *(byte **)(puVar4 + -0x194) = pbVar15;\n  *(char **)(puVar4 + -0x1a0) = pattern;\n  *(int *)(puVar4 + -0x1b4) = iVar12;\n  *(byte **)(puVar4 + -0x1b8) = pbVar14;\n  *(int *)(puVar4 + -0x1a4) = *piVar6;\n  iVar11 = (*pcVar28)();\n  iVar12 = *(int *)(puVar4 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar20 = puVar4 + -0x1ac;\n    pcVar27 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar4 + -0x1b4;\n    *(undefined4 *)(puVar4 + -0x1ac) = 0;\n    *(undefined4 *)(puVar4 + -0x1a8) = 0;\n    iVar11 = (*pcVar27)(0,puVar24,0,puVar20);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar4 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  string_00 = *(int **)(puVar4 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(string_00);\n  *(byte **)(puVar4 + -0x1d0) = pbVar26;\n  iVar11 = internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))\n  ;\n  iVar12 = *(int *)(puVar4 + -0x1c8);\nLAB_0002b300:\n  iVar13 = *(int *)(puVar4 + -0x1a4);\n  if (iVar13 != *piVar6) {\n    (**(code **)(iVar12 + -0x7b8c))();\n    iVar11 = string_00[8];\n    iVar12 = *string_00;\n    uVar3 = (uint)(iVar11 < iVar12);\n    uVar19 = string_00[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }\n    string_00[8] = iVar12;\n    string_00[7] = (iVar12 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return iVar11;\n}\n\n" (function_definition "int ext_match(int opt,char *pattern,char *string,char *string_end,_Bool no_leading_period,int flags)\n\n{\n  patternlist *ppVar1;\n  patternlist *ppVar2;\n  uint uVar3;\n  undefined1 *puVar4;\n  byte bVar8;\n  undefined4 *puVar5;\n  int *piVar6;\n  uint uVar7;\n  int iVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  int iVar16;\n  undefined4 uVar17;\n  int iVar18;\n  uint uVar19;\n  int *string_00;\n  undefined1 *puVar20;\n  patternlist *unaff_s1;\n  undefined4 *puVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  uint unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  wchar_t *pattern_00;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  int in_t9;\n  code *pcVar27;\n  code *pcVar28;\n  byte *pbVar29;\n  code *pcVar30;\n  undefined1 auStack_68 [24];\n  int local_50;\n  patternlist *local_48;\n  byte *local_44;\n  int local_40;\n  char *local_3c;\n  uint local_38;\n  patternlist *local_34;\n  patternlist *list;\n  byte *local_2c;\n  \n  local_50 = in_t9 + 0x391d0;\n  puVar21 = *(undefined4 **)(in_t9 + 0x3166c);\n  local_38 = (uint)no_leading_period;\n  pbVar26 = (byte *)(pattern + 1);\n  list = (patternlist *)0x0;\n  local_2c = (byte *)*puVar21;\n  pbVar14 = (byte *)pattern;\n  pbVar15 = (byte *)string;\n  local_3c = string_end;\n  local_44 = (byte *)(**(code **)(in_t9 + 0x315c4))(pattern);\n  iVar11 = (int)pattern[1];\n  iVar12 = local_50;\n  puVar4 = auStack_68;\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s3 = *(uint *)(local_50 + -0x7fd8);\n    local_34 = (patternlist *)&list;\n    unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);\n    local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\nLAB_00029fdc:\n    do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  pcVar27 = *(code **)(iVar12 + -0x7b8c);\n  pbVar23 = local_2c;\n  if (local_2c == (byte *)*puVar21) {\n    return -1;\n  }\nLAB_0002a608:\n  pcVar30 = internal_fnmatch;\n  (*pcVar27)();\n  pcVar28 = pcVar27 + 0x38ae0;\n  puVar5 = *(undefined4 **)(pcVar27 + 0x30f7c);\n  *(undefined1 **)(puVar4 + -8) = auStack_68;\n  *(uint *)(puVar4 + -0x1c) = unaff_s3;\n  *(code **)(puVar4 + -0x160) = pcVar28;\n  *(code **)(puVar4 + -4) = pcVar30;\n  *(byte **)(puVar4 + -0xc) = pbVar26;\n  *(byte **)(puVar4 + -0x10) = unaff_s6;\n  *(int *)(puVar4 + -0x14) = unaff_s5;\n  *(char **)(puVar4 + -0x18) = string;\n  *(undefined4 **)(puVar4 + -0x20) = puVar21;\n  *(patternlist **)(puVar4 + -0x24) = unaff_s1;\n  *(char **)(puVar4 + -0x28) = pattern;\n  *(undefined4 **)(puVar4 + -0x144) = puVar5;\n  *(byte **)(puVar4 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar4 + -0x2c) = *puVar5;\n  iVar11 = *(int *)(pcVar27 + 0x30cbc);\n  pbVar26 = pbVar15;\n  pbVar29 = pbVar14;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar4 + 0x10);\n    unaff_s1 = (patternlist *)(uVar3 & 2);\n    pattern = (char *)(uVar3 & 0x10);\n    *(uint *)(puVar4 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);\n    *(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;\n    *(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;\n    string = (char *)pbVar23;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar29 != pbVar15) {\n    string = (char *)(*(uint *)(puVar4 + 0x10) & 8);\n    if ((byte *)string == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar4 + -0x2c);\n  if (iVar12 == **(int **)(puVar4 + -0x144)) {\n    return uVar3;\n  }\n  pcVar27 = *(code **)(pcVar28 + -0x7b8c);\n  pcVar30 = rpl_fnmatch;\n  (*pcVar27)();\n  pcVar28 = *(code **)(pcVar27 + 0x302e0);\n  *(patternlist **)(puVar4 + -0x19c) = unaff_s1;\n  piVar6 = *(int **)(pcVar27 + 0x30338);\n  *(byte **)(puVar4 + -0x180) = pbVar29;\n  *(byte **)(puVar4 + -0x198) = pbVar22;\n  *(code **)(puVar4 + -0x1c8) = pcVar27 + 0x37e9c;\n  *(code **)(puVar4 + -0x17c) = pcVar30;\n  *(int *)(puVar4 + -0x184) = iVar11;\n  *(byte **)(puVar4 + -0x188) = unaff_s6;\n  *(int *)(puVar4 + -0x18c) = unaff_s5;\n  *(char **)(puVar4 + -400) = string;\n  *(byte **)(puVar4 + -0x194) = pbVar15;\n  *(char **)(puVar4 + -0x1a0) = pattern;\n  *(int *)(puVar4 + -0x1b4) = iVar12;\n  *(byte **)(puVar4 + -0x1b8) = pbVar14;\n  *(int *)(puVar4 + -0x1a4) = *piVar6;\n  iVar11 = (*pcVar28)();\n  iVar12 = *(int *)(puVar4 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar20 = puVar4 + -0x1ac;\n    pcVar27 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar4 + -0x1b4;\n    *(undefined4 *)(puVar4 + -0x1ac) = 0;\n    *(undefined4 *)(puVar4 + -0x1a8) = 0;\n    iVar11 = (*pcVar27)(0,puVar24,0,puVar20);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar4 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  string_00 = *(int **)(puVar4 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(string_00);\n  *(byte **)(puVar4 + -0x1d0) = pbVar26;\n  iVar11 = internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))\n  ;\n  iVar12 = *(int *)(puVar4 + -0x1c8);\nLAB_0002b300:\n  iVar13 = *(int *)(puVar4 + -0x1a4);\n  if (iVar13 != *piVar6) {\n    (**(code **)(iVar12 + -0x7b8c))();\n    iVar11 = string_00[8];\n    iVar12 = *string_00;\n    uVar3 = (uint)(iVar11 < iVar12);\n    uVar19 = string_00[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }\n    string_00[8] = iVar12;\n    string_00[7] = (iVar12 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return iVar11;\n}" primitive_type (function_declarator "ext_match(int opt,char *pattern,char *string,char *string_end,_Bool no_leading_period,int flags)" identifier (parameter_list "(int opt,char *pattern,char *string,char *string_end,_Bool no_leading_period,int flags)" ( (parameter_declaration "int opt" primitive_type identifier) , (parameter_declaration "char *pattern" primitive_type (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "char *string_end" primitive_type (pointer_declarator "*string_end" * identifier)) , (parameter_declaration "_Bool no_leading_period" type_identifier identifier) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  patternlist *ppVar1;\n  patternlist *ppVar2;\n  uint uVar3;\n  undefined1 *puVar4;\n  byte bVar8;\n  undefined4 *puVar5;\n  int *piVar6;\n  uint uVar7;\n  int iVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  int iVar16;\n  undefined4 uVar17;\n  int iVar18;\n  uint uVar19;\n  int *string_00;\n  undefined1 *puVar20;\n  patternlist *unaff_s1;\n  undefined4 *puVar21;\n  byte *pbVar22;\n  byte *pbVar23;\n  uint unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  wchar_t *pattern_00;\n  byte *unaff_s6;\n  int *piVar25;\n  byte *pbVar26;\n  int in_t9;\n  code *pcVar27;\n  code *pcVar28;\n  byte *pbVar29;\n  code *pcVar30;\n  undefined1 auStack_68 [24];\n  int local_50;\n  patternlist *local_48;\n  byte *local_44;\n  int local_40;\n  char *local_3c;\n  uint local_38;\n  patternlist *local_34;\n  patternlist *list;\n  byte *local_2c;\n  \n  local_50 = in_t9 + 0x391d0;\n  puVar21 = *(undefined4 **)(in_t9 + 0x3166c);\n  local_38 = (uint)no_leading_period;\n  pbVar26 = (byte *)(pattern + 1);\n  list = (patternlist *)0x0;\n  local_2c = (byte *)*puVar21;\n  pbVar14 = (byte *)pattern;\n  pbVar15 = (byte *)string;\n  local_3c = string_end;\n  local_44 = (byte *)(**(code **)(in_t9 + 0x315c4))(pattern);\n  iVar11 = (int)pattern[1];\n  iVar12 = local_50;\n  puVar4 = auStack_68;\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s3 = *(uint *)(local_50 + -0x7fd8);\n    local_34 = (patternlist *)&list;\n    unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);\n    local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\nLAB_00029fdc:\n    do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  pcVar27 = *(code **)(iVar12 + -0x7b8c);\n  pbVar23 = local_2c;\n  if (local_2c == (byte *)*puVar21) {\n    return -1;\n  }\nLAB_0002a608:\n  pcVar30 = internal_fnmatch;\n  (*pcVar27)();\n  pcVar28 = pcVar27 + 0x38ae0;\n  puVar5 = *(undefined4 **)(pcVar27 + 0x30f7c);\n  *(undefined1 **)(puVar4 + -8) = auStack_68;\n  *(uint *)(puVar4 + -0x1c) = unaff_s3;\n  *(code **)(puVar4 + -0x160) = pcVar28;\n  *(code **)(puVar4 + -4) = pcVar30;\n  *(byte **)(puVar4 + -0xc) = pbVar26;\n  *(byte **)(puVar4 + -0x10) = unaff_s6;\n  *(int *)(puVar4 + -0x14) = unaff_s5;\n  *(char **)(puVar4 + -0x18) = string;\n  *(undefined4 **)(puVar4 + -0x20) = puVar21;\n  *(patternlist **)(puVar4 + -0x24) = unaff_s1;\n  *(char **)(puVar4 + -0x28) = pattern;\n  *(undefined4 **)(puVar4 + -0x144) = puVar5;\n  *(byte **)(puVar4 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar4 + -0x2c) = *puVar5;\n  iVar11 = *(int *)(pcVar27 + 0x30cbc);\n  pbVar26 = pbVar15;\n  pbVar29 = pbVar14;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar4 + 0x10);\n    unaff_s1 = (patternlist *)(uVar3 & 2);\n    pattern = (char *)(uVar3 & 0x10);\n    *(uint *)(puVar4 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);\n    *(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;\n    *(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;\n    string = (char *)pbVar23;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar29 != pbVar15) {\n    string = (char *)(*(uint *)(puVar4 + 0x10) & 8);\n    if ((byte *)string == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar4 + -0x2c);\n  if (iVar12 == **(int **)(puVar4 + -0x144)) {\n    return uVar3;\n  }\n  pcVar27 = *(code **)(pcVar28 + -0x7b8c);\n  pcVar30 = rpl_fnmatch;\n  (*pcVar27)();\n  pcVar28 = *(code **)(pcVar27 + 0x302e0);\n  *(patternlist **)(puVar4 + -0x19c) = unaff_s1;\n  piVar6 = *(int **)(pcVar27 + 0x30338);\n  *(byte **)(puVar4 + -0x180) = pbVar29;\n  *(byte **)(puVar4 + -0x198) = pbVar22;\n  *(code **)(puVar4 + -0x1c8) = pcVar27 + 0x37e9c;\n  *(code **)(puVar4 + -0x17c) = pcVar30;\n  *(int *)(puVar4 + -0x184) = iVar11;\n  *(byte **)(puVar4 + -0x188) = unaff_s6;\n  *(int *)(puVar4 + -0x18c) = unaff_s5;\n  *(char **)(puVar4 + -400) = string;\n  *(byte **)(puVar4 + -0x194) = pbVar15;\n  *(char **)(puVar4 + -0x1a0) = pattern;\n  *(int *)(puVar4 + -0x1b4) = iVar12;\n  *(byte **)(puVar4 + -0x1b8) = pbVar14;\n  *(int *)(puVar4 + -0x1a4) = *piVar6;\n  iVar11 = (*pcVar28)();\n  iVar12 = *(int *)(puVar4 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar20 = puVar4 + -0x1ac;\n    pcVar27 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar4 + -0x1b4;\n    *(undefined4 *)(puVar4 + -0x1ac) = 0;\n    *(undefined4 *)(puVar4 + -0x1a8) = 0;\n    iVar11 = (*pcVar27)(0,puVar24,0,puVar20);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar4 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  string_00 = *(int **)(puVar4 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(string_00);\n  *(byte **)(puVar4 + -0x1d0) = pbVar26;\n  iVar11 = internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))\n  ;\n  iVar12 = *(int *)(puVar4 + -0x1c8);\nLAB_0002b300:\n  iVar13 = *(int *)(puVar4 + -0x1a4);\n  if (iVar13 != *piVar6) {\n    (**(code **)(iVar12 + -0x7b8c))();\n    iVar11 = string_00[8];\n    iVar12 = *string_00;\n    uVar3 = (uint)(iVar11 < iVar12);\n    uVar19 = string_00[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }\n    string_00[8] = iVar12;\n    string_00[7] = (iVar12 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return iVar11;\n}" { (declaration "patternlist *ppVar1;" type_identifier (pointer_declarator "*ppVar1" * identifier) ;) (declaration "patternlist *ppVar2;" type_identifier (pointer_declarator "*ppVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined1 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *string_00;" primitive_type (pointer_declarator "*string_00" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "patternlist *unaff_s1;" type_identifier (pointer_declarator "*unaff_s1" * identifier) ;) (declaration "undefined4 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "uint unaff_s3;" type_identifier identifier ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * 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 *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "byte *pbVar29;" type_identifier (pointer_declarator "*pbVar29" * identifier) ;) (declaration "code *pcVar30;" type_identifier (pointer_declarator "*pcVar30" * identifier) ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "patternlist *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "byte *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "char *local_3c;" primitive_type (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "patternlist *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "patternlist *list;" type_identifier (pointer_declarator "*list" * identifier) ;) (declaration "byte *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "local_50 = in_t9 + 0x391d0;" (assignment_expression "local_50 = in_t9 + 0x391d0" identifier = (binary_expression "in_t9 + 0x391d0" identifier + number_literal)) ;) (expression_statement "puVar21 = *(undefined4 **)(in_t9 + 0x3166c);" (assignment_expression "puVar21 = *(undefined4 **)(in_t9 + 0x3166c)" identifier = (pointer_expression "*(undefined4 **)(in_t9 + 0x3166c)" * (cast_expression "(undefined4 **)(in_t9 + 0x3166c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x3166c)" ( (binary_expression "in_t9 + 0x3166c" identifier + number_literal) ))))) ;) (expression_statement "local_38 = (uint)no_leading_period;" (assignment_expression "local_38 = (uint)no_leading_period" identifier = (cast_expression "(uint)no_leading_period" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar26 = (byte *)(pattern + 1);" (assignment_expression "pbVar26 = (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 = (byte *)*puVar21;" (assignment_expression "local_2c = (byte *)*puVar21" identifier = (cast_expression "(byte *)*puVar21" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) ;) (expression_statement "pbVar14 = (byte *)pattern;" (assignment_expression "pbVar14 = (byte *)pattern" identifier = (cast_expression "(byte *)pattern" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar15 = (byte *)string;" (assignment_expression "pbVar15 = (byte *)string" identifier = (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_3c = string_end;" (assignment_expression "local_3c = string_end" identifier = identifier) ;) (expression_statement "local_44 = (byte *)(**(code **)(in_t9 + 0x315c4))(pattern);" (assignment_expression "local_44 = (byte *)(**(code **)(in_t9 + 0x315c4))(pattern)" identifier = (cast_expression "(byte *)(**(code **)(in_t9 + 0x315c4))(pattern)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x315c4))(pattern)" (parenthesized_expression "(**(code **)(in_t9 + 0x315c4))" ( (pointer_expression "**(code **)(in_t9 + 0x315c4)" * (pointer_expression "*(code **)(in_t9 + 0x315c4)" * (cast_expression "(code **)(in_t9 + 0x315c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x315c4)" ( (binary_expression "in_t9 + 0x315c4" identifier + number_literal) ))))) )) (argument_list "(pattern)" ( identifier ))))) ;) (expression_statement "iVar11 = (int)pattern[1];" (assignment_expression "iVar11 = (int)pattern[1]" identifier = (cast_expression "(int)pattern[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pattern[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = local_50;" (assignment_expression "iVar12 = local_50" identifier = identifier) ;) (expression_statement "puVar4 = auStack_68;" (assignment_expression "puVar4 = auStack_68" identifier = identifier) ;) (if_statement "if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s3 = *(uint *)(local_50 + -0x7fd8);\n    local_34 = (patternlist *)&list;\n    unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);\n    local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\nLAB_00029fdc:\n    do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);\n  }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = 0;\n    unaff_s3 = *(uint *)(local_50 + -0x7fd8);\n    local_34 = (patternlist *)&list;\n    unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);\n    local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;\n    puVar20 = auStack_68;\n    unaff_s6 = pbVar26;\nLAB_00029fdc:\n    do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);\n  }" { (expression_statement "unaff_s5 = 0;" (assignment_expression "unaff_s5 = 0" identifier = number_literal) ;) (expression_statement "unaff_s3 = *(uint *)(local_50 + -0x7fd8);" (assignment_expression "unaff_s3 = *(uint *)(local_50 + -0x7fd8)" identifier = (pointer_expression "*(uint *)(local_50 + -0x7fd8)" * (cast_expression "(uint *)(local_50 + -0x7fd8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x7fd8)" ( (binary_expression "local_50 + -0x7fd8" identifier + 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_s1 = (patternlist *)(uint)(opt - 0x3fU < 2);" (assignment_expression "unaff_s1 = (patternlist *)(uint)(opt - 0x3fU < 2)" identifier = (cast_expression "(patternlist *)(uint)(opt - 0x3fU < 2)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(opt - 0x3fU < 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(opt - 0x3fU < 2)" ( (binary_expression "opt - 0x3fU < 2" (binary_expression "opt - 0x3fU" identifier - number_literal) < number_literal) ))))) ;) (expression_statement "local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc;" (assignment_expression "local_40 = *(int *)(local_50 + -0x7e24) + -0x78dc" identifier = (binary_expression "*(int *)(local_50 + -0x7e24) + -0x78dc" (pointer_expression "*(int *)(local_50 + -0x7e24)" * (cast_expression "(int *)(local_50 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + -0x7e24)" ( (binary_expression "local_50 + -0x7e24" 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) ;) (labeled_statement "LAB_00029fdc:\n    do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);" statement_identifier : (do_statement "do {\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    } while (iVar11 != 0);" do (compound_statement "{\n      puVar4 = puVar20;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }\n    }" { (expression_statement "puVar4 = puVar20;" (assignment_expression "puVar4 = puVar20" identifier = identifier) ;) (if_statement "if (iVar11 == 0x5b) {\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }" if (parenthesized_expression "(iVar11 == 0x5b)" ( (binary_expression "iVar11 == 0x5b" identifier == number_literal) )) (compound_statement "{\n        if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }\n        bVar8 = pbVar26[1];\n        pbVar23 = pbVar26 + 1;\n        if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }\n        if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar14 = (byte *)0x5d;\n        while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }" { (if_statement "if (*(int *)(unaff_s3 - 0x4730) == 0) {\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }" if (parenthesized_expression "(*(int *)(unaff_s3 - 0x4730) == 0)" ( (binary_expression "*(int *)(unaff_s3 - 0x4730) == 0" (pointer_expression "*(int *)(unaff_s3 - 0x4730)" * (cast_expression "(int *)(unaff_s3 - 0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s3 - 0x4730)" ( (binary_expression "unaff_s3 - 0x4730" identifier - number_literal) )))) == number_literal) )) (compound_statement "{\n          iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);\n          uVar17 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar17 = 1;\n          }\n          *(undefined4 *)(unaff_s3 - 0x4730) = uVar17;\n          iVar12 = local_50;\n        }" { (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7be0))(local_40)" identifier = (call_expression "(**(code **)(iVar12 + -0x7be0))(local_40)" (parenthesized_expression "(**(code **)(iVar12 + -0x7be0))" ( (pointer_expression "**(code **)(iVar12 + -0x7be0)" * (pointer_expression "*(code **)(iVar12 + -0x7be0)" * (cast_expression "(code **)(iVar12 + -0x7be0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7be0)" ( (binary_expression "iVar12 + -0x7be0" identifier + number_literal) ))))) )) (argument_list "(local_40)" ( identifier )))) ;) (expression_statement "uVar17 = 0xffffffff;" (assignment_expression "uVar17 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar11 != 0) {\n            uVar17 = 1;\n          }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar17 = 1;\n          }" { (expression_statement "uVar17 = 1;" (assignment_expression "uVar17 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(unaff_s3 - 0x4730) = uVar17;" (assignment_expression "*(undefined4 *)(unaff_s3 - 0x4730) = uVar17" (pointer_expression "*(undefined4 *)(unaff_s3 - 0x4730)" * (cast_expression "(undefined4 *)(unaff_s3 - 0x4730)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s3 - 0x4730)" ( (binary_expression "unaff_s3 - 0x4730" identifier - number_literal) )))) = identifier) ;) (expression_statement "iVar12 = local_50;" (assignment_expression "iVar12 = local_50" identifier = identifier) ;) })) (expression_statement "bVar8 = pbVar26[1];" (assignment_expression "bVar8 = pbVar26[1]" identifier = (subscript_expression "pbVar26[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar26 + 1;" (assignment_expression "pbVar23 = pbVar26 + 1" identifier = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))) {\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }" if (parenthesized_expression "((bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e))))" ( (binary_expression "(bVar8 == 0x21) || ((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))" (parenthesized_expression "(bVar8 == 0x21)" ( (binary_expression "bVar8 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)))" ( (parenthesized_expression "(*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e))" ( (binary_expression "*(int *)(unaff_s3 - 0x4730) < 0 && (bVar8 == 0x5e)" (binary_expression "*(int *)(unaff_s3 - 0x4730) < 0" (pointer_expression "*(int *)(unaff_s3 - 0x4730)" * (cast_expression "(int *)(unaff_s3 - 0x4730)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s3 - 0x4730)" ( (binary_expression "unaff_s3 - 0x4730" identifier - number_literal) )))) < number_literal) && (parenthesized_expression "(bVar8 == 0x5e)" ( (binary_expression "bVar8 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n          bVar8 = pbVar26[2];\n          pbVar23 = pbVar26 + 2;\n        }" { (expression_statement "bVar8 = pbVar26[2];" (assignment_expression "bVar8 = pbVar26[2]" identifier = (subscript_expression "pbVar26[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar26 + 2;" (assignment_expression "pbVar23 = pbVar26 + 2" identifier = (binary_expression "pbVar26 + 2" identifier + number_literal)) ;) })) (if_statement "if (bVar8 == 0x5d) {\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" if (parenthesized_expression "(bVar8 == 0x5d)" ( (binary_expression "bVar8 == 0x5d" identifier == number_literal) )) (compound_statement "{\n          bVar8 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" { (expression_statement "bVar8 = pbVar23[1];" (assignment_expression "bVar8 = pbVar23[1]" identifier = (subscript_expression "pbVar23[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar14 = (byte *)0x5d;" (assignment_expression "pbVar14 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar26 = pbVar23 + 1, bVar8 != 0x5d) {\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\n        }" while (parenthesized_expression "(pbVar26 = pbVar23 + 1, bVar8 != 0x5d)" ( (comma_expression "pbVar26 = pbVar23 + 1, bVar8 != 0x5d" (assignment_expression "pbVar26 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) , (binary_expression "bVar8 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n          if (bVar8 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar26;\n          bVar8 = *pbVar26;\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 "pbVar23 = pbVar26;" (assignment_expression "pbVar23 = pbVar26" identifier = identifier) ;) (expression_statement "bVar8 = *pbVar26;" (assignment_expression "bVar8 = *pbVar26" identifier = (pointer_expression "*pbVar26" * identifier)) ;) })) (expression_statement "iVar11 = (int)(char)pbVar23[1];" (assignment_expression "iVar11 = (int)(char)pbVar23[1]" identifier = (cast_expression "(int)(char)pbVar23[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar23[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar23[1]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }" else (compound_statement "{\n        pbVar14 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar15 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;\n      }" { (expression_statement "pbVar14 = &DAT_c0000601;" (assignment_expression "pbVar14 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar3 = iVar11 - 0x21U & 0xff;" (assignment_expression "uVar3 = iVar11 - 0x21U & 0xff" identifier = (binary_expression "iVar11 - 0x21U & 0xff" (binary_expression "iVar11 - 0x21U" identifier - number_literal) & number_literal)) ;) (expression_statement "pbVar15 = (byte *)(uint)(uVar3 < 0x20);" (assignment_expression "pbVar15 = (byte *)(uint)(uVar3 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar3 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar3 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < 0x20)" ( (binary_expression "uVar3 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (pbVar15 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\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          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];\n        }" { (if_statement "if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" if (parenthesized_expression "((iVar11 == 0x7c) && (unaff_s5 == 0))" ( (binary_expression "(iVar11 == 0x7c) && (unaff_s5 == 0)" (parenthesized_expression "(iVar11 == 0x7c)" ( (binary_expression "iVar11 == 0x7c" identifier == number_literal) )) && (parenthesized_expression "(unaff_s5 == 0)" ( (binary_expression "unaff_s5 == 0" identifier == number_literal) ))) )) (compound_statement "{\n            pbVar23 = local_44;\n            if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar15 = pbVar26 + -(int)unaff_s6;\n            pbVar22 = pbVar26 + 1;\n            iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);\n            puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);\n            ppVar2 = local_34;\n            ppVar1 = local_48;\n            iVar12 = local_50;\n            iVar11 = (int)(char)pbVar26[1];\n            *puVar4 = 0;\n            local_48->next = (patternlist *)0x0;\n            local_34 = ppVar1;\n            ppVar2->next = ppVar1;\n            pbVar14 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar26 = pbVar22;\n            puVar4 = puVar20 + iVar13;\n            puVar20 = puVar20 + iVar13;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" { (expression_statement "pbVar23 = local_44;" (assignment_expression "pbVar23 = local_44" identifier = identifier) ;) (if_statement "if (unaff_s1 == (patternlist *)0x0) {\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }" if (parenthesized_expression "(unaff_s1 == (patternlist *)0x0)" ( (binary_expression "unaff_s1 == (patternlist *)0x0" identifier == (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pbVar23 = pbVar26 + (1 - (int)unaff_s6);\n            }" { (expression_statement "pbVar23 = pbVar26 + (1 - (int)unaff_s6);" (assignment_expression "pbVar23 = pbVar26 + (1 - (int)unaff_s6)" identifier = (binary_expression "pbVar26 + (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)(pbVar23 + 7) & 0xfffffffc) - 4) break;" if (parenthesized_expression "(0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4)" ( (binary_expression "0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4" number_literal < (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + 7)" ( (binary_expression "pbVar23 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pbVar15 = pbVar26 + -(int)unaff_s6;" (assignment_expression "pbVar15 = pbVar26 + -(int)unaff_s6" identifier = (binary_expression "pbVar26 + -(int)unaff_s6" identifier + (unary_expression "-(int)unaff_s6" - (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pbVar22 = pbVar26 + 1;" (assignment_expression "pbVar22 = pbVar26 + 1" identifier = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar13 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + 7)" ( (binary_expression "pbVar23 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "local_48 = (patternlist *)(puVar20 + iVar13 + 0x18);" (assignment_expression "local_48 = (patternlist *)(puVar20 + iVar13 + 0x18)" identifier = (cast_expression "(patternlist *)(puVar20 + iVar13 + 0x18)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar13 + 0x18)" ( (binary_expression "puVar20 + iVar13 + 0x18" (binary_expression "puVar20 + iVar13" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c);" (assignment_expression "puVar4 = (undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c)" identifier = (cast_expression "(undefined1 *)(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar12 + -0x7b7c))(puVar20 + iVar13 + 0x1c)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b7c))" ( (pointer_expression "**(code **)(iVar12 + -0x7b7c)" * (pointer_expression "*(code **)(iVar12 + -0x7b7c)" * (cast_expression "(code **)(iVar12 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b7c)" ( (binary_expression "iVar12 + -0x7b7c" identifier + number_literal) ))))) )) (argument_list "(puVar20 + iVar13 + 0x1c)" ( (binary_expression "puVar20 + iVar13 + 0x1c" (binary_expression "puVar20 + iVar13" identifier + identifier) + number_literal) ))))) ;) (expression_statement "ppVar2 = local_34;" (assignment_expression "ppVar2 = local_34" identifier = identifier) ;) (expression_statement "ppVar1 = local_48;" (assignment_expression "ppVar1 = local_48" identifier = identifier) ;) (expression_statement "iVar12 = local_50;" (assignment_expression "iVar12 = local_50" identifier = identifier) ;) (expression_statement "iVar11 = (int)(char)pbVar26[1];" (assignment_expression "iVar11 = (int)(char)pbVar26[1]" identifier = (cast_expression "(int)(char)pbVar26[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar26[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar26[1]" identifier [ number_literal ])))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "local_48->next = (patternlist *)0x0;" (assignment_expression "local_48->next = (patternlist *)0x0" (field_expression "local_48->next" identifier -> field_identifier) = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = ppVar1;" (assignment_expression "local_34 = ppVar1" identifier = identifier) ;) (expression_statement "ppVar2->next = ppVar1;" (assignment_expression "ppVar2->next = ppVar1" (field_expression "ppVar2->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar14 = unaff_s6;" (assignment_expression "pbVar14 = unaff_s6" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar22;" (assignment_expression "unaff_s6 = pbVar22" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar22;" (assignment_expression "pbVar26 = pbVar22" identifier = identifier) ;) (expression_statement "puVar4 = puVar20 + iVar13;" (assignment_expression "puVar4 = puVar20 + iVar13" identifier = (binary_expression "puVar20 + iVar13" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + iVar13;" (assignment_expression "puVar20 = puVar20 + iVar13" identifier = (binary_expression "puVar20 + iVar13" identifier + identifier)) ;) (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00029fdc;" goto statement_identifier ;) })) (labeled_statement "LAB_0002a198:\n          iVar11 = (int)(char)pbVar26[1];" statement_identifier : (expression_statement "iVar11 = (int)(char)pbVar26[1];" (assignment_expression "iVar11 = (int)(char)pbVar26[1]" identifier = (cast_expression "(int)(char)pbVar26[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar26[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar26[1]" identifier [ number_literal ])))) ;)) }) (else_clause "else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" else (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar26[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" { (while_statement "while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar3 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar3 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar3 & 0x1f)" number_literal >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar11 = (int)(char)pbVar26[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar15 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar26 = pbVar26 + 1;\n            uVar3 = 7;\n          }" { (expression_statement "iVar11 = (int)(char)pbVar26[1];" (assignment_expression "iVar11 = (int)(char)pbVar26[1]" identifier = (cast_expression "(int)(char)pbVar26[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar26[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar26[1]" identifier [ number_literal ])))) ;) (if_statement "if (iVar11 != 0x28) goto joined_r0x0002a19c;" if (parenthesized_expression "(iVar11 != 0x28)" ( (binary_expression "iVar11 != 0x28" identifier != number_literal) )) (goto_statement "goto joined_r0x0002a19c;" goto statement_identifier ;)) (expression_statement "pbVar15 = (byte *)0x1;" (assignment_expression "pbVar15 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" identifier = (binary_expression "unaff_s5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar26 = pbVar26 + 1;" (assignment_expression "pbVar26 = pbVar26 + 1" identifier = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar11 != 0x29) goto LAB_0002a198;" if (parenthesized_expression "(iVar11 != 0x29)" ( (binary_expression "iVar11 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_0002a198;" goto statement_identifier ;)) (if_statement "if (unaff_s5 == 0) {\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }" if (parenthesized_expression "(unaff_s5 == 0)" ( (binary_expression "unaff_s5 == 0" identifier == number_literal) )) (compound_statement "{\n            if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }\n            break;\n          }" { (if_statement "if (1 < opt - 0x3fU) {\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }" if (parenthesized_expression "(1 < opt - 0x3fU)" ( (binary_expression "1 < opt - 0x3fU" number_literal < (binary_expression "opt - 0x3fU" identifier - number_literal)) )) (compound_statement "{\n              local_44 = pbVar26 + (1 - (int)unaff_s6);\n            }" { (expression_statement "local_44 = pbVar26 + (1 - (int)unaff_s6);" (assignment_expression "local_44 = pbVar26 + (1 - (int)unaff_s6)" identifier = (binary_expression "pbVar26 + (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 (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }" if (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c)" ( (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 + 7)" ( (binary_expression "local_44 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal) < number_literal) )) (compound_statement "{\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar4 = puVar20 + iVar11;\n              puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);\n              ppVar1 = local_34;\n              iVar12 = local_50;\n              *puVar24 = 0;\n              ((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;\n              ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);\n              unaff_s1 = list;\n              if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }\n              pbVar15 = (byte *)0x454;\n              pcVar27 = *(code **)(iVar12 + -0x7ce0);\n              string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);\n              pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);\n              pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);\n              (*pcVar27)();\n              goto LAB_0002a608;\n            }" { (expression_statement "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 + 7)" ( (binary_expression "local_44 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar4 = puVar20 + iVar11;" (assignment_expression "puVar4 = puVar20 + iVar11" identifier = (binary_expression "puVar20 + iVar11" identifier + identifier)) ;) (expression_statement "puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6);" (assignment_expression "puVar24 = (undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)\n                        (**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar12 + -0x7b7c))\n                                  (puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b7c))" ( (pointer_expression "**(code **)(iVar12 + -0x7b7c)" * (pointer_expression "*(code **)(iVar12 + -0x7b7c)" * (cast_expression "(code **)(iVar12 + -0x7b7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b7c)" ( (binary_expression "iVar12 + -0x7b7c" identifier + number_literal) ))))) )) (argument_list "(puVar20 + iVar11 + 0x1c,unaff_s6,(int)pbVar26 - (int)unaff_s6)" ( (binary_expression "puVar20 + iVar11 + 0x1c" (binary_expression "puVar20 + iVar11" identifier + identifier) + number_literal) , identifier , (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)) ))))) ;) (expression_statement "ppVar1 = local_34;" (assignment_expression "ppVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar12 = local_50;" (assignment_expression "iVar12 = local_50" identifier = identifier) ;) (expression_statement "*puVar24 = 0;" (assignment_expression "*puVar24 = 0" (pointer_expression "*puVar24" * identifier) = number_literal) ;) (expression_statement "((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0;" (assignment_expression "((patternlist *)(puVar20 + iVar11 + 0x18))->next = (patternlist *)0x0" (field_expression "((patternlist *)(puVar20 + iVar11 + 0x18))->next" (parenthesized_expression "((patternlist *)(puVar20 + iVar11 + 0x18))" ( (cast_expression "(patternlist *)(puVar20 + iVar11 + 0x18)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar11 + 0x18)" ( (binary_expression "puVar20 + iVar11 + 0x18" (binary_expression "puVar20 + iVar11" identifier + identifier) + number_literal) ))) )) -> field_identifier) = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18);" (assignment_expression "ppVar1->next = (patternlist *)(puVar20 + iVar11 + 0x18)" (field_expression "ppVar1->next" identifier -> field_identifier) = (cast_expression "(patternlist *)(puVar20 + iVar11 + 0x18)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + iVar11 + 0x18)" ( (binary_expression "puVar20 + iVar11 + 0x18" (binary_expression "puVar20 + iVar11" identifier + identifier) + number_literal) )))) ;) (expression_statement "unaff_s1 = list;" (assignment_expression "unaff_s1 = list" identifier = identifier) ;) (if_statement "if (list != (patternlist *)0x0) {\n                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\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                if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);\n              }" { (if_statement "if (pbVar26[-1] == 0x29) {\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }" if (parenthesized_expression "(pbVar26[-1] == 0x29)" ( (binary_expression "pbVar26[-1] == 0x29" (subscript_expression "pbVar26[-1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  unaff_s3 = opt - 0x21;\n                  if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }\n                  (**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);\n                }" { (expression_statement "unaff_s3 = opt - 0x21;" (assignment_expression "unaff_s3 = opt - 0x21" identifier = (binary_expression "opt - 0x21" identifier - number_literal)) ;) (if_statement "if (unaff_s3 < 0x20) {\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }" if (parenthesized_expression "(unaff_s3 < 0x20)" ( (binary_expression "unaff_s3 < 0x20" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0002a2a0. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n                    iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();\n                    return iVar11;\n                  }" { comment comment (expression_statement "iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))();" (assignment_expression "iVar11 = (*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))()" identifier = (call_expression "(*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))()" (parenthesized_expression "(*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12))" ( (pointer_expression "*(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12)" * (cast_expression "(code *)(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12)" ( (binary_expression "*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                ) + iVar12" (pointer_expression "*(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                )" * (cast_expression "(int *)(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4\n                                                )" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x76e0 + unaff_s3 * 4" (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x76e0" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) + (binary_expression "unaff_s3 * 4" identifier * number_literal)) )))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) (expression_statement "(**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570);" (call_expression "(**(code **)(iVar12 + -0x7ce0))\n                            (*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar12 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar12 + -0x7ce0)" * (pointer_expression "*(code **)(iVar12 + -0x7ce0)" * (cast_expression "(code **)(iVar12 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7ce0)" ( (binary_expression "iVar12 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar12 + -0x7e24) + -0x7898,\n                             *(int *)(iVar12 + -0x7e24) + -0x78cc,0x4ad,\n                             *(int *)(iVar12 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7898" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570);" (call_expression "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570)" (parenthesized_expression "(**(code **)(iVar12 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar12 + -0x7ce0)" * (pointer_expression "*(code **)(iVar12 + -0x7ce0)" * (cast_expression "(code **)(iVar12 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7ce0)" ( (binary_expression "iVar12 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar12 + -0x7e24) + -0x78ac,*(int *)(iVar12 + -0x7e24) + -0x78cc\n                           ,0x455,*(int *)(iVar12 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x78ac" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "pbVar15 = (byte *)0x454;" (assignment_expression "pbVar15 = (byte *)0x454" identifier = (cast_expression "(byte *)0x454" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar27 = *(code **)(iVar12 + -0x7ce0);" (assignment_expression "pcVar27 = *(code **)(iVar12 + -0x7ce0)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7ce0)" * (cast_expression "(code **)(iVar12 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7ce0)" ( (binary_expression "iVar12 + -0x7ce0" identifier + number_literal) ))))) ;) (expression_statement "string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570);" (assignment_expression "string_end = (char *)(*(int *)(iVar12 + -0x7e24) + -0x7570)" identifier = (cast_expression "(char *)(*(int *)(iVar12 + -0x7e24) + -0x7570)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar12 + -0x7e24) + -0x7570)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7570" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc);" (assignment_expression "pbVar14 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc)" identifier = (cast_expression "(byte *)(*(int *)(iVar12 + -0x7e24) + -0x78cc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar12 + -0x7e24) + -0x78cc)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x78cc" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc);" (assignment_expression "pbVar23 = (byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc)" identifier = (cast_expression "(byte *)(*(int *)(iVar12 + -0x7e24) + -0x78bc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar12 + -0x7e24) + -0x78bc)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x78bc" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar27)();" (call_expression "(*pcVar27)()" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0002a608;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "iVar11 = (int)(char)pbVar26[1];" (assignment_expression "iVar11 = (int)(char)pbVar26[1]" identifier = (cast_expression "(int)(char)pbVar26[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar26[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar26[1]" identifier [ number_literal ])))) ;) (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) }))) (labeled_statement "joined_r0x0002a19c:\n        pbVar26 = pbVar26 + 1;" statement_identifier : (expression_statement "pbVar26 = pbVar26 + 1;" (assignment_expression "pbVar26 = pbVar26 + 1" identifier = (binary_expression "pbVar26 + 1" identifier + number_literal)) ;)) }))) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;)) })) (labeled_statement "LAB_0002a034:\n  pcVar27 = *(code **)(iVar12 + -0x7b8c);" statement_identifier : (expression_statement "pcVar27 = *(code **)(iVar12 + -0x7b8c);" (assignment_expression "pcVar27 = *(code **)(iVar12 + -0x7b8c)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b8c)" * (cast_expression "(code **)(iVar12 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b8c)" ( (binary_expression "iVar12 + -0x7b8c" identifier + number_literal) ))))) ;)) (expression_statement "pbVar23 = local_2c;" (assignment_expression "pbVar23 = local_2c" identifier = identifier) ;) (if_statement "if (local_2c == (byte *)*puVar21) {\n    return -1;\n  }" if (parenthesized_expression "(local_2c == (byte *)*puVar21)" ( (binary_expression "local_2c == (byte *)*puVar21" identifier == (cast_expression "(byte *)*puVar21" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) )) (compound_statement "{\n    return -1;\n  }" { (return_statement "return -1;" return number_literal ;) })) (labeled_statement "LAB_0002a608:\n  pcVar30 = internal_fnmatch;" statement_identifier : (expression_statement "pcVar30 = internal_fnmatch;" (assignment_expression "pcVar30 = internal_fnmatch" identifier = identifier) ;)) (expression_statement "(*pcVar27)();" (call_expression "(*pcVar27)()" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar28 = pcVar27 + 0x38ae0;" (assignment_expression "pcVar28 = pcVar27 + 0x38ae0" identifier = (binary_expression "pcVar27 + 0x38ae0" identifier + number_literal)) ;) (expression_statement "puVar5 = *(undefined4 **)(pcVar27 + 0x30f7c);" (assignment_expression "puVar5 = *(undefined4 **)(pcVar27 + 0x30f7c)" identifier = (pointer_expression "*(undefined4 **)(pcVar27 + 0x30f7c)" * (cast_expression "(undefined4 **)(pcVar27 + 0x30f7c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x30f7c)" ( (binary_expression "pcVar27 + 0x30f7c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar4 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar4 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar4 + -8)" * (cast_expression "(undefined1 **)(puVar4 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -8)" ( (binary_expression "puVar4 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar4 + -0x1c) = unaff_s3;" (assignment_expression "*(uint *)(puVar4 + -0x1c) = unaff_s3" (pointer_expression "*(uint *)(puVar4 + -0x1c)" * (cast_expression "(uint *)(puVar4 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c)" ( (binary_expression "puVar4 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -0x160) = pcVar28;" (assignment_expression "*(code **)(puVar4 + -0x160) = pcVar28" (pointer_expression "*(code **)(puVar4 + -0x160)" * (cast_expression "(code **)(puVar4 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x160)" ( (binary_expression "puVar4 + -0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -4) = pcVar30;" (assignment_expression "*(code **)(puVar4 + -4) = pcVar30" (pointer_expression "*(code **)(puVar4 + -4)" * (cast_expression "(code **)(puVar4 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -4)" ( (binary_expression "puVar4 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0xc) = pbVar26;" (assignment_expression "*(byte **)(puVar4 + -0xc) = pbVar26" (pointer_expression "*(byte **)(puVar4 + -0xc)" * (cast_expression "(byte **)(puVar4 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0xc)" ( (binary_expression "puVar4 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar4 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar4 + -0x10)" * (cast_expression "(byte **)(puVar4 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x10)" ( (binary_expression "puVar4 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar4 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar4 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar4 + -0x14)" * (cast_expression "(int *)(puVar4 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14)" ( (binary_expression "puVar4 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar4 + -0x18) = string;" (assignment_expression "*(char **)(puVar4 + -0x18) = string" (pointer_expression "*(char **)(puVar4 + -0x18)" * (cast_expression "(char **)(puVar4 + -0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x18)" ( (binary_expression "puVar4 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar4 + -0x20) = puVar21;" (assignment_expression "*(undefined4 **)(puVar4 + -0x20) = puVar21" (pointer_expression "*(undefined4 **)(puVar4 + -0x20)" * (cast_expression "(undefined4 **)(puVar4 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x20)" ( (binary_expression "puVar4 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(patternlist **)(puVar4 + -0x24) = unaff_s1;" (assignment_expression "*(patternlist **)(puVar4 + -0x24) = unaff_s1" (pointer_expression "*(patternlist **)(puVar4 + -0x24)" * (cast_expression "(patternlist **)(puVar4 + -0x24)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x24)" ( (binary_expression "puVar4 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar4 + -0x28) = pattern;" (assignment_expression "*(char **)(puVar4 + -0x28) = pattern" (pointer_expression "*(char **)(puVar4 + -0x28)" * (cast_expression "(char **)(puVar4 + -0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x28)" ( (binary_expression "puVar4 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar4 + -0x144) = puVar5;" (assignment_expression "*(undefined4 **)(puVar4 + -0x144) = puVar5" (pointer_expression "*(undefined4 **)(puVar4 + -0x144)" * (cast_expression "(undefined4 **)(puVar4 + -0x144)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x144)" ( (binary_expression "puVar4 + -0x144" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0x154) = pbVar23 + 1;" (assignment_expression "*(byte **)(puVar4 + -0x154) = pbVar23 + 1" (pointer_expression "*(byte **)(puVar4 + -0x154)" * (cast_expression "(byte **)(puVar4 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x154)" ( (binary_expression "puVar4 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "pbVar22 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar23" identifier = (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x2c) = *puVar5;" (assignment_expression "*(undefined4 *)(puVar4 + -0x2c) = *puVar5" (pointer_expression "*(undefined4 *)(puVar4 + -0x2c)" * (cast_expression "(undefined4 *)(puVar4 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x2c)" ( (binary_expression "puVar4 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar11 = *(int *)(pcVar27 + 0x30cbc);" (assignment_expression "iVar11 = *(int *)(pcVar27 + 0x30cbc)" identifier = (pointer_expression "*(int *)(pcVar27 + 0x30cbc)" * (cast_expression "(int *)(pcVar27 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar27 + 0x30cbc)" ( (binary_expression "pcVar27 + 0x30cbc" identifier + number_literal) ))))) ;) (expression_statement "pbVar26 = pbVar15;" (assignment_expression "pbVar26 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar29 = pbVar14;" (assignment_expression "pbVar29 = pbVar14" identifier = identifier) ;) (if_statement "if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar4 + 0x10);\n    unaff_s1 = (patternlist *)(uVar3 & 2);\n    pattern = (char *)(uVar3 & 0x10);\n    *(uint *)(puVar4 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);\n    *(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;\n    *(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;\n    string = (char *)pbVar23;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" if (parenthesized_expression "(pbVar22 != (byte *)0x0)" ( (binary_expression "pbVar22 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = *(uint *)(puVar4 + 0x10);\n    unaff_s1 = (patternlist *)(uVar3 & 2);\n    pattern = (char *)(uVar3 & 0x10);\n    *(uint *)(puVar4 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);\n    *(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;\n    *(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;\n    string = (char *)pbVar23;\n    unaff_s6 = (byte *)string_end;\n    do {\n      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" { (expression_statement "uVar3 = *(uint *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar4 + 0x10)" * (cast_expression "(uint *)(puVar4 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = (patternlist *)(uVar3 & 2);" (assignment_expression "unaff_s1 = (patternlist *)(uVar3 & 2)" identifier = (cast_expression "(patternlist *)(uVar3 & 2)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )))) ;) (expression_statement "pattern = (char *)(uVar3 & 0x10);" (assignment_expression "pattern = (char *)(uVar3 & 0x10)" identifier = (cast_expression "(char *)(uVar3 & 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar4 + -0x140) = uVar3 & 5;" (assignment_expression "*(uint *)(puVar4 + -0x140) = uVar3 & 5" (pointer_expression "*(uint *)(puVar4 + -0x140)" * (cast_expression "(uint *)(puVar4 + -0x140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x140)" ( (binary_expression "puVar4 + -0x140" identifier + number_literal) )))) = (binary_expression "uVar3 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar4 + -0x148) = *(undefined4 *)(pcVar27 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar4 + -0x148)" * (cast_expression "(undefined4 *)(puVar4 + -0x148)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x148)" ( (binary_expression "puVar4 + -0x148" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(pcVar27 + 0x30b08)" * (cast_expression "(undefined4 *)(pcVar27 + 0x30b08)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar27 + 0x30b08)" ( (binary_expression "pcVar27 + 0x30b08" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar4 + -0x14c) = iVar11 + -0x7660;" (assignment_expression "*(int *)(puVar4 + -0x14c) = iVar11 + -0x7660" (pointer_expression "*(int *)(puVar4 + -0x14c)" * (cast_expression "(int *)(puVar4 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14c)" ( (binary_expression "puVar4 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar11 + -0x7660" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar4 + -0x138) = *(int *)(pcVar27 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar4 + -0x138)" * (cast_expression "(int *)(puVar4 + -0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x138)" ( (binary_expression "puVar4 + -0x138" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar27 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(pcVar27 + 0x30d80)" * (cast_expression "(int *)(pcVar27 + 0x30d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar27 + 0x30d80)" ( (binary_expression "pcVar27 + 0x30d80" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar4 + -0x13c) = *(int *)(pcVar27 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar4 + -0x13c)" * (cast_expression "(int *)(puVar4 + -0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x13c)" ( (binary_expression "puVar4 + -0x13c" identifier + number_literal) )))) = (binary_expression "*(int *)(pcVar27 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(pcVar27 + 0x30cbc)" * (cast_expression "(int *)(pcVar27 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar27 + 0x30cbc)" ( (binary_expression "pcVar27 + 0x30cbc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "string = (char *)pbVar23;" (assignment_expression "string = (char *)pbVar23" identifier = (cast_expression "(char *)pbVar23" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) 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      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    } while (pbVar22 != (byte *)0x0);" do (compound_statement "{\n      pbVar23 = pbVar22;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar29 == pbVar15) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar29;\n      if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      string = *(char **)(puVar4 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)(byte)*string;\n      pbVar29 = pbVar29 + 1;\n      *(byte **)(puVar4 + -0x154) = (byte *)string + 1;\n    }" { (expression_statement "pbVar23 = pbVar22;" (assignment_expression "pbVar23 = pbVar22" identifier = identifier) ;) (if_statement "if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }" if (parenthesized_expression "(pattern != (char *)0x0)" ( (binary_expression "pattern != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);\n      }" { (expression_statement "piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();" (assignment_expression "piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar28 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar28 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar28 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar28 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar28 + -0x7cdc)" * (cast_expression "(code **)(pcVar28 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + -0x7cdc)" ( (binary_expression "pcVar28 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar28 = *(code **)(puVar4 + -0x160);" (assignment_expression "pcVar28 = *(code **)(puVar4 + -0x160)" identifier = (pointer_expression "*(code **)(puVar4 + -0x160)" * (cast_expression "(code **)(puVar4 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x160)" ( (binary_expression "puVar4 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3);" (assignment_expression "pbVar23 = (byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3)" identifier = (binary_expression "(byte *)(uint)*(byte *)(*piVar6 + (int)pbVar22 * 4 + 3)" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*piVar6 + (int)pbVar22 * 4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar6 + (int)pbVar22 * 4 + 3)" ( (binary_expression "*piVar6 + (int)pbVar22 * 4 + 3" (binary_expression "*piVar6 + (int)pbVar22 * 4" (pointer_expression "*piVar6" * identifier) + (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))) ;) })) (if_statement "if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }" if (parenthesized_expression "(((uint)(pbVar23 + -0x21) & 0xff) < 0x3c)" ( (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + -0x21)" ( (binary_expression "pbVar23 + -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        iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return iVar11;\n      }" { comment comment (expression_statement "iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();" (assignment_expression "iVar11 = (*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" identifier = (call_expression "(*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)))" ( (pointer_expression "*(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4))" * (parenthesized_expression "(pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4))" ( (binary_expression "pcVar28 +\n                   *(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)" * (cast_expression "(int *)(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4)" ( (binary_expression "*(int *)(puVar4 + -0x14c) + ((uint)(pbVar23 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar4 + -0x14c)" * (cast_expression "(int *)(puVar4 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x14c)" ( (binary_expression "puVar4 + -0x14c" identifier + number_literal) )))) + (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + -0x21)" ( (binary_expression "pbVar23 + -0x21" identifier + number_literal) ))) & number_literal) )) * number_literal)) ))))) ))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "pbVar22 = pbVar23;" (assignment_expression "pbVar22 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar29 == pbVar15) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar29 == pbVar15)" ( (binary_expression "pbVar29 == pbVar15" identifier == identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar22 = (byte *)(uint)*pbVar29;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar29" identifier = (binary_expression "(byte *)(uint)*pbVar29" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if (pattern != (char *)0x0) {\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }" if (parenthesized_expression "(pattern != (char *)0x0)" ( (binary_expression "pattern != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();\n        pcVar28 = *(code **)(puVar4 + -0x160);\n        pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);\n      }" { (expression_statement "piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))();" (assignment_expression "piVar6 = (int *)(**(code **)(pcVar28 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(pcVar28 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar28 + -0x7cdc))()" (parenthesized_expression "(**(code **)(pcVar28 + -0x7cdc))" ( (pointer_expression "**(code **)(pcVar28 + -0x7cdc)" * (pointer_expression "*(code **)(pcVar28 + -0x7cdc)" * (cast_expression "(code **)(pcVar28 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + -0x7cdc)" ( (binary_expression "pcVar28 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pcVar28 = *(code **)(puVar4 + -0x160);" (assignment_expression "pcVar28 = *(code **)(puVar4 + -0x160)" identifier = (pointer_expression "*(code **)(puVar4 + -0x160)" * (cast_expression "(code **)(puVar4 + -0x160)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x160)" ( (binary_expression "puVar4 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4);" (assignment_expression "pbVar22 = *(byte **)(*piVar6 + (int)pbVar22 * 4)" identifier = (pointer_expression "*(byte **)(*piVar6 + (int)pbVar22 * 4)" * (cast_expression "(byte **)(*piVar6 + (int)pbVar22 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar6 + (int)pbVar22 * 4)" ( (binary_expression "*piVar6 + (int)pbVar22 * 4" (pointer_expression "*piVar6" * identifier) + (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = pbVar23;" (assignment_expression "unaff_s6 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar22 != pbVar23) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar22 != pbVar23)" ( (binary_expression "pbVar22 != pbVar23" identifier != identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "string = *(char **)(puVar4 + -0x154);" (assignment_expression "string = *(char **)(puVar4 + -0x154)" identifier = (pointer_expression "*(char **)(puVar4 + -0x154)" * (cast_expression "(char **)(puVar4 + -0x154)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x154)" ( (binary_expression "puVar4 + -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 "pbVar22 = (byte *)(uint)(byte)*string;" (assignment_expression "pbVar22 = (byte *)(uint)(byte)*string" identifier = (binary_expression "(byte *)(uint)(byte)*string" (cast_expression "(byte *)(uint)(byte)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier )))) * identifier)) ;) (expression_statement "pbVar29 = pbVar29 + 1;" (assignment_expression "pbVar29 = pbVar29 + 1" identifier = (binary_expression "pbVar29 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar4 + -0x154) = (byte *)string + 1;" (assignment_expression "*(byte **)(puVar4 + -0x154) = (byte *)string + 1" (pointer_expression "*(byte **)(puVar4 + -0x154)" * (cast_expression "(byte **)(puVar4 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x154)" ( (binary_expression "puVar4 + -0x154" identifier + number_literal) )))) = (binary_expression "(byte *)string + 1" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal)) ;) }) while (parenthesized_expression "(pbVar22 != (byte *)0x0)" ( (binary_expression "pbVar22 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (pbVar29 != pbVar15) {\n    string = (char *)(*(uint *)(puVar4 + 0x10) & 8);\n    if ((byte *)string == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar29 != pbVar15)" ( (binary_expression "pbVar29 != pbVar15" identifier != identifier) )) (compound_statement "{\n    string = (char *)(*(uint *)(puVar4 + 0x10) & 8);\n    if ((byte *)string == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }\n  }" { (expression_statement "string = (char *)(*(uint *)(puVar4 + 0x10) & 8);" (assignment_expression "string = (char *)(*(uint *)(puVar4 + 0x10) & 8)" identifier = (cast_expression "(char *)(*(uint *)(puVar4 + 0x10) & 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar4 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar4 + 0x10) & 8" (pointer_expression "*(uint *)(puVar4 + 0x10)" * (cast_expression "(uint *)(puVar4 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if ((byte *)string == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\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      uVar3 = 1;\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }" else (compound_statement "{\n      uVar3 = (uint)(*pbVar29 != 0x2f);\n    }" { (expression_statement "uVar3 = (uint)(*pbVar29 != 0x2f);" (assignment_expression "uVar3 = (uint)(*pbVar29 != 0x2f)" identifier = (call_expression "(uint)(*pbVar29 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 != 0x2f)" ( (binary_expression "*pbVar29 != 0x2f" (pointer_expression "*pbVar29" * identifier) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_0002a8e4:\n  iVar12 = *(int *)(puVar4 + -0x2c);" statement_identifier : (expression_statement "iVar12 = *(int *)(puVar4 + -0x2c);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar4 + -0x2c)" * (cast_expression "(int *)(puVar4 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x2c)" ( (binary_expression "puVar4 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 == **(int **)(puVar4 + -0x144)) {\n    return uVar3;\n  }" if (parenthesized_expression "(iVar12 == **(int **)(puVar4 + -0x144))" ( (binary_expression "iVar12 == **(int **)(puVar4 + -0x144)" identifier == (pointer_expression "**(int **)(puVar4 + -0x144)" * (pointer_expression "*(int **)(puVar4 + -0x144)" * (cast_expression "(int **)(puVar4 + -0x144)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x144)" ( (binary_expression "puVar4 + -0x144" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar27 = *(code **)(pcVar28 + -0x7b8c);" (assignment_expression "pcVar27 = *(code **)(pcVar28 + -0x7b8c)" identifier = (pointer_expression "*(code **)(pcVar28 + -0x7b8c)" * (cast_expression "(code **)(pcVar28 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + -0x7b8c)" ( (binary_expression "pcVar28 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar30 = rpl_fnmatch;" (assignment_expression "pcVar30 = rpl_fnmatch" identifier = identifier) ;) (expression_statement "(*pcVar27)();" (call_expression "(*pcVar27)()" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar28 = *(code **)(pcVar27 + 0x302e0);" (assignment_expression "pcVar28 = *(code **)(pcVar27 + 0x302e0)" identifier = (pointer_expression "*(code **)(pcVar27 + 0x302e0)" * (cast_expression "(code **)(pcVar27 + 0x302e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x302e0)" ( (binary_expression "pcVar27 + 0x302e0" identifier + number_literal) ))))) ;) (expression_statement "*(patternlist **)(puVar4 + -0x19c) = unaff_s1;" (assignment_expression "*(patternlist **)(puVar4 + -0x19c) = unaff_s1" (pointer_expression "*(patternlist **)(puVar4 + -0x19c)" * (cast_expression "(patternlist **)(puVar4 + -0x19c)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x19c)" ( (binary_expression "puVar4 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar6 = *(int **)(pcVar27 + 0x30338);" (assignment_expression "piVar6 = *(int **)(pcVar27 + 0x30338)" identifier = (pointer_expression "*(int **)(pcVar27 + 0x30338)" * (cast_expression "(int **)(pcVar27 + 0x30338)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x30338)" ( (binary_expression "pcVar27 + 0x30338" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar4 + -0x180) = pbVar29;" (assignment_expression "*(byte **)(puVar4 + -0x180) = pbVar29" (pointer_expression "*(byte **)(puVar4 + -0x180)" * (cast_expression "(byte **)(puVar4 + -0x180)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x180)" ( (binary_expression "puVar4 + -0x180" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0x198) = pbVar22;" (assignment_expression "*(byte **)(puVar4 + -0x198) = pbVar22" (pointer_expression "*(byte **)(puVar4 + -0x198)" * (cast_expression "(byte **)(puVar4 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x198)" ( (binary_expression "puVar4 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar4 + -0x1c8) = pcVar27 + 0x37e9c;" (assignment_expression "*(code **)(puVar4 + -0x1c8) = pcVar27 + 0x37e9c" (pointer_expression "*(code **)(puVar4 + -0x1c8)" * (cast_expression "(code **)(puVar4 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar27 + 0x37e9c" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar4 + -0x17c) = pcVar30;" (assignment_expression "*(code **)(puVar4 + -0x17c) = pcVar30" (pointer_expression "*(code **)(puVar4 + -0x17c)" * (cast_expression "(code **)(puVar4 + -0x17c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x17c)" ( (binary_expression "puVar4 + -0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar4 + -0x184) = iVar11;" (assignment_expression "*(int *)(puVar4 + -0x184) = iVar11" (pointer_expression "*(int *)(puVar4 + -0x184)" * (cast_expression "(int *)(puVar4 + -0x184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x184)" ( (binary_expression "puVar4 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar4 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar4 + -0x188)" * (cast_expression "(byte **)(puVar4 + -0x188)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x188)" ( (binary_expression "puVar4 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar4 + -0x18c) = unaff_s5;" (assignment_expression "*(int *)(puVar4 + -0x18c) = unaff_s5" (pointer_expression "*(int *)(puVar4 + -0x18c)" * (cast_expression "(int *)(puVar4 + -0x18c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x18c)" ( (binary_expression "puVar4 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar4 + -400) = string;" (assignment_expression "*(char **)(puVar4 + -400) = string" (pointer_expression "*(char **)(puVar4 + -400)" * (cast_expression "(char **)(puVar4 + -400)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -400)" ( (binary_expression "puVar4 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0x194) = pbVar15;" (assignment_expression "*(byte **)(puVar4 + -0x194) = pbVar15" (pointer_expression "*(byte **)(puVar4 + -0x194)" * (cast_expression "(byte **)(puVar4 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x194)" ( (binary_expression "puVar4 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar4 + -0x1a0) = pattern;" (assignment_expression "*(char **)(puVar4 + -0x1a0) = pattern" (pointer_expression "*(char **)(puVar4 + -0x1a0)" * (cast_expression "(char **)(puVar4 + -0x1a0)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1a0)" ( (binary_expression "puVar4 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar4 + -0x1b4) = iVar12;" (assignment_expression "*(int *)(puVar4 + -0x1b4) = iVar12" (pointer_expression "*(int *)(puVar4 + -0x1b4)" * (cast_expression "(int *)(puVar4 + -0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1b4)" ( (binary_expression "puVar4 + -0x1b4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar4 + -0x1b8) = pbVar14;" (assignment_expression "*(byte **)(puVar4 + -0x1b8) = pbVar14" (pointer_expression "*(byte **)(puVar4 + -0x1b8)" * (cast_expression "(byte **)(puVar4 + -0x1b8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1b8)" ( (binary_expression "puVar4 + -0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar4 + -0x1a4) = *piVar6;" (assignment_expression "*(int *)(puVar4 + -0x1a4) = *piVar6" (pointer_expression "*(int *)(puVar4 + -0x1a4)" * (cast_expression "(int *)(puVar4 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1a4)" ( (binary_expression "puVar4 + -0x1a4" identifier + number_literal) )))) = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "iVar11 = (*pcVar28)();" (assignment_expression "iVar11 = (*pcVar28)()" identifier = (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 1) {\n    puVar20 = puVar4 + -0x1ac;\n    pcVar27 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar4 + -0x1b4;\n    *(undefined4 *)(puVar4 + -0x1ac) = 0;\n    *(undefined4 *)(puVar4 + -0x1a8) = 0;\n    iVar11 = (*pcVar27)(0,puVar24,0,puVar20);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar4 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" if (parenthesized_expression "(iVar11 != 1)" ( (binary_expression "iVar11 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar20 = puVar4 + -0x1ac;\n    pcVar27 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar4 + -0x1b4;\n    *(undefined4 *)(puVar4 + -0x1ac) = 0;\n    *(undefined4 *)(puVar4 + -0x1a8) = 0;\n    iVar11 = (*pcVar27)(0,puVar24,0,puVar20);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar4 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" { (expression_statement "puVar20 = puVar4 + -0x1ac;" (assignment_expression "puVar20 = puVar4 + -0x1ac" identifier = (binary_expression "puVar4 + -0x1ac" identifier + number_literal)) ;) (expression_statement "pcVar27 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar27 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "puVar24 = puVar4 + -0x1b4;" (assignment_expression "puVar24 = puVar4 + -0x1b4" identifier = (binary_expression "puVar4 + -0x1b4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar4 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1ac)" ( (binary_expression "puVar4 + -0x1ac" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar4 + -0x1a8)" * (cast_expression "(undefined4 *)(puVar4 + -0x1a8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1a8)" ( (binary_expression "puVar4 + -0x1a8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar27)(0,puVar24,0,puVar20);" (assignment_expression "iVar11 = (*pcVar27)(0,puVar24,0,puVar20)" identifier = (call_expression "(*pcVar27)(0,puVar24,0,puVar20)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(0,puVar24,0,puVar20)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "uVar3 = iVar11 + 1;" (assignment_expression "uVar3 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n      uVar17 = 0x129;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar25 = (int *)(puVar4 + -0x1b8);\n      string_00 = piVar25;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);\n      iVar13 = iVar11 + 1;\n      iVar12 = *(int *)(puVar4 + -0x1c8);\n      if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" { (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" ( (pointer_expression "**(code **)(iVar12 + -0x7b68)" * (pointer_expression "*(code **)(iVar12 + -0x7b68)" * (cast_expression "(code **)(iVar12 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b68)" ( (binary_expression "iVar12 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "uVar17 = 0x129;" (assignment_expression "uVar17 = 0x129" identifier = number_literal) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) goto LAB_0002b570;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;)) (expression_statement "piVar25 = (int *)(puVar4 + -0x1b8);" (assignment_expression "piVar25 = (int *)(puVar4 + -0x1b8)" identifier = (cast_expression "(int *)(puVar4 + -0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1b8)" ( (binary_expression "puVar4 + -0x1b8" identifier + number_literal) )))) ;) (expression_statement "string_00 = piVar25;" (assignment_expression "string_00 = piVar25" identifier = identifier) ;) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b28))(0,piVar25,0,puVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(0,piVar25,0,puVar20)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "iVar13 = iVar11 + 1;" (assignment_expression "iVar13 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 != 0) {\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar13;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }\nLAB_0002b490:\n        iVar11 = -1;\n        puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar12 = *(int *)(puVar4 + -0x1c8);\n        *puVar21 = 0xc;\n        goto LAB_0002b300;\n      }" { (expression_statement "iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20);" (assignment_expression "iVar18 = (**(code **)(iVar12 + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" ( (pointer_expression "**(code **)(iVar12 + -0x7b68)" * (pointer_expression "*(code **)(iVar12 + -0x7b68)" * (cast_expression "(code **)(iVar12 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b68)" ( (binary_expression "iVar12 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 == 0) {\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar17 = 0x12d;\n          goto LAB_0002b570;\n        }" { (expression_statement "uVar17 = 0x12d;" (assignment_expression "uVar17 = 0x12d" identifier = number_literal) ;) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;) })) (expression_statement "uVar19 = uVar3 + iVar13;" (assignment_expression "uVar19 = uVar3 + iVar13" identifier = (binary_expression "uVar3 + iVar13" identifier + identifier)) ;) (if_statement "if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }" if (parenthesized_expression "((uVar3 <= uVar19) && (uVar19 < 0x40000000))" ( (binary_expression "(uVar3 <= uVar19) && (uVar19 < 0x40000000)" (parenthesized_expression "(uVar3 <= uVar19)" ( (binary_expression "uVar3 <= uVar19" identifier <= identifier) )) && (parenthesized_expression "(uVar19 < 0x40000000)" ( (binary_expression "uVar19 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n          if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          uVar17 = 0x147;\nLAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);\n          return iVar11;\n        }" { (if_statement "if (uVar19 < 2000) {\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }\n          else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" if (parenthesized_expression "(uVar19 < 2000)" ( (binary_expression "uVar19 < 2000" identifier < number_literal) )) (compound_statement "{\n            iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);\n            string_00 = pattern_00 + uVar3;\n            (**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);\n            iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" { (expression_statement "iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar18 = -(uVar19 * 4 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar19 * 4 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar19 * 4 + 7 & 0xfffffff8)" ( (binary_expression "uVar19 * 4 + 7 & 0xfffffff8" (binary_expression "uVar19 * 4 + 7" (binary_expression "uVar19 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8);" (assignment_expression "pattern_00 = (wchar_t *)(puVar4 + iVar18 + -0x1c8)" identifier = (cast_expression "(wchar_t *)(puVar4 + iVar18 + -0x1c8)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + iVar18 + -0x1c8)" ( (binary_expression "puVar4 + iVar18 + -0x1c8" (binary_expression "puVar4 + iVar18" identifier + identifier) + number_literal) )))) ;) (expression_statement "string_00 = pattern_00 + uVar3;" (assignment_expression "string_00 = pattern_00 + uVar3" identifier = (binary_expression "pattern_00 + uVar3" identifier + identifier)) ;) (expression_statement "(**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20);" (call_expression "(**(code **)(iVar12 + -0x7b28))(pattern_00,puVar24,uVar3,puVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(pattern_00,puVar24,uVar3,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar9 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar4 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar4 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n              (**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }" { (expression_statement "(**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20);" (call_expression "(**(code **)(iVar12 + -0x7b28))(string_00,piVar25,iVar13,puVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(string_00,piVar25,iVar13,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26;" (assignment_expression "*(byte **)(puVar4 + iVar18 + -0x1d0) = pbVar26" (pointer_expression "*(byte **)(puVar4 + iVar18 + -0x1d0)" * (cast_expression "(byte **)(puVar4 + iVar18 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + iVar18 + -0x1d0)" ( (binary_expression "puVar4 + iVar18 + -0x1d0" (binary_expression "puVar4 + iVar18" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0));" (assignment_expression "iVar11 = internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0))" identifier = (call_expression "internal_fnwmatch(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0))" identifier (argument_list "(pattern_00,string_00,string_00 + iVar11,\n                                         SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + iVar18 + -0x1d0))" ( identifier , identifier , (binary_expression "string_00 + iVar11" identifier + identifier) , (call_expression "SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)((int)pbVar26 << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)((int)pbVar26 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar26 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar26 << 0x1d)" ( (binary_expression "(int)pbVar26 << 0x1d" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , number_literal ))) , (pointer_expression "*(int *)(puVar4 + iVar18 + -0x1d0)" * (cast_expression "(int *)(puVar4 + iVar18 + -0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + iVar18 + -0x1d0)" ( (binary_expression "puVar4 + iVar18 + -0x1d0" (binary_expression "puVar4 + iVar18" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) }) (else_clause "else {\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" else (compound_statement "{\n            iVar18 = (**(code **)(iVar12 + -0x7be8))();\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 == 0) goto LAB_0002b490;\n            pcVar27 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar4 + -0x1bc) = iVar18;\n            string_00 = (int *)(iVar18 + uVar3 * 4);\n            (*pcVar27)(iVar18,puVar24,uVar3,puVar20);\n            iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);\n            iVar12 = *(int *)(puVar4 + -0x1c8);\n            if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }\n          }" { (expression_statement "iVar18 = (**(code **)(iVar12 + -0x7be8))();" (assignment_expression "iVar18 = (**(code **)(iVar12 + -0x7be8))()" identifier = (call_expression "(**(code **)(iVar12 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7be8))" ( (pointer_expression "**(code **)(iVar12 + -0x7be8)" * (pointer_expression "*(code **)(iVar12 + -0x7be8)" * (cast_expression "(code **)(iVar12 + -0x7be8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7be8)" ( (binary_expression "iVar12 + -0x7be8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 == 0) goto LAB_0002b490;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b490;" goto statement_identifier ;)) (expression_statement "pcVar27 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar27 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar4 + -0x1bc) = iVar18;" (assignment_expression "*(int *)(puVar4 + -0x1bc) = iVar18" (pointer_expression "*(int *)(puVar4 + -0x1bc)" * (cast_expression "(int *)(puVar4 + -0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1bc)" ( (binary_expression "puVar4 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "string_00 = (int *)(iVar18 + uVar3 * 4);" (assignment_expression "string_00 = (int *)(iVar18 + uVar3 * 4)" identifier = (cast_expression "(int *)(iVar18 + uVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + uVar3 * 4)" ( (binary_expression "iVar18 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "(*pcVar27)(iVar18,puVar24,uVar3,puVar20);" (call_expression "(*pcVar27)(iVar18,puVar24,uVar3,puVar20)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(iVar18,puVar24,uVar3,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20);" (assignment_expression "iVar18 = (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20)" identifier = (call_expression "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))(puVar20)" (parenthesized_expression "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar4 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar4 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar20)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 != 0) {\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar27 = *(code **)(iVar12 + -0x7b28);\n              *(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);\n              (*pcVar27)(string_00,piVar25,iVar13,puVar20);\n              *(byte **)(puVar4 + -0x1d0) = pbVar26;\n              iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));\n              (**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));\n              iVar12 = *(int *)(puVar4 + -0x1c8);\n              goto LAB_0002b300;\n            }" { (expression_statement "pcVar27 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar27 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar4 + -0x1bc) = *(undefined4 *)(puVar4 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar4 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar4 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1bc)" ( (binary_expression "puVar4 + -0x1bc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar4 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar4 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1bc)" ( (binary_expression "puVar4 + -0x1bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar27)(string_00,piVar25,iVar13,puVar20);" (call_expression "(*pcVar27)(string_00,piVar25,iVar13,puVar20)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(string_00,piVar25,iVar13,puVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar4 + -0x1d0) = pbVar26;" (assignment_expression "*(byte **)(puVar4 + -0x1d0) = pbVar26" (pointer_expression "*(byte **)(puVar4 + -0x1d0)" * (cast_expression "(byte **)(puVar4 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1d0)" ( (binary_expression "puVar4 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0));" (assignment_expression "iVar11 = internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0))" identifier = (call_expression "internal_fnwmatch(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0))" identifier (argument_list "(*(wchar_t **)(puVar4 + -0x1bc),string_00,string_00 + iVar11\n                                         ,SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),\n                                         *(int *)(puVar4 + -0x1d0))" ( (pointer_expression "*(wchar_t **)(puVar4 + -0x1bc)" * (cast_expression "(wchar_t **)(puVar4 + -0x1bc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1bc)" ( (binary_expression "puVar4 + -0x1bc" identifier + number_literal) )))) , identifier , (binary_expression "string_00 + iVar11" identifier + identifier) , (call_expression "SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)((int)pbVar26 << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)((int)pbVar26 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar26 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar26 << 0x1d)" ( (binary_expression "(int)pbVar26 << 0x1d" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , number_literal ))) , (pointer_expression "*(int *)(puVar4 + -0x1d0)" * (cast_expression "(int *)(puVar4 + -0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1d0)" ( (binary_expression "puVar4 + -0x1d0" identifier + number_literal) )))) )))) ;) (expression_statement "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar4 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54))" ( (pointer_expression "**(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54)" * (pointer_expression "*(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54)" * (cast_expression "(code **)(*(int *)(puVar4 + -0x1c8) + -0x7b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar4 + -0x1c8) + -0x7b54)" ( (binary_expression "*(int *)(puVar4 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar4 + -0x1bc))" ( (pointer_expression "*(undefined4 *)(puVar4 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar4 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1bc)" ( (binary_expression "puVar4 + -0x1bc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) }))) (expression_statement "uVar17 = 0x147;" (assignment_expression "uVar17 = 0x147" identifier = number_literal) ;) (labeled_statement "LAB_0002b570:\n          iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);" statement_identifier : (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558)" identifier = (call_expression "(**(code **)(iVar12 + -0x7ce0))\n                             (*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar12 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar12 + -0x7ce0)" * (pointer_expression "*(code **)(iVar12 + -0x7ce0)" * (cast_expression "(code **)(iVar12 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7ce0)" ( (binary_expression "iVar12 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar12 + -0x7e24) + -0x7864,\n                              *(int *)(iVar12 + -0x7e24) + -0x7870,uVar17,\n                              *(int *)(iVar12 + -0x7e24) + -0x7558)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , identifier , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) )))) ;)) (return_statement "return iVar11;" return identifier ;) })) (labeled_statement "LAB_0002b490:\n        iVar11 = -1;" statement_identifier : (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" identifier = number_literal) ;)) (expression_statement "puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();" (assignment_expression "puVar21 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar12 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7c3c))" ( (pointer_expression "**(code **)(iVar12 + -0x7c3c)" * (pointer_expression "*(code **)(iVar12 + -0x7c3c)" * (cast_expression "(code **)(iVar12 + -0x7c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7c3c)" ( (binary_expression "iVar12 + -0x7c3c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (expression_statement "*puVar21 = 0xc;" (assignment_expression "*puVar21 = 0xc" (pointer_expression "*puVar21" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) })) (expression_statement "string_00 = *(int **)(puVar4 + -0x1b8);" (assignment_expression "string_00 = *(int **)(puVar4 + -0x1b8)" identifier = (pointer_expression "*(int **)(puVar4 + -0x1b8)" * (cast_expression "(int **)(puVar4 + -0x1b8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1b8)" ( (binary_expression "puVar4 + -0x1b8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7c0c))(string_00);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7c0c))(string_00)" identifier = (call_expression "(**(code **)(iVar12 + -0x7c0c))(string_00)" (parenthesized_expression "(**(code **)(iVar12 + -0x7c0c))" ( (pointer_expression "**(code **)(iVar12 + -0x7c0c)" * (pointer_expression "*(code **)(iVar12 + -0x7c0c)" * (cast_expression "(code **)(iVar12 + -0x7c0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7c0c)" ( (binary_expression "iVar12 + -0x7c0c" identifier + number_literal) ))))) )) (argument_list "(string_00)" ( identifier )))) ;) (expression_statement "*(byte **)(puVar4 + -0x1d0) = pbVar26;" (assignment_expression "*(byte **)(puVar4 + -0x1d0) = pbVar26" (pointer_expression "*(byte **)(puVar4 + -0x1d0)" * (cast_expression "(byte **)(puVar4 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1d0)" ( (binary_expression "puVar4 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar11 = internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))\n  ;" (assignment_expression "iVar11 = internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))" identifier = (call_expression "internal_fnmatch(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))" identifier (argument_list "(*(char **)(puVar4 + -0x1b4),(char *)string_00,\n                            (char *)((int)string_00 + iVar11),\n                            SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0),*(int *)(puVar4 + -0x1d0))" ( (pointer_expression "*(char **)(puVar4 + -0x1b4)" * (cast_expression "(char **)(puVar4 + -0x1b4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + -0x1b4)" ( (binary_expression "puVar4 + -0x1b4" identifier + number_literal) )))) , (cast_expression "(char *)string_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)((int)string_00 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)string_00 + iVar11)" ( (binary_expression "(int)string_00 + iVar11" (cast_expression "(int)string_00" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , (call_expression "SUB41((uint)((int)pbVar26 << 0x1d) >> 0x1f,0)" identifier (argument_list "((uint)((int)pbVar26 << 0x1d) >> 0x1f,0)" ( (binary_expression "(uint)((int)pbVar26 << 0x1d) >> 0x1f" (call_expression "(uint)((int)pbVar26 << 0x1d)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pbVar26 << 0x1d)" ( (binary_expression "(int)pbVar26 << 0x1d" (cast_expression "(int)pbVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) ))) >> number_literal) , number_literal ))) , (pointer_expression "*(int *)(puVar4 + -0x1d0)" * (cast_expression "(int *)(puVar4 + -0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1d0)" ( (binary_expression "puVar4 + -0x1d0" identifier + number_literal) )))) )))) ;) (expression_statement "iVar12 = *(int *)(puVar4 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar4 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1c8)" * (cast_expression "(int *)(puVar4 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1c8)" ( (binary_expression "puVar4 + -0x1c8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002b300:\n  iVar13 = *(int *)(puVar4 + -0x1a4);" statement_identifier : (expression_statement "iVar13 = *(int *)(puVar4 + -0x1a4);" (assignment_expression "iVar13 = *(int *)(puVar4 + -0x1a4)" identifier = (pointer_expression "*(int *)(puVar4 + -0x1a4)" * (cast_expression "(int *)(puVar4 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x1a4)" ( (binary_expression "puVar4 + -0x1a4" identifier + number_literal) ))))) ;)) (if_statement "if (iVar13 != *piVar6) {\n    (**(code **)(iVar12 + -0x7b8c))();\n    iVar11 = string_00[8];\n    iVar12 = *string_00;\n    uVar3 = (uint)(iVar11 < iVar12);\n    uVar19 = string_00[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }\n    string_00[8] = iVar12;\n    string_00[7] = (iVar12 - iVar11) + uVar19;\n    return uVar3;\n  }" if (parenthesized_expression "(iVar13 != *piVar6)" ( (binary_expression "iVar13 != *piVar6" identifier != (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n    (**(code **)(iVar12 + -0x7b8c))();\n    iVar11 = string_00[8];\n    iVar12 = *string_00;\n    uVar3 = (uint)(iVar11 < iVar12);\n    uVar19 = string_00[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }\n    string_00[8] = iVar12;\n    string_00[7] = (iVar12 - iVar11) + uVar19;\n    return uVar3;\n  }" { (expression_statement "(**(code **)(iVar12 + -0x7b8c))();" (call_expression "(**(code **)(iVar12 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7b8c))" ( (pointer_expression "**(code **)(iVar12 + -0x7b8c)" * (pointer_expression "*(code **)(iVar12 + -0x7b8c)" * (cast_expression "(code **)(iVar12 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b8c)" ( (binary_expression "iVar12 + -0x7b8c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar11 = string_00[8];" (assignment_expression "iVar11 = string_00[8]" identifier = (subscript_expression "string_00[8]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = *string_00;" (assignment_expression "iVar12 = *string_00" identifier = (pointer_expression "*string_00" * identifier)) ;) (expression_statement "uVar3 = (uint)(iVar11 < iVar12);" (assignment_expression "uVar3 = (uint)(iVar11 < iVar12)" identifier = (call_expression "(uint)(iVar11 < iVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar11 < iVar12)" ( (binary_expression "iVar11 < iVar12" identifier < identifier) )))) ;) (expression_statement "uVar19 = string_00[7];" (assignment_expression "uVar19 = string_00[7]" identifier = (subscript_expression "string_00[7]" identifier [ number_literal ])) ;) (if_statement "if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }" if (parenthesized_expression "((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0))" ( (binary_expression "(uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" ( (comma_expression "uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0" (assignment_expression "uVar3 = (uint)((int)uVar19 < iVar11)" identifier = (call_expression "(uint)((int)uVar19 < iVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar19 < iVar11)" ( (binary_expression "(int)uVar19 < iVar11" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) , (binary_expression "uVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      iVar9 = iVar12 - iVar11;\n      uVar7 = uVar19;\n      iVar18 = iVar12;\n      do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));\n    }" { (expression_statement "iVar9 = iVar12 - iVar11;" (assignment_expression "iVar9 = iVar12 - iVar11" identifier = (binary_expression "iVar12 - iVar11" identifier - identifier)) ;) (expression_statement "uVar7 = uVar19;" (assignment_expression "uVar7 = uVar19" identifier = identifier) ;) (expression_statement "iVar18 = iVar12;" (assignment_expression "iVar18 = iVar12" identifier = identifier) ;) (do_statement "do {\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11));" do (compound_statement "{\n        iVar16 = iVar11 - uVar7;\n        uVar3 = iVar9 + uVar7;\n        if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }\n      }" { (expression_statement "iVar16 = iVar11 - uVar7;" (assignment_expression "iVar16 = iVar11 - uVar7" identifier = (binary_expression "iVar11 - uVar7" identifier - identifier)) ;) (expression_statement "uVar3 = iVar9 + uVar7;" (assignment_expression "uVar3 = iVar9 + uVar7" identifier = (binary_expression "iVar9 + uVar7" identifier + identifier)) ;) (if_statement "if (iVar16 < iVar9) {\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }\n        else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }" if (parenthesized_expression "(iVar16 < iVar9)" ( (binary_expression "iVar16 < iVar9" identifier < identifier) )) (compound_statement "{\n          iVar18 = iVar18 - iVar16;\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);\n        }" { (expression_statement "iVar18 = iVar18 - iVar16;" (assignment_expression "iVar18 = iVar18 - iVar16" identifier = (binary_expression "iVar18 - iVar16" identifier - identifier)) ;) (expression_statement "puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);" (assignment_expression "puVar21 = (undefined4 *)(iVar13 + uVar7 * 4)" identifier = (cast_expression "(undefined4 *)(iVar13 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar7 * 4)" ( (binary_expression "iVar13 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar5 = (undefined4 *)(iVar13 + iVar18 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar13 + iVar18 * 4)" identifier = (cast_expression "(undefined4 *)(iVar13 + iVar18 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar18 * 4)" ( (binary_expression "iVar13 + iVar18 * 4" identifier + (binary_expression "iVar18 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while ((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10);" do (compound_statement "{\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            uVar3 = uVar7;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          }" { (expression_statement "puVar10 = puVar21 + 1;" (assignment_expression "puVar10 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar17 = *puVar21;" (assignment_expression "uVar17 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = *puVar5;" (assignment_expression "*puVar21 = *puVar5" (pointer_expression "*puVar21" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar17;" (assignment_expression "*puVar5 = uVar17" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "uVar3 = uVar7;" (assignment_expression "uVar3 = uVar7" identifier = identifier) ;) (expression_statement "puVar21 = puVar10;" (assignment_expression "puVar21 = puVar10" identifier = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10)" ( (binary_expression "(undefined4 *)(iVar13 + (iVar16 + uVar7) * 4) != puVar10" (cast_expression "(undefined4 *)(iVar13 + (iVar16 + uVar7) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + (iVar16 + uVar7) * 4)" ( (binary_expression "iVar13 + (iVar16 + uVar7) * 4" identifier + (binary_expression "(iVar16 + uVar7) * 4" (parenthesized_expression "(iVar16 + uVar7)" ( (binary_expression "iVar16 + uVar7" identifier + identifier) )) * number_literal)) ))) != identifier) )) ;) }) (else_clause "else {\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }" else (compound_statement "{\n          puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);\n          puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);\n          do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));\n        }" { (expression_statement "puVar21 = (undefined4 *)(iVar13 + uVar7 * 4);" (assignment_expression "puVar21 = (undefined4 *)(iVar13 + uVar7 * 4)" identifier = (cast_expression "(undefined4 *)(iVar13 + uVar7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar7 * 4)" ( (binary_expression "iVar13 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar5 = (undefined4 *)(iVar13 + iVar11 * 4);" (assignment_expression "puVar5 = (undefined4 *)(iVar13 + iVar11 * 4)" identifier = (cast_expression "(undefined4 *)(iVar13 + iVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar11 * 4)" ( (binary_expression "iVar13 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          } while (puVar10 != (undefined4 *)(iVar13 + uVar3 * 4));" do (compound_statement "{\n            puVar10 = puVar21 + 1;\n            uVar17 = *puVar21;\n            *puVar21 = *puVar5;\n            *puVar5 = uVar17;\n            puVar21 = puVar10;\n            puVar5 = puVar5 + 1;\n          }" { (expression_statement "puVar10 = puVar21 + 1;" (assignment_expression "puVar10 = puVar21 + 1" identifier = (binary_expression "puVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar17 = *puVar21;" (assignment_expression "uVar17 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = *puVar5;" (assignment_expression "*puVar21 = *puVar5" (pointer_expression "*puVar21" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar17;" (assignment_expression "*puVar5 = uVar17" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar21 = puVar10;" (assignment_expression "puVar21 = puVar10" identifier = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != (undefined4 *)(iVar13 + uVar3 * 4))" ( (binary_expression "puVar10 != (undefined4 *)(iVar13 + uVar3 * 4)" identifier != (cast_expression "(undefined4 *)(iVar13 + uVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + uVar3 * 4)" ( (binary_expression "iVar13 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) )) ;) }))) }) while (parenthesized_expression "((iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11))" ( (binary_expression "(iVar11 < iVar18) && (iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11)" (parenthesized_expression "(iVar11 < iVar18)" ( (binary_expression "iVar11 < iVar18" identifier < identifier) )) && (parenthesized_expression "(iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11)" ( (comma_expression "iVar9 = iVar18 - iVar11, uVar7 = uVar3, (int)uVar3 < iVar11" (assignment_expression "iVar9 = iVar18 - iVar11" identifier = (binary_expression "iVar18 - iVar11" identifier - identifier)) , (comma_expression "uVar7 = uVar3, (int)uVar3 < iVar11" (assignment_expression "uVar7 = uVar3" identifier = identifier) , (binary_expression "(int)uVar3 < iVar11" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier))) ))) )) ;) })) (expression_statement "string_00[8] = iVar12;" (assignment_expression "string_00[8] = iVar12" (subscript_expression "string_00[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "string_00[7] = (iVar12 - iVar11) + uVar19;" (assignment_expression "string_00[7] = (iVar12 - iVar11) + uVar19" (subscript_expression "string_00[7]" identifier [ number_literal ]) = (binary_expression "(iVar12 - iVar11) + uVar19" (parenthesized_expression "(iVar12 - iVar11)" ( (binary_expression "iVar12 - iVar11" identifier - identifier) )) + identifier)) ;) (return_statement "return uVar3;" return identifier ;) })) (return_statement "return iVar11;" return identifier ;) })))
(translation_unit "uint FUN_00029f20(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}\n\n" (function_definition "uint FUN_00029f20(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_00029f20(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  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "undefined1 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "undefined *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "undefined1 *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * 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 "undefined1 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "byte *pbVar32;" type_identifier (pointer_declarator "*pbVar32" * identifier) ;) (declaration "code *pcVar33;" type_identifier (pointer_declarator "*pcVar33" * identifier) ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "byte *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "byte *local_2c;" type_identifier (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 "puVar30 = auStack_68;" (assignment_expression "puVar30 = auStack_68" identifier = identifier) ;) (expression_statement "pbVar27 = param_2 + 1;" (assignment_expression "pbVar27 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(byte **)PTR___stack_chk_guard_0005b58c" identifier = (pointer_expression "*(byte **)PTR___stack_chk_guard_0005b58c" * (cast_expression "(byte **)PTR___stack_chk_guard_0005b58c" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" identifier = identifier) ;) (expression_statement "pbVar14 = param_3;" (assignment_expression "pbVar14 = param_3" identifier = identifier) ;) (expression_statement "local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);" (assignment_expression "local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2)" identifier = (cast_expression "(byte *)(*(code *)PTR_strlen_0005b4e4)(param_2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_strlen_0005b4e4)(param_2)" (parenthesized_expression "(*(code *)PTR_strlen_0005b4e4)" ( (pointer_expression "*(code *)PTR_strlen_0005b4e4" * (cast_expression "(code *)PTR_strlen_0005b4e4" ( (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 "iVar11 = (int)(char)param_2[1];" (assignment_expression "iVar11 = (int)(char)param_2[1]" identifier = (cast_expression "(int)(char)param_2[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)param_2[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])))) ;) (if_statement "if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }" { (expression_statement "unaff_s5 = 0;" (assignment_expression "unaff_s5 = 0" 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 "puVar2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "puVar2 = PTR_DAT_0005b2cc + -0x78dc" identifier = (binary_expression "PTR_DAT_0005b2cc + -0x78dc" identifier + number_literal)) ;) (expression_statement "local_34 = &local_30;" (assignment_expression "local_34 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "puVar21 = auStack_68;" (assignment_expression "puVar21 = auStack_68" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar27;" (assignment_expression "unaff_s6 = pbVar27" identifier = identifier) ;) (labeled_statement "LAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);" statement_identifier : (do_statement "do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);" do (compound_statement "{\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    }" { (expression_statement "puVar30 = puVar21;" (assignment_expression "puVar30 = puVar21" identifier = identifier) ;) (expression_statement "unaff_s3 = puVar28;" (assignment_expression "unaff_s3 = puVar28" identifier = identifier) ;) (if_statement "if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" if (parenthesized_expression "(iVar11 == 0x5b)" ( (binary_expression "iVar11 == 0x5b" identifier == number_literal) )) (compound_statement "{\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }" { (if_statement "if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\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          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }" { (expression_statement "iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);" (assignment_expression "iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2)" identifier = (call_expression "(*(code *)PTR_getenv_0005b510)(puVar2)" (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 "(puVar2)" ( identifier )))) ;) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (iVar11 != 0) {\n            uVar16 = 1;\n          }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar16 = 1;\n          }" { (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) })) (expression_statement "*(undefined4 *)(puVar28 + -0x4730) = uVar16;" (assignment_expression "*(undefined4 *)(puVar28 + -0x4730) = uVar16" (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 "bVar7 = pbVar27[1];" (assignment_expression "bVar7 = pbVar27[1]" identifier = (subscript_expression "pbVar27[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar27 + 1;" (assignment_expression "pbVar23 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (if_statement "if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }" if (parenthesized_expression "((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e))))" ( (binary_expression "(bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))" (parenthesized_expression "(bVar7 == 0x21)" ( (binary_expression "bVar7 == 0x21" identifier == number_literal) )) || (parenthesized_expression "((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))" ( (parenthesized_expression "(*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e))" ( (binary_expression "*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 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 "(bVar7 == 0x5e)" ( (binary_expression "bVar7 == 0x5e" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }" { (expression_statement "bVar7 = pbVar27[2];" (assignment_expression "bVar7 = pbVar27[2]" identifier = (subscript_expression "pbVar27[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar27 + 2;" (assignment_expression "pbVar23 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (if_statement "if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" if (parenthesized_expression "(bVar7 == 0x5d)" ( (binary_expression "bVar7 == 0x5d" identifier == number_literal) )) (compound_statement "{\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" { (expression_statement "bVar7 = pbVar23[1];" (assignment_expression "bVar7 = pbVar23[1]" identifier = (subscript_expression "pbVar23[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar13 = (byte *)0x5d;" (assignment_expression "pbVar13 = (byte *)0x5d" identifier = (cast_expression "(byte *)0x5d" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }" while (parenthesized_expression "(pbVar27 = pbVar23 + 1, bVar7 != 0x5d)" ( (comma_expression "pbVar27 = pbVar23 + 1, bVar7 != 0x5d" (assignment_expression "pbVar27 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) , (binary_expression "bVar7 != 0x5d" identifier != number_literal)) )) (compound_statement "{\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }" { (if_statement "if (bVar7 == 0) goto LAB_0002a034;" if (parenthesized_expression "(bVar7 == 0)" ( (binary_expression "bVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002a034;" goto statement_identifier ;)) (expression_statement "pbVar23 = pbVar27;" (assignment_expression "pbVar23 = pbVar27" identifier = identifier) ;) (expression_statement "bVar7 = *pbVar27;" (assignment_expression "bVar7 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) })) (expression_statement "iVar11 = (int)(char)pbVar23[1];" (assignment_expression "iVar11 = (int)(char)pbVar23[1]" identifier = (cast_expression "(int)(char)pbVar23[1]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar23[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar23[1]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" else (compound_statement "{\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" { (expression_statement "pbVar13 = &DAT_c0000601;" (assignment_expression "pbVar13 = &DAT_c0000601" identifier = (pointer_expression "&DAT_c0000601" & identifier)) ;) (expression_statement "uVar3 = iVar11 - 0x21U & 0xff;" (assignment_expression "uVar3 = iVar11 - 0x21U & 0xff" identifier = (binary_expression "iVar11 - 0x21U & 0xff" (binary_expression "iVar11 - 0x21U" identifier - number_literal) & number_literal)) ;) (expression_statement "pbVar14 = (byte *)(uint)(uVar3 < 0x20);" (assignment_expression "pbVar14 = (byte *)(uint)(uVar3 < 0x20)" identifier = (cast_expression "(byte *)(uint)(uVar3 < 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(uVar3 < 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < 0x20)" ( (binary_expression "uVar3 < 0x20" identifier < number_literal) ))))) ;) (if_statement "if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" if (parenthesized_expression "(pbVar14 == (byte *)0x0)" ( (binary_expression "pbVar14 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }" { (if_statement "if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" if (parenthesized_expression "((iVar11 == 0x7c) && (unaff_s5 == 0))" ( (binary_expression "(iVar11 == 0x7c) && (unaff_s5 == 0)" (parenthesized_expression "(iVar11 == 0x7c)" ( (binary_expression "iVar11 == 0x7c" identifier == number_literal) )) && (parenthesized_expression "(unaff_s5 == 0)" ( (binary_expression "unaff_s5 == 0" identifier == number_literal) ))) )) (compound_statement "{\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" { (expression_statement "pbVar23 = local_44;" (assignment_expression "pbVar23 = local_44" identifier = identifier) ;) (if_statement "if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }" if (parenthesized_expression "(unaff_s1 == 0)" ( (binary_expression "unaff_s1 == 0" identifier == number_literal) )) (compound_statement "{\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }" { (expression_statement "pbVar23 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "pbVar23 = 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)(pbVar23 + 7) & 0xfffffffc) - 4) break;" if (parenthesized_expression "(0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4)" ( (binary_expression "0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4" number_literal < (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + 7)" ( (binary_expression "pbVar23 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pbVar14 = pbVar27 + -(int)unaff_s6;" (assignment_expression "pbVar14 = 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 "pbVar22 = pbVar27 + 1;" (assignment_expression "pbVar22 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + 7)" ( (binary_expression "pbVar23 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar31 = puVar30 + iVar12;" (assignment_expression "puVar31 = puVar30 + iVar12" identifier = (binary_expression "puVar30 + iVar12" identifier + identifier)) ;) (expression_statement "piVar5 = (int *)(puVar30 + iVar12 + 0x18);" (assignment_expression "piVar5 = (int *)(puVar30 + iVar12 + 0x18)" identifier = (cast_expression "(int *)(puVar30 + iVar12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + iVar12 + 0x18)" ( (binary_expression "puVar30 + iVar12 + 0x18" (binary_expression "puVar30 + iVar12" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);" (assignment_expression "puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" (parenthesized_expression "(*(code *)PTR_mempcpy_0005b574)" ( (pointer_expression "*(code *)PTR_mempcpy_0005b574" * (cast_expression "(code *)PTR_mempcpy_0005b574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar30 + iVar12 + 0x1c)" ( (binary_expression "puVar30 + iVar12 + 0x1c" (binary_expression "puVar30 + iVar12" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 "*puVar21 = 0;" (assignment_expression "*puVar21 = 0" (pointer_expression "*puVar21" * identifier) = number_literal) ;) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "*local_34 = (int)piVar5;" (assignment_expression "*local_34 = (int)piVar5" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar13 = unaff_s6;" (assignment_expression "pbVar13 = unaff_s6" identifier = identifier) ;) (expression_statement "unaff_s6 = pbVar22;" (assignment_expression "unaff_s6 = pbVar22" identifier = identifier) ;) (expression_statement "pbVar27 = pbVar22;" (assignment_expression "pbVar27 = pbVar22" identifier = identifier) ;) (expression_statement "puVar30 = puVar30 + iVar12;" (assignment_expression "puVar30 = puVar30 + iVar12" identifier = (binary_expression "puVar30 + iVar12" identifier + identifier)) ;) (expression_statement "local_34 = piVar5;" (assignment_expression "local_34 = piVar5" identifier = identifier) ;) (expression_statement "puVar21 = puVar31;" (assignment_expression "puVar21 = puVar31" identifier = identifier) ;) (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00029fdc;" goto statement_identifier ;) })) (labeled_statement "LAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];" statement_identifier : (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 ])))) ;)) }) (else_clause "else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" else (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" { (while_statement "while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }" while (parenthesized_expression "((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0)" ( (binary_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" ( (binary_expression "(0xc0000601U >> (uVar3 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar3 & 0x1f))" ( (binary_expression "0xc0000601U >> (uVar3 & 0x1f)" number_literal >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))) )) << number_literal) ))) < number_literal) )) (compound_statement "{\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }" { (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 (iVar11 != 0x28) goto joined_r0x0002a19c;" if (parenthesized_expression "(iVar11 != 0x28)" ( (binary_expression "iVar11 != 0x28" identifier != number_literal) )) (goto_statement "goto joined_r0x0002a19c;" goto statement_identifier ;)) (expression_statement "pbVar14 = (byte *)0x1;" (assignment_expression "pbVar14 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" identifier = (binary_expression "unaff_s5 + 1" identifier + number_literal)) ;) (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) })) (if_statement "if (iVar11 != 0x29) goto LAB_0002a198;" if (parenthesized_expression "(iVar11 != 0x29)" ( (binary_expression "iVar11 != 0x29" identifier != number_literal) )) (goto_statement "goto LAB_0002a198;" goto statement_identifier ;)) (if_statement "if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }" if (parenthesized_expression "(unaff_s5 == 0)" ( (binary_expression "unaff_s5 == 0" identifier == number_literal) )) (compound_statement "{\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }" { (if_statement "if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\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 = pbVar27 + (1 - (int)unaff_s6);\n            }" { (expression_statement "local_44 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "local_44 = 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 (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }" if (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c)" ( (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 + 7)" ( (binary_expression "local_44 + 7" identifier + number_literal) ))) & number_literal) )) - number_literal) < number_literal) )) (compound_statement "{\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }" { (expression_statement "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" identifier = (unary_expression "-(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" - (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" ( (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" ( (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 + 7)" ( (binary_expression "local_44 + 7" identifier + number_literal) ))) & number_literal) )) + number_literal) & number_literal) )))) ;) (expression_statement "puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);" (assignment_expression "puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (parenthesized_expression "(*(code *)PTR_mempcpy_0005b574)" ( (pointer_expression "*(code *)PTR_mempcpy_0005b574" * (cast_expression "(code *)PTR_mempcpy_0005b574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" ( (binary_expression "puVar30 + iVar11 + 0x1c" (binary_expression "puVar30 + iVar11" 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 "*puVar21 = 0;" (assignment_expression "*puVar21 = 0" (pointer_expression "*puVar21" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + iVar11 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar30 + iVar11 + 0x18)" * (cast_expression "(undefined4 *)(puVar30 + iVar11 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + iVar11 + 0x18)" ( (binary_expression "puVar30 + iVar11 + 0x18" (binary_expression "puVar30 + iVar11" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*local_34 = (int)(puVar30 + iVar11 + 0x18);" (assignment_expression "*local_34 = (int)(puVar30 + iVar11 + 0x18)" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)(puVar30 + iVar11 + 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar30 + iVar11 + 0x18)" ( (binary_expression "puVar30 + iVar11 + 0x18" (binary_expression "puVar30 + iVar11" identifier + identifier) + number_literal) )))) ;) (if_statement "if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (compound_statement "{\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" { (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" ( (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 + -0x7570" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (if_statement "if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" if (parenthesized_expression "(pbVar27[-1] != 0x29)" ( (binary_expression "pbVar27[-1] != 0x29" (subscript_expression "pbVar27[-1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" { (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" ( (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 + -0x7570" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (if_statement "if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\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                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" { (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570)" identifier = (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" ( (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 + -0x7570" identifier + number_literal) )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();" (assignment_expression "uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" ( (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" * (cast_expression "(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" ( (binary_expression "PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0" (binary_expression "PTR_DAT_0005b2cc +\n                                                  (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 uVar3;" return identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (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 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) }))) (labeled_statement "joined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;" statement_identifier : (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" identifier = (binary_expression "pbVar27 + 1" identifier + number_literal)) ;)) }))) (expression_statement "puVar21 = puVar30;" (assignment_expression "puVar21 = puVar30" identifier = identifier) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;)) })) (labeled_statement "LAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }" statement_identifier : (if_statement "if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }" if (parenthesized_expression "(local_2c == *(byte **)puVar1)" ( (binary_expression "local_2c == *(byte **)puVar1" identifier == (pointer_expression "*(byte **)puVar1" * (cast_expression "(byte **)puVar1" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) }))) (expression_statement "pcVar33 = FUN_0002a610;" (assignment_expression "pcVar33 = FUN_0002a610" identifier = identifier) ;) (expression_statement "pbVar23 = local_2c;" (assignment_expression "pbVar23 = 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 "puVar2 = puVar28 + 0x38ae0;" (assignment_expression "puVar2 = puVar28 + 0x38ae0" identifier = (binary_expression "puVar28 + 0x38ae0" identifier + number_literal)) ;) (expression_statement "puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);" (assignment_expression "puVar4 = *(undefined4 **)(puVar28 + 0x30f7c)" identifier = (pointer_expression "*(undefined4 **)(puVar28 + 0x30f7c)" * (cast_expression "(undefined4 **)(puVar28 + 0x30f7c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x30f7c)" ( (binary_expression "puVar28 + 0x30f7c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar30 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar30 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar30 + -8)" * (cast_expression "(undefined1 **)(puVar30 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -8)" ( (binary_expression "puVar30 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar30 + -0x1c) = unaff_s3;" (assignment_expression "*(undefined **)(puVar30 + -0x1c) = unaff_s3" (pointer_expression "*(undefined **)(puVar30 + -0x1c)" * (cast_expression "(undefined **)(puVar30 + -0x1c)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1c)" ( (binary_expression "puVar30 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar30 + -0x160) = puVar2;" (assignment_expression "*(undefined **)(puVar30 + -0x160) = puVar2" (pointer_expression "*(undefined **)(puVar30 + -0x160)" * (cast_expression "(undefined **)(puVar30 + -0x160)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x160)" ( (binary_expression "puVar30 + -0x160" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar30 + -4) = pcVar33;" (assignment_expression "*(code **)(puVar30 + -4) = pcVar33" (pointer_expression "*(code **)(puVar30 + -4)" * (cast_expression "(code **)(puVar30 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -4)" ( (binary_expression "puVar30 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0xc) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0xc) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0xc)" * (cast_expression "(byte **)(puVar30 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0xc)" ( (binary_expression "puVar30 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar30 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar30 + -0x10)" * (cast_expression "(byte **)(puVar30 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x10)" ( (binary_expression "puVar30 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar30 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar30 + -0x14)" * (cast_expression "(int *)(puVar30 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14)" ( (binary_expression "puVar30 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x18) = param_3;" (assignment_expression "*(byte **)(puVar30 + -0x18) = param_3" (pointer_expression "*(byte **)(puVar30 + -0x18)" * (cast_expression "(byte **)(puVar30 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x18)" ( (binary_expression "puVar30 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar30 + -0x20) = puVar1;" (assignment_expression "*(undefined **)(puVar30 + -0x20) = puVar1" (pointer_expression "*(undefined **)(puVar30 + -0x20)" * (cast_expression "(undefined **)(puVar30 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x20)" ( (binary_expression "puVar30 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar30 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar30 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar30 + -0x24)" * (cast_expression "(uint *)(puVar30 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x24)" ( (binary_expression "puVar30 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x28) = param_2;" (assignment_expression "*(byte **)(puVar30 + -0x28) = param_2" (pointer_expression "*(byte **)(puVar30 + -0x28)" * (cast_expression "(byte **)(puVar30 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x28)" ( (binary_expression "puVar30 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar30 + -0x144) = puVar4;" (assignment_expression "*(undefined4 **)(puVar30 + -0x144) = puVar4" (pointer_expression "*(undefined4 **)(puVar30 + -0x144)" * (cast_expression "(undefined4 **)(puVar30 + -0x144)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x144)" ( (binary_expression "puVar30 + -0x144" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x154) = pbVar23 + 1;" (assignment_expression "*(byte **)(puVar30 + -0x154) = pbVar23 + 1" (pointer_expression "*(byte **)(puVar30 + -0x154)" * (cast_expression "(byte **)(puVar30 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x154)" ( (binary_expression "puVar30 + -0x154" identifier + number_literal) )))) = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "pbVar22 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar23" identifier = (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x2c) = *puVar4;" (assignment_expression "*(undefined4 *)(puVar30 + -0x2c) = *puVar4" (pointer_expression "*(undefined4 *)(puVar30 + -0x2c)" * (cast_expression "(undefined4 *)(puVar30 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x2c)" ( (binary_expression "puVar30 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "iVar11 = *(int *)(puVar28 + 0x30cbc);" (assignment_expression "iVar11 = *(int *)(puVar28 + 0x30cbc)" identifier = (pointer_expression "*(int *)(puVar28 + 0x30cbc)" * (cast_expression "(int *)(puVar28 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30cbc)" ( (binary_expression "puVar28 + 0x30cbc" identifier + number_literal) ))))) ;) (expression_statement "pbVar27 = pbVar14;" (assignment_expression "pbVar27 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar32 = pbVar13;" (assignment_expression "pbVar32 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" if (parenthesized_expression "(pbVar22 != (byte *)0x0)" ( (binary_expression "pbVar22 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" { (expression_statement "uVar3 = *(uint *)(puVar30 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar30 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar30 + 0x10)" * (cast_expression "(uint *)(puVar30 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + 0x10)" ( (binary_expression "puVar30 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "unaff_s1 = uVar3 & 2;" (assignment_expression "unaff_s1 = uVar3 & 2" identifier = (binary_expression "uVar3 & 2" identifier & number_literal)) ;) (expression_statement "param_2 = (byte *)(uVar3 & 0x10);" (assignment_expression "param_2 = (byte *)(uVar3 & 0x10)" identifier = (cast_expression "(byte *)(uVar3 & 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )))) ;) (expression_statement "*(uint *)(puVar30 + -0x140) = uVar3 & 5;" (assignment_expression "*(uint *)(puVar30 + -0x140) = uVar3 & 5" (pointer_expression "*(uint *)(puVar30 + -0x140)" * (cast_expression "(uint *)(puVar30 + -0x140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x140)" ( (binary_expression "puVar30 + -0x140" identifier + number_literal) )))) = (binary_expression "uVar3 & 5" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar30 + -0x148)" * (cast_expression "(undefined4 *)(puVar30 + -0x148)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x148)" ( (binary_expression "puVar30 + -0x148" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar28 + 0x30b08)" * (cast_expression "(undefined4 *)(puVar28 + 0x30b08)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30b08)" ( (binary_expression "puVar28 + 0x30b08" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;" (assignment_expression "*(int *)(puVar30 + -0x14c) = iVar11 + -0x7660" (pointer_expression "*(int *)(puVar30 + -0x14c)" * (cast_expression "(int *)(puVar30 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14c)" ( (binary_expression "puVar30 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar11 + -0x7660" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar30 + -0x138)" * (cast_expression "(int *)(puVar30 + -0x138)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x138)" ( (binary_expression "puVar30 + -0x138" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar28 + 0x30d80)" * (cast_expression "(int *)(puVar28 + 0x30d80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30d80)" ( (binary_expression "puVar28 + 0x30d80" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar30 + -0x13c)" * (cast_expression "(int *)(puVar30 + -0x13c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x13c)" ( (binary_expression "puVar30 + -0x13c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar28 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar28 + 0x30cbc)" * (cast_expression "(int *)(puVar28 + 0x30cbc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x30cbc)" ( (binary_expression "puVar28 + 0x30cbc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "param_3 = pbVar23;" (assignment_expression "param_3 = pbVar23" identifier = identifier) ;) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" identifier = identifier) ;) (do_statement "do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);" do (compound_statement "{\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    }" { (expression_statement "pbVar23 = pbVar22;" (assignment_expression "pbVar23 = pbVar22" identifier = identifier) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\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        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }" { (expression_statement "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();" (assignment_expression "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(puVar2 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar2 + -0x7cdc))()" (parenthesized_expression "(**(code **)(puVar2 + -0x7cdc))" ( (pointer_expression "**(code **)(puVar2 + -0x7cdc)" * (pointer_expression "*(code **)(puVar2 + -0x7cdc)" * (cast_expression "(code **)(puVar2 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + -0x7cdc)" ( (binary_expression "puVar2 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = *(undefined **)(puVar30 + -0x160);" (assignment_expression "puVar2 = *(undefined **)(puVar30 + -0x160)" identifier = (pointer_expression "*(undefined **)(puVar30 + -0x160)" * (cast_expression "(undefined **)(puVar30 + -0x160)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x160)" ( (binary_expression "puVar30 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);" (assignment_expression "pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" identifier = (binary_expression "(byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar5 + (int)pbVar22 * 4 + 3)" ( (binary_expression "*piVar5 + (int)pbVar22 * 4 + 3" (binary_expression "*piVar5 + (int)pbVar22 * 4" (pointer_expression "*piVar5" * identifier) + (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))) ;) })) (if_statement "if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }" if (parenthesized_expression "(((uint)(pbVar23 + -0x21) & 0xff) < 0x3c)" ( (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + -0x21)" ( (binary_expression "pbVar23 + -0x21" identifier + number_literal) ))) & number_literal) )) < number_literal) )) (compound_statement "{\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }" { (expression_statement "uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();" (assignment_expression "uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" identifier = (call_expression "(*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))" ( (pointer_expression "*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" * (cast_expression "(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" ( (binary_expression "puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" identifier + (pointer_expression "*(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" * (cast_expression "(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" ( (binary_expression "*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar30 + -0x14c)" * (cast_expression "(int *)(puVar30 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x14c)" ( (binary_expression "puVar30 + -0x14c" identifier + number_literal) )))) + (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" ( (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pbVar23 + -0x21)" ( (binary_expression "pbVar23 + -0x21" identifier + number_literal) ))) & number_literal) )) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "pbVar22 = pbVar23;" (assignment_expression "pbVar22 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar32 == pbVar14) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar32 == pbVar14)" ( (binary_expression "pbVar32 == pbVar14" identifier == identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "pbVar22 = (byte *)(uint)*pbVar32;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar32" identifier = (binary_expression "(byte *)(uint)*pbVar32" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\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        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }" { (expression_statement "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();" (assignment_expression "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))()" identifier = (cast_expression "(int *)(**(code **)(puVar2 + -0x7cdc))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar2 + -0x7cdc))()" (parenthesized_expression "(**(code **)(puVar2 + -0x7cdc))" ( (pointer_expression "**(code **)(puVar2 + -0x7cdc)" * (pointer_expression "*(code **)(puVar2 + -0x7cdc)" * (cast_expression "(code **)(puVar2 + -0x7cdc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + -0x7cdc)" ( (binary_expression "puVar2 + -0x7cdc" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar2 = *(undefined **)(puVar30 + -0x160);" (assignment_expression "puVar2 = *(undefined **)(puVar30 + -0x160)" identifier = (pointer_expression "*(undefined **)(puVar30 + -0x160)" * (cast_expression "(undefined **)(puVar30 + -0x160)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x160)" ( (binary_expression "puVar30 + -0x160" identifier + number_literal) ))))) ;) (expression_statement "pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);" (assignment_expression "pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4)" identifier = (pointer_expression "*(byte **)(*piVar5 + (int)pbVar22 * 4)" * (cast_expression "(byte **)(*piVar5 + (int)pbVar22 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + (int)pbVar22 * 4)" ( (binary_expression "*piVar5 + (int)pbVar22 * 4" (pointer_expression "*piVar5" * identifier) + (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) })) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) (expression_statement "unaff_s6 = pbVar23;" (assignment_expression "unaff_s6 = pbVar23" identifier = identifier) ;) (if_statement "if (pbVar22 != pbVar23) goto LAB_0002a8e4;" if (parenthesized_expression "(pbVar22 != pbVar23)" ( (binary_expression "pbVar22 != pbVar23" identifier != identifier) )) (goto_statement "goto LAB_0002a8e4;" goto statement_identifier ;)) (expression_statement "param_3 = *(byte **)(puVar30 + -0x154);" (assignment_expression "param_3 = *(byte **)(puVar30 + -0x154)" identifier = (pointer_expression "*(byte **)(puVar30 + -0x154)" * (cast_expression "(byte **)(puVar30 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x154)" ( (binary_expression "puVar30 + -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 "pbVar22 = (byte *)(uint)*param_3;" (assignment_expression "pbVar22 = (byte *)(uint)*param_3" identifier = (binary_expression "(byte *)(uint)*param_3" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pbVar32 = pbVar32 + 1;" (assignment_expression "pbVar32 = pbVar32 + 1" identifier = (binary_expression "pbVar32 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar30 + -0x154) = param_3 + 1;" (assignment_expression "*(byte **)(puVar30 + -0x154) = param_3 + 1" (pointer_expression "*(byte **)(puVar30 + -0x154)" * (cast_expression "(byte **)(puVar30 + -0x154)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x154)" ( (binary_expression "puVar30 + -0x154" identifier + number_literal) )))) = (binary_expression "param_3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar22 != (byte *)0x0)" ( (binary_expression "pbVar22 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }" if (parenthesized_expression "(pbVar32 != pbVar14)" ( (binary_expression "pbVar32 != pbVar14" identifier != identifier) )) (compound_statement "{\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }" { (expression_statement "param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);" (assignment_expression "param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8)" identifier = (cast_expression "(byte *)(*(uint *)(puVar30 + 0x10) & 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(uint *)(puVar30 + 0x10) & 8)" ( (binary_expression "*(uint *)(puVar30 + 0x10) & 8" (pointer_expression "*(uint *)(puVar30 + 0x10)" * (cast_expression "(uint *)(puVar30 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + 0x10)" ( (binary_expression "puVar30 + 0x10" identifier + number_literal) )))) & number_literal) )))) ;) (if_statement "if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\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      uVar3 = 1;\n    }" { (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }" else (compound_statement "{\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }" { (expression_statement "uVar3 = (uint)(*pbVar32 != 0x2f);" (assignment_expression "uVar3 = (uint)(*pbVar32 != 0x2f)" identifier = (call_expression "(uint)(*pbVar32 != 0x2f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar32 != 0x2f)" ( (binary_expression "*pbVar32 != 0x2f" (pointer_expression "*pbVar32" * identifier) != number_literal) )))) ;) }))) })) (labeled_statement "LAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);" statement_identifier : (expression_statement "iVar12 = *(int *)(puVar30 + -0x2c);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar30 + -0x2c)" * (cast_expression "(int *)(puVar30 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x2c)" ( (binary_expression "puVar30 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }" if (parenthesized_expression "(iVar12 == **(int **)(puVar30 + -0x144))" ( (binary_expression "iVar12 == **(int **)(puVar30 + -0x144)" identifier == (pointer_expression "**(int **)(puVar30 + -0x144)" * (pointer_expression "*(int **)(puVar30 + -0x144)" * (cast_expression "(int **)(puVar30 + -0x144)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x144)" ( (binary_expression "puVar30 + -0x144" identifier + number_literal) )))))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar33 = *(code **)(puVar2 + -0x7b8c);" (assignment_expression "pcVar33 = *(code **)(puVar2 + -0x7b8c)" identifier = (pointer_expression "*(code **)(puVar2 + -0x7b8c)" * (cast_expression "(code **)(puVar2 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + -0x7b8c)" ( (binary_expression "puVar2 + -0x7b8c" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = rpl_fnmatch;" (assignment_expression "pcVar34 = rpl_fnmatch" identifier = identifier) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar29 = *(code **)(pcVar33 + 0x302e0);" (assignment_expression "pcVar29 = *(code **)(pcVar33 + 0x302e0)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x302e0)" * (cast_expression "(code **)(pcVar33 + 0x302e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x302e0)" ( (binary_expression "pcVar33 + 0x302e0" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar30 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar30 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar30 + -0x19c)" * (cast_expression "(uint *)(puVar30 + -0x19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x19c)" ( (binary_expression "puVar30 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar5 = *(int **)(pcVar33 + 0x30338);" (assignment_expression "piVar5 = *(int **)(pcVar33 + 0x30338)" identifier = (pointer_expression "*(int **)(pcVar33 + 0x30338)" * (cast_expression "(int **)(pcVar33 + 0x30338)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x30338)" ( (binary_expression "pcVar33 + 0x30338" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar30 + -0x180) = pbVar32;" (assignment_expression "*(byte **)(puVar30 + -0x180) = pbVar32" (pointer_expression "*(byte **)(puVar30 + -0x180)" * (cast_expression "(byte **)(puVar30 + -0x180)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x180)" ( (binary_expression "puVar30 + -0x180" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x198) = pbVar22;" (assignment_expression "*(byte **)(puVar30 + -0x198) = pbVar22" (pointer_expression "*(byte **)(puVar30 + -0x198)" * (cast_expression "(byte **)(puVar30 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x198)" ( (binary_expression "puVar30 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;" (assignment_expression "*(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c" (pointer_expression "*(code **)(puVar30 + -0x1c8)" * (cast_expression "(code **)(puVar30 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x37e9c" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar30 + -0x17c) = pcVar34;" (assignment_expression "*(code **)(puVar30 + -0x17c) = pcVar34" (pointer_expression "*(code **)(puVar30 + -0x17c)" * (cast_expression "(code **)(puVar30 + -0x17c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x17c)" ( (binary_expression "puVar30 + -0x17c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x184) = iVar11;" (assignment_expression "*(int *)(puVar30 + -0x184) = iVar11" (pointer_expression "*(int *)(puVar30 + -0x184)" * (cast_expression "(int *)(puVar30 + -0x184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x184)" ( (binary_expression "puVar30 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar30 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar30 + -0x188)" * (cast_expression "(byte **)(puVar30 + -0x188)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x188)" ( (binary_expression "puVar30 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x18c) = unaff_s5;" (assignment_expression "*(int *)(puVar30 + -0x18c) = unaff_s5" (pointer_expression "*(int *)(puVar30 + -0x18c)" * (cast_expression "(int *)(puVar30 + -0x18c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x18c)" ( (binary_expression "puVar30 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -400) = param_3;" (assignment_expression "*(byte **)(puVar30 + -400) = param_3" (pointer_expression "*(byte **)(puVar30 + -400)" * (cast_expression "(byte **)(puVar30 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -400)" ( (binary_expression "puVar30 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x194) = pbVar14;" (assignment_expression "*(byte **)(puVar30 + -0x194) = pbVar14" (pointer_expression "*(byte **)(puVar30 + -0x194)" * (cast_expression "(byte **)(puVar30 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x194)" ( (binary_expression "puVar30 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x1a0) = param_2;" (assignment_expression "*(byte **)(puVar30 + -0x1a0) = param_2" (pointer_expression "*(byte **)(puVar30 + -0x1a0)" * (cast_expression "(byte **)(puVar30 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1a0)" ( (binary_expression "puVar30 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x1b4) = iVar12;" (assignment_expression "*(int *)(puVar30 + -0x1b4) = iVar12" (pointer_expression "*(int *)(puVar30 + -0x1b4)" * (cast_expression "(int *)(puVar30 + -0x1b4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1b4)" ( (binary_expression "puVar30 + -0x1b4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar30 + -0x1b8) = pbVar13;" (assignment_expression "*(byte **)(puVar30 + -0x1b8) = pbVar13" (pointer_expression "*(byte **)(puVar30 + -0x1b8)" * (cast_expression "(byte **)(puVar30 + -0x1b8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1b8)" ( (binary_expression "puVar30 + -0x1b8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x1a4) = *piVar5;" (assignment_expression "*(int *)(puVar30 + -0x1a4) = *piVar5" (pointer_expression "*(int *)(puVar30 + -0x1a4)" * (cast_expression "(int *)(puVar30 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1a4)" ( (binary_expression "puVar30 + -0x1a4" identifier + number_literal) )))) = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "iVar11 = (*pcVar29)();" (assignment_expression "iVar11 = (*pcVar29)()" identifier = (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" if (parenthesized_expression "(iVar11 != 1)" ( (binary_expression "iVar11 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" { (expression_statement "puVar21 = puVar30 + -0x1ac;" (assignment_expression "puVar21 = puVar30 + -0x1ac" identifier = (binary_expression "puVar30 + -0x1ac" identifier + number_literal)) ;) (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "puVar24 = puVar30 + -0x1b4;" (assignment_expression "puVar24 = puVar30 + -0x1b4" identifier = (binary_expression "puVar30 + -0x1b4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar30 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar30 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1ac)" ( (binary_expression "puVar30 + -0x1ac" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar30 + -0x1a8)" * (cast_expression "(undefined4 *)(puVar30 + -0x1a8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1a8)" ( (binary_expression "puVar30 + -0x1a8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = (*pcVar33)(0,puVar24,0,puVar21);" (assignment_expression "iVar11 = (*pcVar33)(0,puVar24,0,puVar21)" identifier = (call_expression "(*pcVar33)(0,puVar24,0,puVar21)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(0,puVar24,0,puVar21)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "uVar3 = iVar11 + 1;" (assignment_expression "uVar3 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" { (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" ( (pointer_expression "**(code **)(iVar12 + -0x7b68)" * (pointer_expression "*(code **)(iVar12 + -0x7b68)" * (cast_expression "(code **)(iVar12 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b68)" ( (binary_expression "iVar12 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "uVar16 = 0x129;" (assignment_expression "uVar16 = 0x129" identifier = number_literal) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) goto LAB_0002b570;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;)) (expression_statement "piVar26 = (int *)(puVar30 + -0x1b8);" (assignment_expression "piVar26 = (int *)(puVar30 + -0x1b8)" identifier = (cast_expression "(int *)(puVar30 + -0x1b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1b8)" ( (binary_expression "puVar30 + -0x1b8" identifier + number_literal) )))) ;) (expression_statement "piVar20 = piVar26;" (assignment_expression "piVar20 = piVar26" identifier = identifier) ;) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(0,piVar26,0,puVar21)" ( number_literal , identifier , number_literal , identifier )))) ;) (expression_statement "iVar18 = iVar11 + 1;" (assignment_expression "iVar18 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }" if (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }" { (expression_statement "iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);" (assignment_expression "iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" ( (pointer_expression "**(code **)(iVar12 + -0x7b68)" * (pointer_expression "*(code **)(iVar12 + -0x7b68)" * (cast_expression "(code **)(iVar12 + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b68)" ( (binary_expression "iVar12 + -0x7b68" identifier + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }" { (expression_statement "uVar16 = 0x12d;" (assignment_expression "uVar16 = 0x12d" identifier = number_literal) ;) (goto_statement "goto LAB_0002b570;" goto statement_identifier ;) })) (expression_statement "uVar19 = uVar3 + iVar18;" (assignment_expression "uVar19 = uVar3 + iVar18" identifier = (binary_expression "uVar3 + iVar18" identifier + identifier)) ;) (if_statement "if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" if (parenthesized_expression "((uVar3 <= uVar19) && (uVar19 < 0x40000000))" ( (binary_expression "(uVar3 <= uVar19) && (uVar19 < 0x40000000)" (parenthesized_expression "(uVar3 <= uVar19)" ( (binary_expression "uVar3 <= uVar19" identifier <= identifier) )) && (parenthesized_expression "(uVar19 < 0x40000000)" ( (binary_expression "uVar19 < 0x40000000" identifier < number_literal) ))) )) (compound_statement "{\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" { (if_statement "if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(uVar19 < 2000)" ( (binary_expression "uVar19 < 2000" identifier < number_literal) )) (compound_statement "{\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar19 * 4 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar19 * 4 + 7 & 0xfffffff8)" ( (binary_expression "uVar19 * 4 + 7 & 0xfffffff8" (binary_expression "uVar19 * 4 + 7" (binary_expression "uVar19 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar25 = puVar30 + iVar17 + -0x1c8;" (assignment_expression "puVar25 = puVar30 + iVar17 + -0x1c8" identifier = (binary_expression "puVar30 + iVar17 + -0x1c8" (binary_expression "puVar30 + iVar17" identifier + identifier) + number_literal)) ;) (expression_statement "piVar20 = (int *)(puVar25 + uVar3 * 4);" (assignment_expression "piVar20 = (int *)(puVar25 + uVar3 * 4)" identifier = (cast_expression "(int *)(puVar25 + uVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar25 + uVar3 * 4)" ( (binary_expression "puVar25 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "(**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);" (call_expression "(**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(puVar25,puVar24,uVar3,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);" (assignment_expression "iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }" { (labeled_statement "LAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );" statement_identifier : (do_statement "do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );" do (compound_statement "{\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              }" { (expression_statement "uVar16 = 0x147;" (assignment_expression "uVar16 = 0x147" identifier = number_literal) ;) (labeled_statement "LAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);" statement_identifier : (expression_statement "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);" (call_expression "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar12 + -0x7ce0))" ( (pointer_expression "**(code **)(iVar12 + -0x7ce0)" * (pointer_expression "*(code **)(iVar12 + -0x7ce0)" * (cast_expression "(code **)(iVar12 + -0x7ce0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7ce0)" ( (binary_expression "iVar12 + -0x7ce0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558)" ( (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) , identifier , (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar12 + -0x7e24)" * (cast_expression "(int *)(iVar12 + -0x7e24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + -0x7e24)" ( (binary_expression "iVar12 + -0x7e24" identifier + number_literal) )))) + number_literal) ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "(**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);" (call_expression "(**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" ( (pointer_expression "**(code **)(iVar12 + -0x7b28)" * (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) )) (argument_list "(piVar20,piVar26,iVar18,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + iVar17 + -0x1d0)" * (cast_expression "(byte **)(puVar30 + iVar17 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + iVar17 + -0x1d0)" ( (binary_expression "puVar30 + iVar17 + -0x1d0" (binary_expression "puVar30 + iVar17" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( identifier , identifier , (binary_expression "piVar20 + iVar11" 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 "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) (expression_statement "iVar17 = (**(code **)(iVar12 + -0x7be8))();" (assignment_expression "iVar17 = (**(code **)(iVar12 + -0x7be8))()" identifier = (call_expression "(**(code **)(iVar12 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7be8))" ( (pointer_expression "**(code **)(iVar12 + -0x7be8)" * (pointer_expression "*(code **)(iVar12 + -0x7be8)" * (cast_expression "(code **)(iVar12 + -0x7be8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7be8)" ( (binary_expression "iVar12 + -0x7be8" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" { (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar30 + -0x1bc) = iVar17;" (assignment_expression "*(int *)(puVar30 + -0x1bc) = iVar17" (pointer_expression "*(int *)(puVar30 + -0x1bc)" * (cast_expression "(int *)(puVar30 + -0x1bc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = (int *)(iVar17 + uVar3 * 4);" (assignment_expression "piVar20 = (int *)(iVar17 + uVar3 * 4)" identifier = (cast_expression "(int *)(iVar17 + uVar3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + uVar3 * 4)" ( (binary_expression "iVar17 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "(*pcVar33)(iVar17,puVar24,uVar3,puVar21);" (call_expression "(*pcVar33)(iVar17,puVar24,uVar3,puVar21)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(iVar17,puVar24,uVar3,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);" (assignment_expression "iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" identifier = (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b68)" ( (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar21)" ( identifier )))) ;) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar17 == 0) goto LAB_0002b590;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b590;" goto statement_identifier ;)) (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" identifier = (pointer_expression "*(code **)(iVar12 + -0x7b28)" * (cast_expression "(code **)(iVar12 + -0x7b28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7b28)" ( (binary_expression "iVar12 + -0x7b28" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar33)(piVar20,piVar26,iVar18,puVar21);" (call_expression "(*pcVar33)(piVar20,piVar26,iVar18,puVar21)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(piVar20,piVar26,iVar18,puVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(byte **)(puVar30 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0x1d0)" * (cast_expression "(byte **)(puVar30 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1d0)" ( (binary_expression "puVar30 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) , identifier , (binary_expression "piVar20 + iVar11" 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 *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b54)" ( (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar30 + -0x1bc))" ( (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" * (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1bc)" ( (binary_expression "puVar30 + -0x1bc" identifier + number_literal) )))) ))) ;) (expression_statement "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" identifier = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();" (assignment_expression "puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" identifier = (cast_expression "(undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar12 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7c3c))" ( (pointer_expression "**(code **)(iVar12 + -0x7c3c)" * (pointer_expression "*(code **)(iVar12 + -0x7c3c)" * (cast_expression "(code **)(iVar12 + -0x7c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7c3c)" ( (binary_expression "iVar12 + -0x7c3c" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0xc;" (assignment_expression "*puVar4 = 0xc" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002b300;" goto statement_identifier ;) })) })) })) (expression_statement "piVar20 = *(int **)(puVar30 + -0x1b8);" (assignment_expression "piVar20 = *(int **)(puVar30 + -0x1b8)" identifier = (pointer_expression "*(int **)(puVar30 + -0x1b8)" * (cast_expression "(int **)(puVar30 + -0x1b8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1b8)" ( (binary_expression "puVar30 + -0x1b8" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20)" identifier = (call_expression "(**(code **)(iVar12 + -0x7c0c))(piVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7c0c))" ( (pointer_expression "**(code **)(iVar12 + -0x7c0c)" * (pointer_expression "*(code **)(iVar12 + -0x7c0c)" * (cast_expression "(code **)(iVar12 + -0x7c0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + -0x7c0c)" ( (binary_expression "iVar12 + -0x7c0c" identifier + number_literal) ))))) )) (argument_list "(piVar20)" ( identifier )))) ;) (expression_statement "*(byte **)(puVar30 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0x1d0)" * (cast_expression "(byte **)(puVar30 + -0x1d0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x1d0)" ( (binary_expression "puVar30 + -0x1d0" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier = (call_expression "FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" identifier (argument_list "(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" ( (pointer_expression "*(undefined4 *)(puVar30 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar30 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1b4)" ( (binary_expression "puVar30 + -0x1b4" identifier + number_literal) )))) , identifier , (binary_expression "(int)piVar20 + iVar11" (cast_expression "(int)piVar20" ( (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 "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1c8)" * (cast_expression "(int *)(puVar30 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c8)" ( (binary_expression "puVar30 + -0x1c8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);" statement_identifier : (expression_statement "iVar12 = *(int *)(puVar30 + -0x1a4);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1a4)" identifier = (pointer_expression "*(int *)(puVar30 + -0x1a4)" * (cast_expression "(int *)(puVar30 + -0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1a4)" ( (binary_expression "puVar30 + -0x1a4" identifier + number_literal) ))))) ;)) (if_statement "if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }" if (parenthesized_expression "(iVar12 != *piVar5)" ( (binary_expression "iVar12 != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }" { (expression_statement "(**(code **)(iVar11 + -0x7b8c))();" (call_expression "(**(code **)(iVar11 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar11 + -0x7b8c))" ( (pointer_expression "**(code **)(iVar11 + -0x7b8c)" * (pointer_expression "*(code **)(iVar11 + -0x7b8c)" * (cast_expression "(code **)(iVar11 + -0x7b8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + -0x7b8c)" ( (binary_expression "iVar11 + -0x7b8c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar11 = piVar20[8];" (assignment_expression "iVar11 = piVar20[8]" identifier = (subscript_expression "piVar20[8]" identifier [ number_literal ])) ;) (expression_statement "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" identifier = (pointer_expression "*piVar20" * identifier)) ;) (expression_statement "uVar3 = (uint)(iVar11 < iVar18);" (assignment_expression "uVar3 = (uint)(iVar11 < iVar18)" identifier = (call_expression "(uint)(iVar11 < iVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar11 < iVar18)" ( (binary_expression "iVar11 < iVar18" identifier < identifier) )))) ;) (expression_statement "uVar19 = piVar20[7];" (assignment_expression "uVar19 = piVar20[7]" identifier = (subscript_expression "piVar20[7]" identifier [ number_literal ])) ;) (if_statement "if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }" if (parenthesized_expression "((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0))" ( (binary_expression "(uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" ( (comma_expression "uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0" (assignment_expression "uVar3 = (uint)((int)uVar19 < iVar11)" identifier = (call_expression "(uint)((int)uVar19 < iVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar19 < iVar11)" ( (binary_expression "(int)uVar19 < iVar11" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )))) , (binary_expression "uVar3 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }" { (expression_statement "iVar8 = iVar18 - iVar11;" (assignment_expression "iVar8 = iVar18 - iVar11" identifier = (binary_expression "iVar18 - iVar11" identifier - identifier)) ;) (expression_statement "uVar6 = uVar19;" (assignment_expression "uVar6 = uVar19" identifier = identifier) ;) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" identifier = identifier) ;) (do_statement "do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));" do (compound_statement "{\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      }" { (expression_statement "iVar15 = iVar11 - uVar6;" (assignment_expression "iVar15 = iVar11 - uVar6" identifier = (binary_expression "iVar11 - uVar6" identifier - identifier)) ;) (expression_statement "uVar3 = iVar8 + uVar6;" (assignment_expression "uVar3 = iVar8 + uVar6" identifier = (binary_expression "iVar8 + uVar6" identifier + identifier)) ;) (if_statement "if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" if (parenthesized_expression "(iVar15 < iVar8)" ( (binary_expression "iVar15 < iVar8" identifier < identifier) )) (compound_statement "{\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }" { (expression_statement "iVar17 = iVar17 - iVar15;" (assignment_expression "iVar17 = iVar17 - iVar15" identifier = (binary_expression "iVar17 - iVar15" identifier - identifier)) ;) (expression_statement "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);" (assignment_expression "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + uVar6 * 4)" ( (binary_expression "iVar12 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);" (assignment_expression "puVar10 = (undefined4 *)(iVar12 + iVar17 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + iVar17 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar17 * 4)" ( (binary_expression "iVar12 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);" do (compound_statement "{\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "puVar9 = puVar4 + 1;" (assignment_expression "puVar9 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = *puVar4;" (assignment_expression "uVar16 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*puVar4 = *puVar10;" (assignment_expression "*puVar4 = *puVar10" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*puVar10 = uVar16;" (assignment_expression "*puVar10 = uVar16" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "uVar3 = uVar6;" (assignment_expression "uVar3 = uVar6" identifier = identifier) ;) (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" identifier = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9)" ( (binary_expression "(undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9" (cast_expression "(undefined4 *)(iVar12 + (iVar15 + uVar6) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + (iVar15 + uVar6) * 4)" ( (binary_expression "iVar12 + (iVar15 + uVar6) * 4" identifier + (binary_expression "(iVar15 + uVar6) * 4" (parenthesized_expression "(iVar15 + uVar6)" ( (binary_expression "iVar15 + uVar6" identifier + identifier) )) * number_literal)) ))) != identifier) )) ;) }) (else_clause "else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" else (compound_statement "{\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" { (expression_statement "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);" (assignment_expression "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + uVar6 * 4)" ( (binary_expression "iVar12 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);" (assignment_expression "puVar10 = (undefined4 *)(iVar12 + iVar11 * 4)" identifier = (cast_expression "(undefined4 *)(iVar12 + iVar11 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar11 * 4)" ( (binary_expression "iVar12 + iVar11 * 4" identifier + (binary_expression "iVar11 * 4" identifier * number_literal)) )))) ;) (do_statement "do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));" do (compound_statement "{\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "puVar9 = puVar4 + 1;" (assignment_expression "puVar9 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = *puVar4;" (assignment_expression "uVar16 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "*puVar4 = *puVar10;" (assignment_expression "*puVar4 = *puVar10" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "*puVar10 = uVar16;" (assignment_expression "*puVar10 = uVar16" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" identifier = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != (undefined4 *)(iVar12 + uVar3 * 4))" ( (binary_expression "puVar9 != (undefined4 *)(iVar12 + uVar3 * 4)" identifier != (cast_expression "(undefined4 *)(iVar12 + uVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + uVar3 * 4)" ( (binary_expression "iVar12 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) )) ;) }))) }) while (parenthesized_expression "((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11))" ( (binary_expression "(iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11)" (parenthesized_expression "(iVar11 < iVar17)" ( (binary_expression "iVar11 < iVar17" identifier < identifier) )) && (parenthesized_expression "(iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11)" ( (comma_expression "iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11" (assignment_expression "iVar8 = iVar17 - iVar11" identifier = (binary_expression "iVar17 - iVar11" identifier - identifier)) , (comma_expression "uVar6 = uVar3, (int)uVar3 < iVar11" (assignment_expression "uVar6 = uVar3" identifier = identifier) , (binary_expression "(int)uVar3 < iVar11" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier))) ))) )) ;) })) (expression_statement "piVar20[8] = iVar18;" (assignment_expression "piVar20[8] = iVar18" (subscript_expression "piVar20[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar20[7] = (iVar18 - iVar11) + uVar19;" (assignment_expression "piVar20[7] = (iVar18 - iVar11) + uVar19" (subscript_expression "piVar20[7]" identifier [ number_literal ]) = (binary_expression "(iVar18 - iVar11) + uVar19" (parenthesized_expression "(iVar18 - iVar11)" ( (binary_expression "iVar18 - iVar11" identifier - identifier) )) + identifier)) ;) (return_statement "return uVar3;" return identifier ;) })) (return_statement "return uVar3;" 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 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 (pointer_declarator * 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 = IDENT) ;) (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 ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )) (compound_statement { (expression_statement (assignment_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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (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 * (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 = (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 ])))) ;) }) (else_clause else (compound_statement { (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == 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 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 = (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 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 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 (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) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;)) }) (else_clause else (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 = (binary_expression 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 == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (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 (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) - LIT) < LIT) )) (compound_statement { (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 = (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (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 (subscript_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 ;) })) (break_statement break ;) })) (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)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) 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 *)) ) (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 * (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 (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 *)) ) (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_00029f20(int param_1,byte *param_2,byte *param_3,byte *param_4)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}" (type_identifier "uint") (function_declarator "FUN_00029f20(int param_1,byte *param_2,byte *param_3,byte *param_4)" (identifier "FUN_00029f20") (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  undefined *puVar2;\n  uint uVar3;\n  byte bVar7;\n  undefined4 *puVar4;\n  int *piVar5;\n  uint uVar6;\n  int iVar8;\n  undefined4 *puVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  int iVar12;\n  byte *pbVar13;\n  byte *pbVar14;\n  int iVar15;\n  undefined4 uVar16;\n  int iVar17;\n  int iVar18;\n  uint uVar19;\n  int *piVar20;\n  undefined1 *puVar21;\n  uint unaff_s1;\n  byte *pbVar22;\n  byte *pbVar23;\n  undefined *unaff_s3;\n  int unaff_s5;\n  undefined1 *puVar24;\n  undefined1 *puVar25;\n  byte *unaff_s6;\n  int *piVar26;\n  byte *pbVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined1 *puVar30;\n  undefined1 *puVar31;\n  byte *pbVar32;\n  code *pcVar33;\n  code *pcVar34;\n  undefined1 auStack_68 [24];\n  byte *local_44;\n  int *local_34;\n  int local_30;\n  byte *local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0005b58c;\n  puVar30 = auStack_68;\n  pbVar27 = param_2 + 1;\n  local_30 = 0;\n  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;\n  pbVar13 = param_2;\n  pbVar14 = param_3;\n  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);\n  puVar28 = PTR_DAT_0005b118;\n  iVar11 = (int)(char)param_2[1];\n  if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }\nLAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }\n  pcVar33 = FUN_0002a610;\n  pbVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_0005b564;\n  (*(code *)PTR___stack_chk_fail_0005b564)();\n  puVar2 = puVar28 + 0x38ae0;\n  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);\n  *(undefined1 **)(puVar30 + -8) = auStack_68;\n  *(undefined **)(puVar30 + -0x1c) = unaff_s3;\n  *(undefined **)(puVar30 + -0x160) = puVar2;\n  *(code **)(puVar30 + -4) = pcVar33;\n  *(byte **)(puVar30 + -0xc) = pbVar27;\n  *(byte **)(puVar30 + -0x10) = unaff_s6;\n  *(int *)(puVar30 + -0x14) = unaff_s5;\n  *(byte **)(puVar30 + -0x18) = param_3;\n  *(undefined **)(puVar30 + -0x20) = puVar1;\n  *(uint *)(puVar30 + -0x24) = unaff_s1;\n  *(byte **)(puVar30 + -0x28) = param_2;\n  *(undefined4 **)(puVar30 + -0x144) = puVar4;\n  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;\n  pbVar22 = (byte *)(uint)*pbVar23;\n  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;\n  iVar11 = *(int *)(puVar28 + 0x30cbc);\n  pbVar27 = pbVar14;\n  pbVar32 = pbVar13;\n  if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }\n  uVar3 = 0;\n  if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }\nLAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);\n  if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }\n  pcVar33 = *(code **)(puVar2 + -0x7b8c);\n  pcVar34 = rpl_fnmatch;\n  (*pcVar33)();\n  pcVar29 = *(code **)(pcVar33 + 0x302e0);\n  *(uint *)(puVar30 + -0x19c) = unaff_s1;\n  piVar5 = *(int **)(pcVar33 + 0x30338);\n  *(byte **)(puVar30 + -0x180) = pbVar32;\n  *(byte **)(puVar30 + -0x198) = pbVar22;\n  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;\n  *(code **)(puVar30 + -0x17c) = pcVar34;\n  *(int *)(puVar30 + -0x184) = iVar11;\n  *(byte **)(puVar30 + -0x188) = unaff_s6;\n  *(int *)(puVar30 + -0x18c) = unaff_s5;\n  *(byte **)(puVar30 + -400) = param_3;\n  *(byte **)(puVar30 + -0x194) = pbVar14;\n  *(byte **)(puVar30 + -0x1a0) = param_2;\n  *(int *)(puVar30 + -0x1b4) = iVar12;\n  *(byte **)(puVar30 + -0x1b8) = pbVar13;\n  *(int *)(puVar30 + -0x1a4) = *piVar5;\n  iVar11 = (*pcVar29)();\n  iVar12 = *(int *)(puVar30 + -0x1c8);\n  if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }\n  piVar20 = *(int **)(puVar30 + -0x1b8);\n  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);\n  *(byte **)(puVar30 + -0x1d0) = pbVar27;\n  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n  iVar11 = *(int *)(puVar30 + -0x1c8);\nLAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);\n  if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }\n  return uVar3;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "undefined1 *puVar21;" (type_identifier "undefined1") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "uint unaff_s1;" (type_identifier "uint") (identifier "unaff_s1") (; ";")) (declaration "byte *pbVar22;" (type_identifier "byte") (pointer_declarator "*pbVar22" (* "*") (identifier "pbVar22")) (; ";")) (declaration "byte *pbVar23;" (type_identifier "byte") (pointer_declarator "*pbVar23" (* "*") (identifier "pbVar23")) (; ";")) (declaration "undefined *unaff_s3;" (type_identifier "undefined") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "int unaff_s5;" (primitive_type "int") (identifier "unaff_s5") (; ";")) (declaration "undefined1 *puVar24;" (type_identifier "undefined1") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "undefined1 *puVar25;" (type_identifier "undefined1") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "byte *unaff_s6;" (type_identifier "byte") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "int *piVar26;" (primitive_type "int") (pointer_declarator "*piVar26" (* "*") (identifier "piVar26")) (; ";")) (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 "undefined1 *puVar30;" (type_identifier "undefined1") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "undefined1 *puVar31;" (type_identifier "undefined1") (pointer_declarator "*puVar31" (* "*") (identifier "puVar31")) (; ";")) (declaration "byte *pbVar32;" (type_identifier "byte") (pointer_declarator "*pbVar32" (* "*") (identifier "pbVar32")) (; ";")) (declaration "code *pcVar33;" (type_identifier "code") (pointer_declarator "*pcVar33" (* "*") (identifier "pcVar33")) (; ";")) (declaration "code *pcVar34;" (type_identifier "code") (pointer_declarator "*pcVar34" (* "*") (identifier "pcVar34")) (; ";")) (declaration "undefined1 auStack_68 [24];" (type_identifier "undefined1") (array_declarator "auStack_68 [24]" (identifier "auStack_68") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "byte *local_44;" (type_identifier "byte") (pointer_declarator "*local_44" (* "*") (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 "byte *local_2c;" (type_identifier "byte") (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 "puVar30 = auStack_68;" (assignment_expression "puVar30 = auStack_68" (identifier "puVar30") (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "pbVar27 = param_2 + 1;" (assignment_expression "pbVar27 = param_2 + 1" (identifier "pbVar27") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;" (assignment_expression "local_2c = *(byte **)PTR___stack_chk_guard_0005b58c" (identifier "local_2c") (= "=") (pointer_expression "*(byte **)PTR___stack_chk_guard_0005b58c" (* "*") (cast_expression "(byte **)PTR___stack_chk_guard_0005b58c" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_0005b58c")))) (; ";")) (expression_statement "pbVar13 = param_2;" (assignment_expression "pbVar13 = param_2" (identifier "pbVar13") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar14 = param_3;" (assignment_expression "pbVar14 = param_3" (identifier "pbVar14") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);" (assignment_expression "local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2)" (identifier "local_44") (= "=") (cast_expression "(byte *)(*(code *)PTR_strlen_0005b4e4)(param_2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_strlen_0005b4e4)(param_2)" (parenthesized_expression "(*(code *)PTR_strlen_0005b4e4)" (( "(") (pointer_expression "*(code *)PTR_strlen_0005b4e4" (* "*") (cast_expression "(code *)PTR_strlen_0005b4e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strlen_0005b4e4"))) () ")")) (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 "iVar11 = (int)(char)param_2[1];" (assignment_expression "iVar11 = (int)(char)param_2[1]" (identifier "iVar11") (= "=") (cast_expression "(int)(char)param_2[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)param_2[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (if_statement "if (iVar11 != 0) {\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    unaff_s5 = 0;\n    unaff_s1 = (uint)(param_1 - 0x3fU < 2);\n    puVar2 = PTR_DAT_0005b2cc + -0x78dc;\n    local_34 = &local_30;\n    puVar21 = auStack_68;\n    unaff_s6 = pbVar27;\nLAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);\n  }" ({ "{") (expression_statement "unaff_s5 = 0;" (assignment_expression "unaff_s5 = 0" (identifier "unaff_s5") (= "=") (number_literal "0")) (; ";")) (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 "puVar2 = PTR_DAT_0005b2cc + -0x78dc;" (assignment_expression "puVar2 = PTR_DAT_0005b2cc + -0x78dc" (identifier "puVar2") (= "=") (binary_expression "PTR_DAT_0005b2cc + -0x78dc" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x78dc"))) (; ";")) (expression_statement "local_34 = &local_30;" (assignment_expression "local_34 = &local_30" (identifier "local_34") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "puVar21 = auStack_68;" (assignment_expression "puVar21 = auStack_68" (identifier "puVar21") (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "unaff_s6 = pbVar27;" (assignment_expression "unaff_s6 = pbVar27" (identifier "unaff_s6") (= "=") (identifier "pbVar27")) (; ";")) (labeled_statement "LAB_00029fdc:\n    do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);" (statement_identifier "LAB_00029fdc") (: ":") (do_statement "do {\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    } while (iVar11 != 0);" (do "do") (compound_statement "{\n      puVar30 = puVar21;\n      unaff_s3 = puVar28;\n      if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }\n      puVar21 = puVar30;\n    }" ({ "{") (expression_statement "puVar30 = puVar21;" (assignment_expression "puVar30 = puVar21" (identifier "puVar30") (= "=") (identifier "puVar21")) (; ";")) (expression_statement "unaff_s3 = puVar28;" (assignment_expression "unaff_s3 = puVar28" (identifier "unaff_s3") (= "=") (identifier "puVar28")) (; ";")) (if_statement "if (iVar11 == 0x5b) {\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }\n      else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" (if "if") (parenthesized_expression "(iVar11 == 0x5b)" (( "(") (binary_expression "iVar11 == 0x5b" (identifier "iVar11") (== "==") (number_literal "0x5b")) () ")")) (compound_statement "{\n        if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }\n        bVar7 = pbVar27[1];\n        pbVar23 = pbVar27 + 1;\n        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }\n        if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }\n        pbVar13 = (byte *)0x5d;\n        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }\n        iVar11 = (int)(char)pbVar23[1];\n      }" ({ "{") (if_statement "if (*(int *)(puVar28 + -0x4730) == 0) {\n          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\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          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);\n          uVar16 = 0xffffffff;\n          if (iVar11 != 0) {\n            uVar16 = 1;\n          }\n          *(undefined4 *)(puVar28 + -0x4730) = uVar16;\n        }" ({ "{") (expression_statement "iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);" (assignment_expression "iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR_getenv_0005b510)(puVar2)" (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 "(puVar2)" (( "(") (identifier "puVar2") () ")")))) (; ";")) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" (identifier "uVar16") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (iVar11 != 0) {\n            uVar16 = 1;\n          }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar16 = 1;\n          }" ({ "{") (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" (identifier "uVar16") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar28 + -0x4730) = uVar16;" (assignment_expression "*(undefined4 *)(puVar28 + -0x4730) = uVar16" (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 "uVar16")) (; ";")) (} "}"))) (expression_statement "bVar7 = pbVar27[1];" (assignment_expression "bVar7 = pbVar27[1]" (identifier "bVar7") (= "=") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar23 = pbVar27 + 1;" (assignment_expression "pbVar23 = pbVar27 + 1" (identifier "pbVar23") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }" (if "if") (parenthesized_expression "((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e))))" (( "(") (binary_expression "(bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))" (parenthesized_expression "(bVar7 == 0x21)" (( "(") (binary_expression "bVar7 == 0x21" (identifier "bVar7") (== "==") (number_literal "0x21")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))" (( "(") (parenthesized_expression "(*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e))" (( "(") (binary_expression "*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 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 "(bVar7 == 0x5e)" (( "(") (binary_expression "bVar7 == 0x5e" (identifier "bVar7") (== "==") (number_literal "0x5e")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          bVar7 = pbVar27[2];\n          pbVar23 = pbVar27 + 2;\n        }" ({ "{") (expression_statement "bVar7 = pbVar27[2];" (assignment_expression "bVar7 = pbVar27[2]" (identifier "bVar7") (= "=") (subscript_expression "pbVar27[2]" (identifier "pbVar27") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pbVar23 = pbVar27 + 2;" (assignment_expression "pbVar23 = pbVar27 + 2" (identifier "pbVar23") (= "=") (binary_expression "pbVar27 + 2" (identifier "pbVar27") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (bVar7 == 0x5d) {\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" (if "if") (parenthesized_expression "(bVar7 == 0x5d)" (( "(") (binary_expression "bVar7 == 0x5d" (identifier "bVar7") (== "==") (number_literal "0x5d")) () ")")) (compound_statement "{\n          bVar7 = pbVar23[1];\n          pbVar23 = pbVar23 + 1;\n        }" ({ "{") (expression_statement "bVar7 = pbVar23[1];" (assignment_expression "bVar7 = pbVar23[1]" (identifier "bVar7") (= "=") (subscript_expression "pbVar23[1]" (identifier "pbVar23") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" (identifier "pbVar23") (= "=") (binary_expression "pbVar23 + 1" (identifier "pbVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pbVar13 = (byte *)0x5d;" (assignment_expression "pbVar13 = (byte *)0x5d" (identifier "pbVar13") (= "=") (cast_expression "(byte *)0x5d" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5d"))) (; ";")) (while_statement "while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }" (while "while") (parenthesized_expression "(pbVar27 = pbVar23 + 1, bVar7 != 0x5d)" (( "(") (comma_expression "pbVar27 = pbVar23 + 1, bVar7 != 0x5d" (assignment_expression "pbVar27 = pbVar23 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar23 + 1" (identifier "pbVar23") (+ "+") (number_literal "1"))) (, ",") (binary_expression "bVar7 != 0x5d" (identifier "bVar7") (!= "!=") (number_literal "0x5d"))) () ")")) (compound_statement "{\n          if (bVar7 == 0) goto LAB_0002a034;\n          pbVar23 = pbVar27;\n          bVar7 = *pbVar27;\n        }" ({ "{") (if_statement "if (bVar7 == 0) goto LAB_0002a034;" (if "if") (parenthesized_expression "(bVar7 == 0)" (( "(") (binary_expression "bVar7 == 0" (identifier "bVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002a034;" (goto "goto") (statement_identifier "LAB_0002a034") (; ";"))) (expression_statement "pbVar23 = pbVar27;" (assignment_expression "pbVar23 = pbVar27" (identifier "pbVar23") (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "bVar7 = *pbVar27;" (assignment_expression "bVar7 = *pbVar27" (identifier "bVar7") (= "=") (pointer_expression "*pbVar27" (* "*") (identifier "pbVar27"))) (; ";")) (} "}"))) (expression_statement "iVar11 = (int)(char)pbVar23[1];" (assignment_expression "iVar11 = (int)(char)pbVar23[1]" (identifier "iVar11") (= "=") (cast_expression "(int)(char)pbVar23[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar23[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar23[1]" (identifier "pbVar23") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" (else "else") (compound_statement "{\n        pbVar13 = &DAT_c0000601;\n        uVar3 = iVar11 - 0x21U & 0xff;\n        pbVar14 = (byte *)(uint)(uVar3 < 0x20);\n        if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }\njoined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;\n      }" ({ "{") (expression_statement "pbVar13 = &DAT_c0000601;" (assignment_expression "pbVar13 = &DAT_c0000601" (identifier "pbVar13") (= "=") (pointer_expression "&DAT_c0000601" (& "&") (identifier "DAT_c0000601"))) (; ";")) (expression_statement "uVar3 = iVar11 - 0x21U & 0xff;" (assignment_expression "uVar3 = iVar11 - 0x21U & 0xff" (identifier "uVar3") (= "=") (binary_expression "iVar11 - 0x21U & 0xff" (binary_expression "iVar11 - 0x21U" (identifier "iVar11") (- "-") (number_literal "0x21U")) (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "pbVar14 = (byte *)(uint)(uVar3 < 0x20);" (assignment_expression "pbVar14 = (byte *)(uint)(uVar3 < 0x20)" (identifier "pbVar14") (= "=") (cast_expression "(byte *)(uint)(uVar3 < 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(uVar3 < 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < 0x20)" (( "(") (binary_expression "uVar3 < 0x20" (identifier "uVar3") (< "<") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (pbVar14 == (byte *)0x0) {\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }\n        else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" (if "if") (parenthesized_expression "(pbVar14 == (byte *)0x0)" (( "(") (binary_expression "pbVar14 == (byte *)0x0" (identifier "pbVar14") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }\nLAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];\n        }" ({ "{") (if_statement "if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" (if "if") (parenthesized_expression "((iVar11 == 0x7c) && (unaff_s5 == 0))" (( "(") (binary_expression "(iVar11 == 0x7c) && (unaff_s5 == 0)" (parenthesized_expression "(iVar11 == 0x7c)" (( "(") (binary_expression "iVar11 == 0x7c" (identifier "iVar11") (== "==") (number_literal "0x7c")) () ")")) (&& "&&") (parenthesized_expression "(unaff_s5 == 0)" (( "(") (binary_expression "unaff_s5 == 0" (identifier "unaff_s5") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            pbVar23 = local_44;\n            if (unaff_s1 == 0) {\n              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;\n            pbVar14 = pbVar27 + -(int)unaff_s6;\n            pbVar22 = pbVar27 + 1;\n            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n            puVar31 = puVar30 + iVar12;\n            piVar5 = (int *)(puVar30 + iVar12 + 0x18);\n            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);\n            iVar11 = (int)(char)pbVar27[1];\n            *puVar21 = 0;\n            *piVar5 = 0;\n            *local_34 = (int)piVar5;\n            pbVar13 = unaff_s6;\n            unaff_s6 = pbVar22;\n            pbVar27 = pbVar22;\n            puVar30 = puVar30 + iVar12;\n            local_34 = piVar5;\n            puVar21 = puVar31;\n            if (iVar11 == 0) break;\n            goto LAB_00029fdc;\n          }" ({ "{") (expression_statement "pbVar23 = local_44;" (assignment_expression "pbVar23 = local_44" (identifier "pbVar23") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (unaff_s1 == 0) {\n              pbVar23 = 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              pbVar23 = pbVar27 + (1 - (int)unaff_s6);\n            }" ({ "{") (expression_statement "pbVar23 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "pbVar23 = pbVar27 + (1 - (int)unaff_s6)" (identifier "pbVar23") (= "=") (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)(pbVar23 + 7) & 0xfffffffc) - 4) break;" (if "if") (parenthesized_expression "(0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4)" (( "(") (binary_expression "0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4" (number_literal "0x1f3b") (< "<") (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" (( "(") (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar23 + 7)" (( "(") (binary_expression "pbVar23 + 7" (identifier "pbVar23") (+ "+") (number_literal "7")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (- "-") (number_literal "4"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar14 = pbVar27 + -(int)unaff_s6;" (assignment_expression "pbVar14 = pbVar27 + -(int)unaff_s6" (identifier "pbVar14") (= "=") (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 "pbVar22 = pbVar27 + 1;" (assignment_expression "pbVar22 = pbVar27 + 1" (identifier "pbVar22") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (identifier "iVar12") (= "=") (unary_expression "-(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (( "(") (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(pbVar23 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(pbVar23 + 7) & 0xfffffffc)" (( "(") (binary_expression "(uint)(pbVar23 + 7) & 0xfffffffc" (call_expression "(uint)(pbVar23 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar23 + 7)" (( "(") (binary_expression "pbVar23 + 7" (identifier "pbVar23") (+ "+") (number_literal "7")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar31 = puVar30 + iVar12;" (assignment_expression "puVar31 = puVar30 + iVar12" (identifier "puVar31") (= "=") (binary_expression "puVar30 + iVar12" (identifier "puVar30") (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "piVar5 = (int *)(puVar30 + iVar12 + 0x18);" (assignment_expression "piVar5 = (int *)(puVar30 + iVar12 + 0x18)" (identifier "piVar5") (= "=") (cast_expression "(int *)(puVar30 + iVar12 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + iVar12 + 0x18)" (( "(") (binary_expression "puVar30 + iVar12 + 0x18" (binary_expression "puVar30 + iVar12" (identifier "puVar30") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);" (assignment_expression "puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" (identifier "puVar21") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c)" (parenthesized_expression "(*(code *)PTR_mempcpy_0005b574)" (( "(") (pointer_expression "*(code *)PTR_mempcpy_0005b574" (* "*") (cast_expression "(code *)PTR_mempcpy_0005b574" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_mempcpy_0005b574"))) () ")")) (argument_list "(puVar30 + iVar12 + 0x1c)" (( "(") (binary_expression "puVar30 + iVar12 + 0x1c" (binary_expression "puVar30 + iVar12" (identifier "puVar30") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (int)(char)pbVar27[1]" (identifier "iVar11") (= "=") (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 "*puVar21 = 0;" (assignment_expression "*puVar21 = 0" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_34 = (int)piVar5;" (assignment_expression "*local_34 = (int)piVar5" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (expression_statement "pbVar13 = unaff_s6;" (assignment_expression "pbVar13 = unaff_s6" (identifier "pbVar13") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "unaff_s6 = pbVar22;" (assignment_expression "unaff_s6 = pbVar22" (identifier "unaff_s6") (= "=") (identifier "pbVar22")) (; ";")) (expression_statement "pbVar27 = pbVar22;" (assignment_expression "pbVar27 = pbVar22" (identifier "pbVar27") (= "=") (identifier "pbVar22")) (; ";")) (expression_statement "puVar30 = puVar30 + iVar12;" (assignment_expression "puVar30 = puVar30 + iVar12" (identifier "puVar30") (= "=") (binary_expression "puVar30 + iVar12" (identifier "puVar30") (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "local_34 = piVar5;" (assignment_expression "local_34 = piVar5" (identifier "local_34") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "puVar21 = puVar31;" (assignment_expression "puVar21 = puVar31" (identifier "puVar21") (= "=") (identifier "puVar31")) (; ";")) (if_statement "if (iVar11 == 0) break;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_00029fdc;" (goto "goto") (statement_identifier "LAB_00029fdc") (; ";")) (} "}"))) (labeled_statement "LAB_0002a198:\n          iVar11 = (int)(char)pbVar27[1];" (statement_identifier "LAB_0002a198") (: ":") (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (int)(char)pbVar27[1]" (identifier "iVar11") (= "=") (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") (] "]"))))) (; ";"))) (} "}")) (else_clause "else {\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" (else "else") (compound_statement "{\n          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }\n          if (iVar11 != 0x29) goto LAB_0002a198;\n          if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }\n          iVar11 = (int)(char)pbVar27[1];\n          unaff_s5 = unaff_s5 + -1;\n        }" ({ "{") (while_statement "while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }" (while "while") (parenthesized_expression "((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0)" (( "(") (binary_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0" (cast_expression "(int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f)" (( "(") (binary_expression "(0xc0000601U >> (uVar3 & 0x1f)) << 0x1f" (parenthesized_expression "(0xc0000601U >> (uVar3 & 0x1f))" (( "(") (binary_expression "0xc0000601U >> (uVar3 & 0x1f)" (number_literal "0xc0000601U") (>> ">>") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "0x1f")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            iVar11 = (int)(char)pbVar27[1];\n            if (iVar11 != 0x28) goto joined_r0x0002a19c;\n            pbVar14 = (byte *)0x1;\n            unaff_s5 = unaff_s5 + 1;\n            pbVar27 = pbVar27 + 1;\n            uVar3 = 7;\n          }" ({ "{") (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (int)(char)pbVar27[1]" (identifier "iVar11") (= "=") (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 (iVar11 != 0x28) goto joined_r0x0002a19c;" (if "if") (parenthesized_expression "(iVar11 != 0x28)" (( "(") (binary_expression "iVar11 != 0x28" (identifier "iVar11") (!= "!=") (number_literal "0x28")) () ")")) (goto_statement "goto joined_r0x0002a19c;" (goto "goto") (statement_identifier "joined_r0x0002a19c") (; ";"))) (expression_statement "pbVar14 = (byte *)0x1;" (assignment_expression "pbVar14 = (byte *)0x1" (identifier "pbVar14") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s5 + 1" (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 "uVar3 = 7;" (assignment_expression "uVar3 = 7" (identifier "uVar3") (= "=") (number_literal "7")) (; ";")) (} "}"))) (if_statement "if (iVar11 != 0x29) goto LAB_0002a198;" (if "if") (parenthesized_expression "(iVar11 != 0x29)" (( "(") (binary_expression "iVar11 != 0x29" (identifier "iVar11") (!= "!=") (number_literal "0x29")) () ")")) (goto_statement "goto LAB_0002a198;" (goto "goto") (statement_identifier "LAB_0002a198") (; ";"))) (if_statement "if (unaff_s5 == 0) {\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }" (if "if") (parenthesized_expression "(unaff_s5 == 0)" (( "(") (binary_expression "unaff_s5 == 0" (identifier "unaff_s5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\n            }\n            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }\n            break;\n          }" ({ "{") (if_statement "if (1 < param_1 - 0x3fU) {\n              local_44 = pbVar27 + (1 - (int)unaff_s6);\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 = pbVar27 + (1 - (int)unaff_s6);\n            }" ({ "{") (expression_statement "local_44 = pbVar27 + (1 - (int)unaff_s6);" (assignment_expression "local_44 = pbVar27 + (1 - (int)unaff_s6)" (identifier "local_44") (= "=") (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 (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }" (if "if") (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c)" (( "(") (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) - 4" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" (( "(") (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_44 + 7)" (( "(") (binary_expression "local_44 + 7" (identifier "local_44") (+ "+") (number_literal "7")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (- "-") (number_literal "4")) (< "<") (number_literal "0x1f3c")) () ")")) (compound_statement "{\n              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);\n              puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);\n              *puVar21 = 0;\n              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;\n              *local_34 = (int)(puVar30 + iVar11 + 0x18);\n              if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n              if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }\n                    \n                    \n              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();\n              return uVar3;\n            }" ({ "{") (expression_statement "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);" (assignment_expression "iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (identifier "iVar11") (= "=") (unary_expression "-(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8)" (( "(") (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8" (binary_expression "((uint)(local_44 + 7) & 0xfffffffc) + 7" (parenthesized_expression "((uint)(local_44 + 7) & 0xfffffffc)" (( "(") (binary_expression "(uint)(local_44 + 7) & 0xfffffffc" (call_expression "(uint)(local_44 + 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_44 + 7)" (( "(") (binary_expression "local_44 + 7" (identifier "local_44") (+ "+") (number_literal "7")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")")) (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);" (assignment_expression "puVar21 = (undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (identifier "puVar21") (= "=") (cast_expression "(undefined1 *)\n                        (*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_mempcpy_0005b574)\n                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (parenthesized_expression "(*(code *)PTR_mempcpy_0005b574)" (( "(") (pointer_expression "*(code *)PTR_mempcpy_0005b574" (* "*") (cast_expression "(code *)PTR_mempcpy_0005b574" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_mempcpy_0005b574"))) () ")")) (argument_list "(puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6)" (( "(") (binary_expression "puVar30 + iVar11 + 0x1c" (binary_expression "puVar30 + iVar11" (identifier "puVar30") (+ "+") (identifier "iVar11")) (+ "+") (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 "*puVar21 = 0;" (assignment_expression "*puVar21 = 0" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + iVar11 + 0x18) = 0" (pointer_expression "*(undefined4 *)(puVar30 + iVar11 + 0x18)" (* "*") (cast_expression "(undefined4 *)(puVar30 + iVar11 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + iVar11 + 0x18)" (( "(") (binary_expression "puVar30 + iVar11 + 0x18" (binary_expression "puVar30 + iVar11" (identifier "puVar30") (+ "+") (identifier "iVar11")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_34 = (int)(puVar30 + iVar11 + 0x18);" (assignment_expression "*local_34 = (int)(puVar30 + iVar11 + 0x18)" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (cast_expression "(int)(puVar30 + iVar11 + 0x18)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar30 + iVar11 + 0x18)" (( "(") (binary_expression "puVar30 + iVar11 + 0x18" (binary_expression "puVar30 + iVar11" (identifier "puVar30") (+ "+") (identifier "iVar11")) (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if (local_30 == 0) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" (if "if") (parenthesized_expression "(local_30 == 0)" (( "(") (binary_expression "local_30 == 0" (identifier "local_30") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" ({ "{") (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" (( "(") (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 + -0x7570" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7570")) () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (if_statement "if (pbVar27[-1] != 0x29) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\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                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" ({ "{") (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" (( "(") (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 + -0x7570" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7570")) () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (if_statement "if (0x1f < param_1 - 0x21U) {\n                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\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                uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);\n                return uVar3;\n              }" ({ "{") (expression_statement "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570);" (assignment_expression "uVar3 = (*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR___assert_fail_0005b410)\n                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,\n                                   PTR_DAT_0005b2cc + -0x7570)" (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 + -0x7570)" (( "(") (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 + -0x7570" (identifier "PTR_DAT_0005b2cc") (+ "+") (number_literal "-0x7570")) () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();" (assignment_expression "uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))()" (identifier "uVar3") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" (* "*") (cast_expression "(int *)(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0)" (( "(") (binary_expression "PTR_DAT_0005b2cc +\n                                                  (param_1 - 0x21U) * 4 + -0x76e0" (binary_expression "PTR_DAT_0005b2cc +\n                                                  (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 "-0x76e0")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar11 = (int)(char)pbVar27[1];" (assignment_expression "iVar11 = (int)(char)pbVar27[1]" (identifier "iVar11") (= "=") (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 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s5 + -1" (identifier "unaff_s5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")))) (labeled_statement "joined_r0x0002a19c:\n        pbVar27 = pbVar27 + 1;" (statement_identifier "joined_r0x0002a19c") (: ":") (expression_statement "pbVar27 = pbVar27 + 1;" (assignment_expression "pbVar27 = pbVar27 + 1" (identifier "pbVar27") (= "=") (binary_expression "pbVar27 + 1" (identifier "pbVar27") (+ "+") (number_literal "1"))) (; ";"))) (} "}")))) (expression_statement "puVar21 = puVar30;" (assignment_expression "puVar21 = puVar30" (identifier "puVar21") (= "=") (identifier "puVar30")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (} "}"))) (labeled_statement "LAB_0002a034:\n  if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }" (statement_identifier "LAB_0002a034") (: ":") (if_statement "if (local_2c == *(byte **)puVar1) {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "(local_2c == *(byte **)puVar1)" (( "(") (binary_expression "local_2c == *(byte **)puVar1" (identifier "local_2c") (== "==") (pointer_expression "*(byte **)puVar1" (* "*") (cast_expression "(byte **)puVar1" (( "(") (type_descriptor "byte **" (type_identifier "byte") (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 "pcVar33 = FUN_0002a610;" (assignment_expression "pcVar33 = FUN_0002a610" (identifier "pcVar33") (= "=") (identifier "FUN_0002a610")) (; ";")) (expression_statement "pbVar23 = local_2c;" (assignment_expression "pbVar23 = local_2c" (identifier "pbVar23") (= "=") (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 "puVar2 = puVar28 + 0x38ae0;" (assignment_expression "puVar2 = puVar28 + 0x38ae0" (identifier "puVar2") (= "=") (binary_expression "puVar28 + 0x38ae0" (identifier "puVar28") (+ "+") (number_literal "0x38ae0"))) (; ";")) (expression_statement "puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);" (assignment_expression "puVar4 = *(undefined4 **)(puVar28 + 0x30f7c)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined4 **)(puVar28 + 0x30f7c)" (* "*") (cast_expression "(undefined4 **)(puVar28 + 0x30f7c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x30f7c)" (( "(") (binary_expression "puVar28 + 0x30f7c" (identifier "puVar28") (+ "+") (number_literal "0x30f7c")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar30 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar30 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar30 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar30 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -8)" (( "(") (binary_expression "puVar30 + -8" (identifier "puVar30") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "*(undefined **)(puVar30 + -0x1c) = unaff_s3;" (assignment_expression "*(undefined **)(puVar30 + -0x1c) = unaff_s3" (pointer_expression "*(undefined **)(puVar30 + -0x1c)" (* "*") (cast_expression "(undefined **)(puVar30 + -0x1c)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1c)" (( "(") (binary_expression "puVar30 + -0x1c" (identifier "puVar30") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(undefined **)(puVar30 + -0x160) = puVar2;" (assignment_expression "*(undefined **)(puVar30 + -0x160) = puVar2" (pointer_expression "*(undefined **)(puVar30 + -0x160)" (* "*") (cast_expression "(undefined **)(puVar30 + -0x160)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x160)" (( "(") (binary_expression "puVar30 + -0x160" (identifier "puVar30") (+ "+") (number_literal "-0x160")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*(code **)(puVar30 + -4) = pcVar33;" (assignment_expression "*(code **)(puVar30 + -4) = pcVar33" (pointer_expression "*(code **)(puVar30 + -4)" (* "*") (cast_expression "(code **)(puVar30 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -4)" (( "(") (binary_expression "puVar30 + -4" (identifier "puVar30") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar33")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0xc) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0xc) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0xc)" (* "*") (cast_expression "(byte **)(puVar30 + -0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0xc)" (( "(") (binary_expression "puVar30 + -0xc" (identifier "puVar30") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar30 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar30 + -0x10)" (* "*") (cast_expression "(byte **)(puVar30 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x10)" (( "(") (binary_expression "puVar30 + -0x10" (identifier "puVar30") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int *)(puVar30 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar30 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar30 + -0x14)" (* "*") (cast_expression "(int *)(puVar30 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x14)" (( "(") (binary_expression "puVar30 + -0x14" (identifier "puVar30") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x18) = param_3;" (assignment_expression "*(byte **)(puVar30 + -0x18) = param_3" (pointer_expression "*(byte **)(puVar30 + -0x18)" (* "*") (cast_expression "(byte **)(puVar30 + -0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x18)" (( "(") (binary_expression "puVar30 + -0x18" (identifier "puVar30") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined **)(puVar30 + -0x20) = puVar1;" (assignment_expression "*(undefined **)(puVar30 + -0x20) = puVar1" (pointer_expression "*(undefined **)(puVar30 + -0x20)" (* "*") (cast_expression "(undefined **)(puVar30 + -0x20)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x20)" (( "(") (binary_expression "puVar30 + -0x20" (identifier "puVar30") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "*(uint *)(puVar30 + -0x24) = unaff_s1;" (assignment_expression "*(uint *)(puVar30 + -0x24) = unaff_s1" (pointer_expression "*(uint *)(puVar30 + -0x24)" (* "*") (cast_expression "(uint *)(puVar30 + -0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x24)" (( "(") (binary_expression "puVar30 + -0x24" (identifier "puVar30") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x28) = param_2;" (assignment_expression "*(byte **)(puVar30 + -0x28) = param_2" (pointer_expression "*(byte **)(puVar30 + -0x28)" (* "*") (cast_expression "(byte **)(puVar30 + -0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x28)" (( "(") (binary_expression "puVar30 + -0x28" (identifier "puVar30") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined4 **)(puVar30 + -0x144) = puVar4;" (assignment_expression "*(undefined4 **)(puVar30 + -0x144) = puVar4" (pointer_expression "*(undefined4 **)(puVar30 + -0x144)" (* "*") (cast_expression "(undefined4 **)(puVar30 + -0x144)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x144)" (( "(") (binary_expression "puVar30 + -0x144" (identifier "puVar30") (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x154) = pbVar23 + 1;" (assignment_expression "*(byte **)(puVar30 + -0x154) = pbVar23 + 1" (pointer_expression "*(byte **)(puVar30 + -0x154)" (* "*") (cast_expression "(byte **)(puVar30 + -0x154)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x154)" (( "(") (binary_expression "puVar30 + -0x154" (identifier "puVar30") (+ "+") (number_literal "-0x154")) () ")")))) (= "=") (binary_expression "pbVar23 + 1" (identifier "pbVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar22 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar23" (identifier "pbVar22") (= "=") (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar23"))) (; ";")) (expression_statement "*(undefined4 *)(puVar30 + -0x2c) = *puVar4;" (assignment_expression "*(undefined4 *)(puVar30 + -0x2c) = *puVar4" (pointer_expression "*(undefined4 *)(puVar30 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x2c)" (( "(") (binary_expression "puVar30 + -0x2c" (identifier "puVar30") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar28 + 0x30cbc);" (assignment_expression "iVar11 = *(int *)(puVar28 + 0x30cbc)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar28 + 0x30cbc)" (* "*") (cast_expression "(int *)(puVar28 + 0x30cbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x30cbc)" (( "(") (binary_expression "puVar28 + 0x30cbc" (identifier "puVar28") (+ "+") (number_literal "0x30cbc")) () ")"))))) (; ";")) (expression_statement "pbVar27 = pbVar14;" (assignment_expression "pbVar27 = pbVar14" (identifier "pbVar27") (= "=") (identifier "pbVar14")) (; ";")) (expression_statement "pbVar32 = pbVar13;" (assignment_expression "pbVar32 = pbVar13" (identifier "pbVar32") (= "=") (identifier "pbVar13")) (; ";")) (if_statement "if (pbVar22 != (byte *)0x0) {\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" (if "if") (parenthesized_expression "(pbVar22 != (byte *)0x0)" (( "(") (binary_expression "pbVar22 != (byte *)0x0" (identifier "pbVar22") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar3 = *(uint *)(puVar30 + 0x10);\n    unaff_s1 = uVar3 & 2;\n    param_2 = (byte *)(uVar3 & 0x10);\n    *(uint *)(puVar30 + -0x140) = uVar3 & 5;\n    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);\n    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;\n    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;\n    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;\n    param_3 = pbVar23;\n    unaff_s6 = param_4;\n    do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);\n  }" ({ "{") (expression_statement "uVar3 = *(uint *)(puVar30 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar30 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(puVar30 + 0x10)" (* "*") (cast_expression "(uint *)(puVar30 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + 0x10)" (( "(") (binary_expression "puVar30 + 0x10" (identifier "puVar30") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "unaff_s1 = uVar3 & 2;" (assignment_expression "unaff_s1 = uVar3 & 2" (identifier "unaff_s1") (= "=") (binary_expression "uVar3 & 2" (identifier "uVar3") (& "&") (number_literal "2"))) (; ";")) (expression_statement "param_2 = (byte *)(uVar3 & 0x10);" (assignment_expression "param_2 = (byte *)(uVar3 & 0x10)" (identifier "param_2") (= "=") (cast_expression "(byte *)(uVar3 & 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 & 0x10)" (( "(") (binary_expression "uVar3 & 0x10" (identifier "uVar3") (& "&") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar30 + -0x140) = uVar3 & 5;" (assignment_expression "*(uint *)(puVar30 + -0x140) = uVar3 & 5" (pointer_expression "*(uint *)(puVar30 + -0x140)" (* "*") (cast_expression "(uint *)(puVar30 + -0x140)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x140)" (( "(") (binary_expression "puVar30 + -0x140" (identifier "puVar30") (+ "+") (number_literal "-0x140")) () ")")))) (= "=") (binary_expression "uVar3 & 5" (identifier "uVar3") (& "&") (number_literal "5"))) (; ";")) (expression_statement "*(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);" (assignment_expression "*(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08)" (pointer_expression "*(undefined4 *)(puVar30 + -0x148)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x148)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x148)" (( "(") (binary_expression "puVar30 + -0x148" (identifier "puVar30") (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar28 + 0x30b08)" (* "*") (cast_expression "(undefined4 *)(puVar28 + 0x30b08)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x30b08)" (( "(") (binary_expression "puVar28 + 0x30b08" (identifier "puVar28") (+ "+") (number_literal "0x30b08")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;" (assignment_expression "*(int *)(puVar30 + -0x14c) = iVar11 + -0x7660" (pointer_expression "*(int *)(puVar30 + -0x14c)" (* "*") (cast_expression "(int *)(puVar30 + -0x14c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x14c)" (( "(") (binary_expression "puVar30 + -0x14c" (identifier "puVar30") (+ "+") (number_literal "-0x14c")) () ")")))) (= "=") (binary_expression "iVar11 + -0x7660" (identifier "iVar11") (+ "+") (number_literal "-0x7660"))) (; ";")) (expression_statement "*(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;" (assignment_expression "*(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar30 + -0x138)" (* "*") (cast_expression "(int *)(puVar30 + -0x138)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x138)" (( "(") (binary_expression "puVar30 + -0x138" (identifier "puVar30") (+ "+") (number_literal "-0x138")) () ")")))) (= "=") (binary_expression "*(int *)(puVar28 + 0x30d80) + -0x60e0" (pointer_expression "*(int *)(puVar28 + 0x30d80)" (* "*") (cast_expression "(int *)(puVar28 + 0x30d80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x30d80)" (( "(") (binary_expression "puVar28 + 0x30d80" (identifier "puVar28") (+ "+") (number_literal "0x30d80")) () ")")))) (+ "+") (number_literal "-0x60e0"))) (; ";")) (expression_statement "*(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;" (assignment_expression "*(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar30 + -0x13c)" (* "*") (cast_expression "(int *)(puVar30 + -0x13c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x13c)" (( "(") (binary_expression "puVar30 + -0x13c" (identifier "puVar30") (+ "+") (number_literal "-0x13c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar28 + 0x30cbc) + -0x78dc" (pointer_expression "*(int *)(puVar28 + 0x30cbc)" (* "*") (cast_expression "(int *)(puVar28 + 0x30cbc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x30cbc)" (( "(") (binary_expression "puVar28 + 0x30cbc" (identifier "puVar28") (+ "+") (number_literal "0x30cbc")) () ")")))) (+ "+") (number_literal "-0x78dc"))) (; ";")) (expression_statement "param_3 = pbVar23;" (assignment_expression "param_3 = pbVar23" (identifier "param_3") (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "unaff_s6 = param_4;" (assignment_expression "unaff_s6 = param_4" (identifier "unaff_s6") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    } while (pbVar22 != (byte *)0x0);" (do "do") (compound_statement "{\n      pbVar23 = pbVar22;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }\n      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }\n      uVar3 = 1;\n      pbVar22 = pbVar23;\n      if (pbVar32 == pbVar14) goto LAB_0002a8e4;\n      pbVar22 = (byte *)(uint)*pbVar32;\n      if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }\n      uVar3 = 1;\n      unaff_s6 = pbVar23;\n      if (pbVar22 != pbVar23) goto LAB_0002a8e4;\n      param_3 = *(byte **)(puVar30 + -0x154);\n      unaff_s6 = (byte *)0x0;\n      pbVar22 = (byte *)(uint)*param_3;\n      pbVar32 = pbVar32 + 1;\n      *(byte **)(puVar30 + -0x154) = param_3 + 1;\n    }" ({ "{") (expression_statement "pbVar23 = pbVar22;" (assignment_expression "pbVar23 = pbVar22" (identifier "pbVar23") (= "=") (identifier "pbVar22")) (; ";")) (if_statement "if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\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        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);\n      }" ({ "{") (expression_statement "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();" (assignment_expression "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))()" (identifier "piVar5") (= "=") (cast_expression "(int *)(**(code **)(puVar2 + -0x7cdc))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar2 + -0x7cdc))()" (parenthesized_expression "(**(code **)(puVar2 + -0x7cdc))" (( "(") (pointer_expression "**(code **)(puVar2 + -0x7cdc)" (* "*") (pointer_expression "*(code **)(puVar2 + -0x7cdc)" (* "*") (cast_expression "(code **)(puVar2 + -0x7cdc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + -0x7cdc)" (( "(") (binary_expression "puVar2 + -0x7cdc" (identifier "puVar2") (+ "+") (number_literal "-0x7cdc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar2 = *(undefined **)(puVar30 + -0x160);" (assignment_expression "puVar2 = *(undefined **)(puVar30 + -0x160)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined **)(puVar30 + -0x160)" (* "*") (cast_expression "(undefined **)(puVar30 + -0x160)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x160)" (( "(") (binary_expression "puVar30 + -0x160" (identifier "puVar30") (+ "+") (number_literal "-0x160")) () ")"))))) (; ";")) (expression_statement "pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);" (assignment_expression "pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" (identifier "pbVar23") (= "=") (binary_expression "(byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(*piVar5 + (int)pbVar22 * 4 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar5 + (int)pbVar22 * 4 + 3)" (( "(") (binary_expression "*piVar5 + (int)pbVar22 * 4 + 3" (binary_expression "*piVar5 + (int)pbVar22 * 4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar22")) (* "*") (number_literal "4"))) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }" (if "if") (parenthesized_expression "(((uint)(pbVar23 + -0x21) & 0xff) < 0x3c)" (( "(") (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) < 0x3c" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" (( "(") (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar23 + -0x21)" (( "(") (binary_expression "pbVar23 + -0x21" (identifier "pbVar23") (+ "+") (number_literal "-0x21")) () ")"))) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "0x3c")) () ")")) (compound_statement "{\n                    \n                    \n        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();\n        return uVar3;\n      }" ({ "{") (expression_statement "uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();" (assignment_expression "uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" (identifier "uVar3") (= "=") (call_expression "(*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))()" (parenthesized_expression "(*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))" (( "(") (pointer_expression "*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" (* "*") (cast_expression "(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4))" (( "(") (binary_expression "puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" (identifier "puVar2") (+ "+") (pointer_expression "*(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)" (( "(") (binary_expression "*(int *)(puVar30 + -0x14c) +\n                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4" (pointer_expression "*(int *)(puVar30 + -0x14c)" (* "*") (cast_expression "(int *)(puVar30 + -0x14c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x14c)" (( "(") (binary_expression "puVar30 + -0x14c" (identifier "puVar30") (+ "+") (number_literal "-0x14c")) () ")")))) (+ "+") (binary_expression "((uint)(pbVar23 + -0x21) & 0xff) * 4" (parenthesized_expression "((uint)(pbVar23 + -0x21) & 0xff)" (( "(") (binary_expression "(uint)(pbVar23 + -0x21) & 0xff" (call_expression "(uint)(pbVar23 + -0x21)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pbVar23 + -0x21)" (( "(") (binary_expression "pbVar23 + -0x21" (identifier "pbVar23") (+ "+") (number_literal "-0x21")) () ")"))) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar22 = pbVar23;" (assignment_expression "pbVar22 = pbVar23" (identifier "pbVar22") (= "=") (identifier "pbVar23")) (; ";")) (if_statement "if (pbVar32 == pbVar14) goto LAB_0002a8e4;" (if "if") (parenthesized_expression "(pbVar32 == pbVar14)" (( "(") (binary_expression "pbVar32 == pbVar14" (identifier "pbVar32") (== "==") (identifier "pbVar14")) () ")")) (goto_statement "goto LAB_0002a8e4;" (goto "goto") (statement_identifier "LAB_0002a8e4") (; ";"))) (expression_statement "pbVar22 = (byte *)(uint)*pbVar32;" (assignment_expression "pbVar22 = (byte *)(uint)*pbVar32" (identifier "pbVar22") (= "=") (binary_expression "(byte *)(uint)*pbVar32" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar32"))) (; ";")) (if_statement "if (param_2 != (byte *)0x0) {\n        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\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        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();\n        puVar2 = *(undefined **)(puVar30 + -0x160);\n        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);\n      }" ({ "{") (expression_statement "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();" (assignment_expression "piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))()" (identifier "piVar5") (= "=") (cast_expression "(int *)(**(code **)(puVar2 + -0x7cdc))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar2 + -0x7cdc))()" (parenthesized_expression "(**(code **)(puVar2 + -0x7cdc))" (( "(") (pointer_expression "**(code **)(puVar2 + -0x7cdc)" (* "*") (pointer_expression "*(code **)(puVar2 + -0x7cdc)" (* "*") (cast_expression "(code **)(puVar2 + -0x7cdc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + -0x7cdc)" (( "(") (binary_expression "puVar2 + -0x7cdc" (identifier "puVar2") (+ "+") (number_literal "-0x7cdc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar2 = *(undefined **)(puVar30 + -0x160);" (assignment_expression "puVar2 = *(undefined **)(puVar30 + -0x160)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined **)(puVar30 + -0x160)" (* "*") (cast_expression "(undefined **)(puVar30 + -0x160)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x160)" (( "(") (binary_expression "puVar30 + -0x160" (identifier "puVar30") (+ "+") (number_literal "-0x160")) () ")"))))) (; ";")) (expression_statement "pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);" (assignment_expression "pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4)" (identifier "pbVar22") (= "=") (pointer_expression "*(byte **)(*piVar5 + (int)pbVar22 * 4)" (* "*") (cast_expression "(byte **)(*piVar5 + (int)pbVar22 * 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + (int)pbVar22 * 4)" (( "(") (binary_expression "*piVar5 + (int)pbVar22 * 4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (binary_expression "(int)pbVar22 * 4" (cast_expression "(int)pbVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar22")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "unaff_s6 = pbVar23;" (assignment_expression "unaff_s6 = pbVar23" (identifier "unaff_s6") (= "=") (identifier "pbVar23")) (; ";")) (if_statement "if (pbVar22 != pbVar23) goto LAB_0002a8e4;" (if "if") (parenthesized_expression "(pbVar22 != pbVar23)" (( "(") (binary_expression "pbVar22 != pbVar23" (identifier "pbVar22") (!= "!=") (identifier "pbVar23")) () ")")) (goto_statement "goto LAB_0002a8e4;" (goto "goto") (statement_identifier "LAB_0002a8e4") (; ";"))) (expression_statement "param_3 = *(byte **)(puVar30 + -0x154);" (assignment_expression "param_3 = *(byte **)(puVar30 + -0x154)" (identifier "param_3") (= "=") (pointer_expression "*(byte **)(puVar30 + -0x154)" (* "*") (cast_expression "(byte **)(puVar30 + -0x154)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x154)" (( "(") (binary_expression "puVar30 + -0x154" (identifier "puVar30") (+ "+") (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 "pbVar22 = (byte *)(uint)*param_3;" (assignment_expression "pbVar22 = (byte *)(uint)*param_3" (identifier "pbVar22") (= "=") (binary_expression "(byte *)(uint)*param_3" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "param_3"))) (; ";")) (expression_statement "pbVar32 = pbVar32 + 1;" (assignment_expression "pbVar32 = pbVar32 + 1" (identifier "pbVar32") (= "=") (binary_expression "pbVar32 + 1" (identifier "pbVar32") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x154) = param_3 + 1;" (assignment_expression "*(byte **)(puVar30 + -0x154) = param_3 + 1" (pointer_expression "*(byte **)(puVar30 + -0x154)" (* "*") (cast_expression "(byte **)(puVar30 + -0x154)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x154)" (( "(") (binary_expression "puVar30 + -0x154" (identifier "puVar30") (+ "+") (number_literal "-0x154")) () ")")))) (= "=") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar22 != (byte *)0x0)" (( "(") (binary_expression "pbVar22 != (byte *)0x0" (identifier "pbVar22") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pbVar32 != pbVar14) {\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }" (if "if") (parenthesized_expression "(pbVar32 != pbVar14)" (( "(") (binary_expression "pbVar32 != pbVar14" (identifier "pbVar32") (!= "!=") (identifier "pbVar14")) () ")")) (compound_statement "{\n    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);\n    if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }\n  }" ({ "{") (expression_statement "param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);" (assignment_expression "param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8)" (identifier "param_3") (= "=") (cast_expression "(byte *)(*(uint *)(puVar30 + 0x10) & 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(uint *)(puVar30 + 0x10) & 8)" (( "(") (binary_expression "*(uint *)(puVar30 + 0x10) & 8" (pointer_expression "*(uint *)(puVar30 + 0x10)" (* "*") (cast_expression "(uint *)(puVar30 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + 0x10)" (( "(") (binary_expression "puVar30 + 0x10" (identifier "puVar30") (+ "+") (number_literal "0x10")) () ")")))) (& "&") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (param_3 == (byte *)0x0) {\n      uVar3 = 1;\n    }\n    else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\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      uVar3 = 1;\n    }" ({ "{") (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" (identifier "uVar3") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }" (else "else") (compound_statement "{\n      uVar3 = (uint)(*pbVar32 != 0x2f);\n    }" ({ "{") (expression_statement "uVar3 = (uint)(*pbVar32 != 0x2f);" (assignment_expression "uVar3 = (uint)(*pbVar32 != 0x2f)" (identifier "uVar3") (= "=") (call_expression "(uint)(*pbVar32 != 0x2f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar32 != 0x2f)" (( "(") (binary_expression "*pbVar32 != 0x2f" (pointer_expression "*pbVar32" (* "*") (identifier "pbVar32")) (!= "!=") (number_literal "0x2f")) () ")")))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_0002a8e4:\n  iVar12 = *(int *)(puVar30 + -0x2c);" (statement_identifier "LAB_0002a8e4") (: ":") (expression_statement "iVar12 = *(int *)(puVar30 + -0x2c);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x2c)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x2c)" (* "*") (cast_expression "(int *)(puVar30 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x2c)" (( "(") (binary_expression "puVar30 + -0x2c" (identifier "puVar30") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";"))) (if_statement "if (iVar12 == **(int **)(puVar30 + -0x144)) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(iVar12 == **(int **)(puVar30 + -0x144))" (( "(") (binary_expression "iVar12 == **(int **)(puVar30 + -0x144)" (identifier "iVar12") (== "==") (pointer_expression "**(int **)(puVar30 + -0x144)" (* "*") (pointer_expression "*(int **)(puVar30 + -0x144)" (* "*") (cast_expression "(int **)(puVar30 + -0x144)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x144)" (( "(") (binary_expression "puVar30 + -0x144" (identifier "puVar30") (+ "+") (number_literal "-0x144")) () ")")))))) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "pcVar33 = *(code **)(puVar2 + -0x7b8c);" (assignment_expression "pcVar33 = *(code **)(puVar2 + -0x7b8c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(puVar2 + -0x7b8c)" (* "*") (cast_expression "(code **)(puVar2 + -0x7b8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + -0x7b8c)" (( "(") (binary_expression "puVar2 + -0x7b8c" (identifier "puVar2") (+ "+") (number_literal "-0x7b8c")) () ")"))))) (; ";")) (expression_statement "pcVar34 = rpl_fnmatch;" (assignment_expression "pcVar34 = rpl_fnmatch" (identifier "pcVar34") (= "=") (identifier "rpl_fnmatch")) (; ";")) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar29 = *(code **)(pcVar33 + 0x302e0);" (assignment_expression "pcVar29 = *(code **)(pcVar33 + 0x302e0)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(pcVar33 + 0x302e0)" (* "*") (cast_expression "(code **)(pcVar33 + 0x302e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x302e0)" (( "(") (binary_expression "pcVar33 + 0x302e0" (identifier "pcVar33") (+ "+") (number_literal "0x302e0")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar30 + -0x19c) = unaff_s1;" (assignment_expression "*(uint *)(puVar30 + -0x19c) = unaff_s1" (pointer_expression "*(uint *)(puVar30 + -0x19c)" (* "*") (cast_expression "(uint *)(puVar30 + -0x19c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x19c)" (( "(") (binary_expression "puVar30 + -0x19c" (identifier "puVar30") (+ "+") (number_literal "-0x19c")) () ")")))) (= "=") (identifier "unaff_s1")) (; ";")) (expression_statement "piVar5 = *(int **)(pcVar33 + 0x30338);" (assignment_expression "piVar5 = *(int **)(pcVar33 + 0x30338)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(pcVar33 + 0x30338)" (* "*") (cast_expression "(int **)(pcVar33 + 0x30338)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x30338)" (( "(") (binary_expression "pcVar33 + 0x30338" (identifier "pcVar33") (+ "+") (number_literal "0x30338")) () ")"))))) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x180) = pbVar32;" (assignment_expression "*(byte **)(puVar30 + -0x180) = pbVar32" (pointer_expression "*(byte **)(puVar30 + -0x180)" (* "*") (cast_expression "(byte **)(puVar30 + -0x180)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x180)" (( "(") (binary_expression "puVar30 + -0x180" (identifier "puVar30") (+ "+") (number_literal "-0x180")) () ")")))) (= "=") (identifier "pbVar32")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x198) = pbVar22;" (assignment_expression "*(byte **)(puVar30 + -0x198) = pbVar22" (pointer_expression "*(byte **)(puVar30 + -0x198)" (* "*") (cast_expression "(byte **)(puVar30 + -0x198)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x198)" (( "(") (binary_expression "puVar30 + -0x198" (identifier "puVar30") (+ "+") (number_literal "-0x198")) () ")")))) (= "=") (identifier "pbVar22")) (; ";")) (expression_statement "*(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;" (assignment_expression "*(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c" (pointer_expression "*(code **)(puVar30 + -0x1c8)" (* "*") (cast_expression "(code **)(puVar30 + -0x1c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")")))) (= "=") (binary_expression "pcVar33 + 0x37e9c" (identifier "pcVar33") (+ "+") (number_literal "0x37e9c"))) (; ";")) (expression_statement "*(code **)(puVar30 + -0x17c) = pcVar34;" (assignment_expression "*(code **)(puVar30 + -0x17c) = pcVar34" (pointer_expression "*(code **)(puVar30 + -0x17c)" (* "*") (cast_expression "(code **)(puVar30 + -0x17c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x17c)" (( "(") (binary_expression "puVar30 + -0x17c" (identifier "puVar30") (+ "+") (number_literal "-0x17c")) () ")")))) (= "=") (identifier "pcVar34")) (; ";")) (expression_statement "*(int *)(puVar30 + -0x184) = iVar11;" (assignment_expression "*(int *)(puVar30 + -0x184) = iVar11" (pointer_expression "*(int *)(puVar30 + -0x184)" (* "*") (cast_expression "(int *)(puVar30 + -0x184)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x184)" (( "(") (binary_expression "puVar30 + -0x184" (identifier "puVar30") (+ "+") (number_literal "-0x184")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x188) = unaff_s6;" (assignment_expression "*(byte **)(puVar30 + -0x188) = unaff_s6" (pointer_expression "*(byte **)(puVar30 + -0x188)" (* "*") (cast_expression "(byte **)(puVar30 + -0x188)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x188)" (( "(") (binary_expression "puVar30 + -0x188" (identifier "puVar30") (+ "+") (number_literal "-0x188")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int *)(puVar30 + -0x18c) = unaff_s5;" (assignment_expression "*(int *)(puVar30 + -0x18c) = unaff_s5" (pointer_expression "*(int *)(puVar30 + -0x18c)" (* "*") (cast_expression "(int *)(puVar30 + -0x18c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x18c)" (( "(") (binary_expression "puVar30 + -0x18c" (identifier "puVar30") (+ "+") (number_literal "-0x18c")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar30 + -400) = param_3;" (assignment_expression "*(byte **)(puVar30 + -400) = param_3" (pointer_expression "*(byte **)(puVar30 + -400)" (* "*") (cast_expression "(byte **)(puVar30 + -400)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -400)" (( "(") (binary_expression "puVar30 + -400" (identifier "puVar30") (+ "+") (number_literal "-400")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x194) = pbVar14;" (assignment_expression "*(byte **)(puVar30 + -0x194) = pbVar14" (pointer_expression "*(byte **)(puVar30 + -0x194)" (* "*") (cast_expression "(byte **)(puVar30 + -0x194)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x194)" (( "(") (binary_expression "puVar30 + -0x194" (identifier "puVar30") (+ "+") (number_literal "-0x194")) () ")")))) (= "=") (identifier "pbVar14")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x1a0) = param_2;" (assignment_expression "*(byte **)(puVar30 + -0x1a0) = param_2" (pointer_expression "*(byte **)(puVar30 + -0x1a0)" (* "*") (cast_expression "(byte **)(puVar30 + -0x1a0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1a0)" (( "(") (binary_expression "puVar30 + -0x1a0" (identifier "puVar30") (+ "+") (number_literal "-0x1a0")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int *)(puVar30 + -0x1b4) = iVar12;" (assignment_expression "*(int *)(puVar30 + -0x1b4) = iVar12" (pointer_expression "*(int *)(puVar30 + -0x1b4)" (* "*") (cast_expression "(int *)(puVar30 + -0x1b4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1b4)" (( "(") (binary_expression "puVar30 + -0x1b4" (identifier "puVar30") (+ "+") (number_literal "-0x1b4")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x1b8) = pbVar13;" (assignment_expression "*(byte **)(puVar30 + -0x1b8) = pbVar13" (pointer_expression "*(byte **)(puVar30 + -0x1b8)" (* "*") (cast_expression "(byte **)(puVar30 + -0x1b8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1b8)" (( "(") (binary_expression "puVar30 + -0x1b8" (identifier "puVar30") (+ "+") (number_literal "-0x1b8")) () ")")))) (= "=") (identifier "pbVar13")) (; ";")) (expression_statement "*(int *)(puVar30 + -0x1a4) = *piVar5;" (assignment_expression "*(int *)(puVar30 + -0x1a4) = *piVar5" (pointer_expression "*(int *)(puVar30 + -0x1a4)" (* "*") (cast_expression "(int *)(puVar30 + -0x1a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1a4)" (( "(") (binary_expression "puVar30 + -0x1a4" (identifier "puVar30") (+ "+") (number_literal "-0x1a4")) () ")")))) (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "iVar11 = (*pcVar29)();" (assignment_expression "iVar11 = (*pcVar29)()" (identifier "iVar11") (= "=") (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar11 != 1) {\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar11 != 1)" (( "(") (binary_expression "iVar11 != 1" (identifier "iVar11") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    puVar21 = puVar30 + -0x1ac;\n    pcVar33 = *(code **)(iVar12 + -0x7b28);\n    puVar24 = puVar30 + -0x1b4;\n    *(undefined4 *)(puVar30 + -0x1ac) = 0;\n    *(undefined4 *)(puVar30 + -0x1a8) = 0;\n    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);\n    uVar3 = iVar11 + 1;\n    iVar12 = *(int *)(puVar30 + -0x1c8);\n    if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar21 = puVar30 + -0x1ac;" (assignment_expression "puVar21 = puVar30 + -0x1ac" (identifier "puVar21") (= "=") (binary_expression "puVar30 + -0x1ac" (identifier "puVar30") (+ "+") (number_literal "-0x1ac"))) (; ";")) (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b28)" (( "(") (binary_expression "iVar12 + -0x7b28" (identifier "iVar12") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "puVar24 = puVar30 + -0x1b4;" (assignment_expression "puVar24 = puVar30 + -0x1b4" (identifier "puVar24") (= "=") (binary_expression "puVar30 + -0x1b4" (identifier "puVar30") (+ "+") (number_literal "-0x1b4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar30 + -0x1ac) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + -0x1ac) = 0" (pointer_expression "*(undefined4 *)(puVar30 + -0x1ac)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1ac)" (( "(") (binary_expression "puVar30 + -0x1ac" (identifier "puVar30") (+ "+") (number_literal "-0x1ac")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar30 + -0x1a8) = 0;" (assignment_expression "*(undefined4 *)(puVar30 + -0x1a8) = 0" (pointer_expression "*(undefined4 *)(puVar30 + -0x1a8)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1a8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1a8)" (( "(") (binary_expression "puVar30 + -0x1a8" (identifier "puVar30") (+ "+") (number_literal "-0x1a8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar11 = (*pcVar33)(0,puVar24,0,puVar21);" (assignment_expression "iVar11 = (*pcVar33)(0,puVar24,0,puVar21)" (identifier "iVar11") (= "=") (call_expression "(*pcVar33)(0,puVar24,0,puVar21)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(0,puVar24,0,puVar21)" (( "(") (number_literal "0") (, ",") (identifier "puVar24") (, ",") (number_literal "0") (, ",") (identifier "puVar21") () ")")))) (; ";")) (expression_statement "uVar3 = iVar11 + 1;" (assignment_expression "uVar3 = iVar11 + 1" (identifier "uVar3") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (uVar3 != 0) {\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n      uVar16 = 0x129;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar11 == 0) goto LAB_0002b570;\n      piVar26 = (int *)(puVar30 + -0x1b8);\n      piVar20 = piVar26;\n      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);\n      iVar18 = iVar11 + 1;\n      iVar12 = *(int *)(puVar30 + -0x1c8);\n      if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }\n    }" ({ "{") (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21)" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7b68)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7b68)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b68)" (( "(") (binary_expression "iVar12 + -0x7b68" (identifier "iVar12") (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar21)" (( "(") (identifier "puVar21") () ")")))) (; ";")) (expression_statement "uVar16 = 0x129;" (assignment_expression "uVar16 = 0x129" (identifier "uVar16") (= "=") (number_literal "0x129")) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar11 == 0) goto LAB_0002b570;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b570;" (goto "goto") (statement_identifier "LAB_0002b570") (; ";"))) (expression_statement "piVar26 = (int *)(puVar30 + -0x1b8);" (assignment_expression "piVar26 = (int *)(puVar30 + -0x1b8)" (identifier "piVar26") (= "=") (cast_expression "(int *)(puVar30 + -0x1b8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1b8)" (( "(") (binary_expression "puVar30 + -0x1b8" (identifier "puVar30") (+ "+") (number_literal "-0x1b8")) () ")")))) (; ";")) (expression_statement "piVar20 = piVar26;" (assignment_expression "piVar20 = piVar26" (identifier "piVar20") (= "=") (identifier "piVar26")) (; ";")) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21)" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7b28)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b28)" (( "(") (binary_expression "iVar12 + -0x7b28" (identifier "iVar12") (+ "+") (number_literal "-0x7b28")) () ")"))))) () ")")) (argument_list "(0,piVar26,0,puVar21)" (( "(") (number_literal "0") (, ",") (identifier "piVar26") (, ",") (number_literal "0") (, ",") (identifier "puVar21") () ")")))) (; ";")) (expression_statement "iVar18 = iVar11 + 1;" (assignment_expression "iVar18 = iVar11 + 1" (identifier "iVar18") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar18 != 0) {\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }" (if "if") (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);\n        iVar12 = *(int *)(puVar30 + -0x1c8);\n        if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }\n        uVar19 = uVar3 + iVar18;\n        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }\n        uVar3 = 0xffffffff;\n        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();\n        iVar11 = *(int *)(puVar30 + -0x1c8);\n        *puVar4 = 0xc;\n        goto LAB_0002b300;\n      }" ({ "{") (expression_statement "iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);" (assignment_expression "iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21)" (identifier "iVar17") (= "=") (call_expression "(**(code **)(iVar12 + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b68))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7b68)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7b68)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b68)" (( "(") (binary_expression "iVar12 + -0x7b68" (identifier "iVar12") (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar21)" (( "(") (identifier "puVar21") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar17 == 0) {\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar16 = 0x12d;\n          goto LAB_0002b570;\n        }" ({ "{") (expression_statement "uVar16 = 0x12d;" (assignment_expression "uVar16 = 0x12d" (identifier "uVar16") (= "=") (number_literal "0x12d")) (; ";")) (goto_statement "goto LAB_0002b570;" (goto "goto") (statement_identifier "LAB_0002b570") (; ";")) (} "}"))) (expression_statement "uVar19 = uVar3 + iVar18;" (assignment_expression "uVar19 = uVar3 + iVar18" (identifier "uVar19") (= "=") (binary_expression "uVar3 + iVar18" (identifier "uVar3") (+ "+") (identifier "iVar18"))) (; ";")) (if_statement "if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" (if "if") (parenthesized_expression "((uVar3 <= uVar19) && (uVar19 < 0x40000000))" (( "(") (binary_expression "(uVar3 <= uVar19) && (uVar19 < 0x40000000)" (parenthesized_expression "(uVar3 <= uVar19)" (( "(") (binary_expression "uVar3 <= uVar19" (identifier "uVar3") (<= "<=") (identifier "uVar19")) () ")")) (&& "&&") (parenthesized_expression "(uVar19 < 0x40000000)" (( "(") (binary_expression "uVar19 < 0x40000000" (identifier "uVar19") (< "<") (number_literal "0x40000000")) () ")"))) () ")")) (compound_statement "{\n          if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n          iVar17 = (**(code **)(iVar12 + -0x7be8))();\n          iVar12 = *(int *)(puVar30 + -0x1c8);\n          if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }\n        }" ({ "{") (if_statement "if (uVar19 < 2000) {\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" (if "if") (parenthesized_expression "(uVar19 < 2000)" (( "(") (binary_expression "uVar19 < 2000" (identifier "uVar19") (< "<") (number_literal "2000")) () ")")) (compound_statement "{\n            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);\n            puVar25 = puVar30 + iVar17 + -0x1c8;\n            piVar20 = (int *)(puVar25 + uVar3 * 4);\n            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);\n            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }\n            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" ({ "{") (expression_statement "iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);" (assignment_expression "iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8)" (identifier "iVar17") (= "=") (unary_expression "-(uVar19 * 4 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar19 * 4 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar19 * 4 + 7 & 0xfffffff8" (binary_expression "uVar19 * 4 + 7" (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4")) (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar25 = puVar30 + iVar17 + -0x1c8;" (assignment_expression "puVar25 = puVar30 + iVar17 + -0x1c8" (identifier "puVar25") (= "=") (binary_expression "puVar30 + iVar17 + -0x1c8" (binary_expression "puVar30 + iVar17" (identifier "puVar30") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "-0x1c8"))) (; ";")) (expression_statement "piVar20 = (int *)(puVar25 + uVar3 * 4);" (assignment_expression "piVar20 = (int *)(puVar25 + uVar3 * 4)" (identifier "piVar20") (= "=") (cast_expression "(int *)(puVar25 + uVar3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar25 + uVar3 * 4)" (( "(") (binary_expression "puVar25 + uVar3 * 4" (identifier "puVar25") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "(**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);" (call_expression "(**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7b28)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b28)" (( "(") (binary_expression "iVar12 + -0x7b28" (identifier "iVar12") (+ "+") (number_literal "-0x7b28")) () ")"))))) () ")")) (argument_list "(puVar25,puVar24,uVar3,puVar21)" (( "(") (identifier "puVar25") (, ",") (identifier "puVar24") (, ",") (identifier "uVar3") (, ",") (identifier "puVar21") () ")"))) (; ";")) (expression_statement "iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);" (assignment_expression "iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (* "*") (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (( "(") (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")")))) (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar21)" (( "(") (identifier "puVar21") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar8 == 0) {\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );\n            }" ({ "{") (labeled_statement "LAB_0002b590:\n              do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );" (statement_identifier "LAB_0002b590") (: ":") (do_statement "do {\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              } while( true );" (do "do") (compound_statement "{\n                uVar16 = 0x147;\nLAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);\n              }" ({ "{") (expression_statement "uVar16 = 0x147;" (assignment_expression "uVar16 = 0x147" (identifier "uVar16") (= "=") (number_literal "0x147")) (; ";")) (labeled_statement "LAB_0002b570:\n                (**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);" (statement_identifier "LAB_0002b570") (: ":") (expression_statement "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);" (call_expression "(**(code **)(iVar12 + -0x7ce0))\n                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558)" (parenthesized_expression "(**(code **)(iVar12 + -0x7ce0))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7ce0)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7ce0)" (* "*") (cast_expression "(code **)(iVar12 + -0x7ce0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7ce0)" (( "(") (binary_expression "iVar12 + -0x7ce0" (identifier "iVar12") (+ "+") (number_literal "-0x7ce0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870\n                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558)" (( "(") (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7864" (pointer_expression "*(int *)(iVar12 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar12 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + -0x7e24)" (( "(") (binary_expression "iVar12 + -0x7e24" (identifier "iVar12") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7864")) (, ",") (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7870" (pointer_expression "*(int *)(iVar12 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar12 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + -0x7e24)" (( "(") (binary_expression "iVar12 + -0x7e24" (identifier "iVar12") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7870")) (, ",") (identifier "uVar16") (, ",") (binary_expression "*(int *)(iVar12 + -0x7e24) + -0x7558" (pointer_expression "*(int *)(iVar12 + -0x7e24)" (* "*") (cast_expression "(int *)(iVar12 + -0x7e24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + -0x7e24)" (( "(") (binary_expression "iVar12 + -0x7e24" (identifier "iVar12") (+ "+") (number_literal "-0x7e24")) () ")")))) (+ "+") (number_literal "-0x7558")) () ")"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "(**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);" (call_expression "(**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21)" (parenthesized_expression "(**(code **)(iVar12 + -0x7b28))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7b28)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b28)" (( "(") (binary_expression "iVar12 + -0x7b28" (identifier "iVar12") (+ "+") (number_literal "-0x7b28")) () ")"))))) () ")")) (argument_list "(piVar20,piVar26,iVar18,puVar21)" (( "(") (identifier "piVar20") (, ",") (identifier "piVar26") (, ",") (identifier "iVar18") (, ",") (identifier "puVar21") () ")"))) (; ";")) (expression_statement "*(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + iVar17 + -0x1d0)" (* "*") (cast_expression "(byte **)(puVar30 + iVar17 + -0x1d0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + iVar17 + -0x1d0)" (( "(") (binary_expression "puVar30 + iVar17 + -0x1d0" (binary_expression "puVar30 + iVar17" (identifier "puVar30") (+ "+") (identifier "iVar17")) (+ "+") (number_literal "-0x1d0")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "uVar3") (= "=") (call_expression "FUN_00029320(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "FUN_00029320") (argument_list "(puVar25,piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (( "(") (identifier "puVar25") (, ",") (identifier "piVar20") (, ",") (binary_expression "piVar20 + iVar11" (identifier "piVar20") (+ "+") (identifier "iVar11")) (, ",") (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 "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002b300;" (goto "goto") (statement_identifier "LAB_0002b300") (; ";")) (} "}"))) (expression_statement "iVar17 = (**(code **)(iVar12 + -0x7be8))();" (assignment_expression "iVar17 = (**(code **)(iVar12 + -0x7be8))()" (identifier "iVar17") (= "=") (call_expression "(**(code **)(iVar12 + -0x7be8))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7be8))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7be8)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7be8)" (* "*") (cast_expression "(code **)(iVar12 + -0x7be8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7be8)" (( "(") (binary_expression "iVar12 + -0x7be8" (identifier "iVar12") (+ "+") (number_literal "-0x7be8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar17 != 0) {\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(int *)(puVar30 + -0x1bc) = iVar17;\n            piVar20 = (int *)(iVar17 + uVar3 * 4);\n            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);\n            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);\n            iVar12 = *(int *)(puVar30 + -0x1c8);\n            if (iVar17 == 0) goto LAB_0002b590;\n            pcVar33 = *(code **)(iVar12 + -0x7b28);\n            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);\n            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);\n            *(byte **)(puVar30 + -0x1d0) = pbVar27;\n            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);\n            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));\n            iVar11 = *(int *)(puVar30 + -0x1c8);\n            goto LAB_0002b300;\n          }" ({ "{") (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b28)" (( "(") (binary_expression "iVar12 + -0x7b28" (identifier "iVar12") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar30 + -0x1bc) = iVar17;" (assignment_expression "*(int *)(puVar30 + -0x1bc) = iVar17" (pointer_expression "*(int *)(puVar30 + -0x1bc)" (* "*") (cast_expression "(int *)(puVar30 + -0x1bc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1bc)" (( "(") (binary_expression "puVar30 + -0x1bc" (identifier "puVar30") (+ "+") (number_literal "-0x1bc")) () ")")))) (= "=") (identifier "iVar17")) (; ";")) (expression_statement "piVar20 = (int *)(iVar17 + uVar3 * 4);" (assignment_expression "piVar20 = (int *)(iVar17 + uVar3 * 4)" (identifier "piVar20") (= "=") (cast_expression "(int *)(iVar17 + uVar3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + uVar3 * 4)" (( "(") (binary_expression "iVar17 + uVar3 * 4" (identifier "iVar17") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "(*pcVar33)(iVar17,puVar24,uVar3,puVar21);" (call_expression "(*pcVar33)(iVar17,puVar24,uVar3,puVar21)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(iVar17,puVar24,uVar3,puVar21)" (( "(") (identifier "iVar17") (, ",") (identifier "puVar24") (, ",") (identifier "uVar3") (, ",") (identifier "puVar21") () ")"))) (; ";")) (expression_statement "iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);" (assignment_expression "iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (identifier "iVar17") (= "=") (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21)" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (* "*") (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b68)" (( "(") (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b68" (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")")))) (+ "+") (number_literal "-0x7b68")) () ")"))))) () ")")) (argument_list "(puVar21)" (( "(") (identifier "puVar21") () ")")))) (; ";")) (expression_statement "iVar12 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar17 == 0) goto LAB_0002b590;" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b590;" (goto "goto") (statement_identifier "LAB_0002b590") (; ";"))) (expression_statement "pcVar33 = *(code **)(iVar12 + -0x7b28);" (assignment_expression "pcVar33 = *(code **)(iVar12 + -0x7b28)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar12 + -0x7b28)" (* "*") (cast_expression "(code **)(iVar12 + -0x7b28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7b28)" (( "(") (binary_expression "iVar12 + -0x7b28" (identifier "iVar12") (+ "+") (number_literal "-0x7b28")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);" (assignment_expression "*(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc)" (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1bc)" (( "(") (binary_expression "puVar30 + -0x1bc" (identifier "puVar30") (+ "+") (number_literal "-0x1bc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1bc)" (( "(") (binary_expression "puVar30 + -0x1bc" (identifier "puVar30") (+ "+") (number_literal "-0x1bc")) () ")"))))) (; ";")) (expression_statement "(*pcVar33)(piVar20,piVar26,iVar18,puVar21);" (call_expression "(*pcVar33)(piVar20,piVar26,iVar18,puVar21)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(piVar20,piVar26,iVar18,puVar21)" (( "(") (identifier "piVar20") (, ",") (identifier "piVar26") (, ",") (identifier "iVar18") (, ",") (identifier "puVar21") () ")"))) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0x1d0)" (* "*") (cast_expression "(byte **)(puVar30 + -0x1d0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1d0)" (( "(") (binary_expression "puVar30 + -0x1d0" (identifier "puVar30") (+ "+") (number_literal "-0x1d0")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "uVar3") (= "=") (call_expression "FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "FUN_00029320") (argument_list "(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,\n                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (( "(") (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1bc)" (( "(") (binary_expression "puVar30 + -0x1bc" (identifier "puVar30") (+ "+") (number_literal "-0x1bc")) () ")")))) (, ",") (identifier "piVar20") (, ",") (binary_expression "piVar20 + iVar11" (identifier "piVar20") (+ "+") (identifier "iVar11")) (, ",") (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 *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));" (call_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc))" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" (* "*") (cast_expression "(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar30 + -0x1c8) + -0x7b54)" (( "(") (binary_expression "*(int *)(puVar30 + -0x1c8) + -0x7b54" (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")")))) (+ "+") (number_literal "-0x7b54")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar30 + -0x1bc))" (( "(") (pointer_expression "*(undefined4 *)(puVar30 + -0x1bc)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1bc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1bc)" (( "(") (binary_expression "puVar30 + -0x1bc" (identifier "puVar30") (+ "+") (number_literal "-0x1bc")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002b300;" (goto "goto") (statement_identifier "LAB_0002b300") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" (identifier "uVar3") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();" (assignment_expression "puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(**(code **)(iVar12 + -0x7c3c))()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar12 + -0x7c3c))()" (parenthesized_expression "(**(code **)(iVar12 + -0x7c3c))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7c3c)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7c3c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7c3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7c3c)" (( "(") (binary_expression "iVar12 + -0x7c3c" (identifier "iVar12") (+ "+") (number_literal "-0x7c3c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (expression_statement "*puVar4 = 0xc;" (assignment_expression "*puVar4 = 0xc" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_0002b300;" (goto "goto") (statement_identifier "LAB_0002b300") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "piVar20 = *(int **)(puVar30 + -0x1b8);" (assignment_expression "piVar20 = *(int **)(puVar30 + -0x1b8)" (identifier "piVar20") (= "=") (pointer_expression "*(int **)(puVar30 + -0x1b8)" (* "*") (cast_expression "(int **)(puVar30 + -0x1b8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1b8)" (( "(") (binary_expression "puVar30 + -0x1b8" (identifier "puVar30") (+ "+") (number_literal "-0x1b8")) () ")"))))) (; ";")) (expression_statement "iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);" (assignment_expression "iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20)" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar12 + -0x7c0c))(piVar20)" (parenthesized_expression "(**(code **)(iVar12 + -0x7c0c))" (( "(") (pointer_expression "**(code **)(iVar12 + -0x7c0c)" (* "*") (pointer_expression "*(code **)(iVar12 + -0x7c0c)" (* "*") (cast_expression "(code **)(iVar12 + -0x7c0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + -0x7c0c)" (( "(") (binary_expression "iVar12 + -0x7c0c" (identifier "iVar12") (+ "+") (number_literal "-0x7c0c")) () ")"))))) () ")")) (argument_list "(piVar20)" (( "(") (identifier "piVar20") () ")")))) (; ";")) (expression_statement "*(byte **)(puVar30 + -0x1d0) = pbVar27;" (assignment_expression "*(byte **)(puVar30 + -0x1d0) = pbVar27" (pointer_expression "*(byte **)(puVar30 + -0x1d0)" (* "*") (cast_expression "(byte **)(puVar30 + -0x1d0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x1d0)" (( "(") (binary_expression "puVar30 + -0x1d0" (identifier "puVar30") (+ "+") (number_literal "-0x1d0")) () ")")))) (= "=") (identifier "pbVar27")) (; ";")) (expression_statement "uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);" (assignment_expression "uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "uVar3") (= "=") (call_expression "FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (identifier "FUN_0002a610") (argument_list "(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,\n                       (uint)((int)pbVar27 << 0x1d) >> 0x1f)" (( "(") (pointer_expression "*(undefined4 *)(puVar30 + -0x1b4)" (* "*") (cast_expression "(undefined4 *)(puVar30 + -0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1b4)" (( "(") (binary_expression "puVar30 + -0x1b4" (identifier "puVar30") (+ "+") (number_literal "-0x1b4")) () ")")))) (, ",") (identifier "piVar20") (, ",") (binary_expression "(int)piVar20 + iVar11" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (+ "+") (identifier "iVar11")) (, ",") (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 "iVar11 = *(int *)(puVar30 + -0x1c8);" (assignment_expression "iVar11 = *(int *)(puVar30 + -0x1c8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar30 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1c8)" (( "(") (binary_expression "puVar30 + -0x1c8" (identifier "puVar30") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (labeled_statement "LAB_0002b300:\n  iVar12 = *(int *)(puVar30 + -0x1a4);" (statement_identifier "LAB_0002b300") (: ":") (expression_statement "iVar12 = *(int *)(puVar30 + -0x1a4);" (assignment_expression "iVar12 = *(int *)(puVar30 + -0x1a4)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(puVar30 + -0x1a4)" (* "*") (cast_expression "(int *)(puVar30 + -0x1a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar30 + -0x1a4)" (( "(") (binary_expression "puVar30 + -0x1a4" (identifier "puVar30") (+ "+") (number_literal "-0x1a4")) () ")"))))) (; ";"))) (if_statement "if (iVar12 != *piVar5) {\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(iVar12 != *piVar5)" (( "(") (binary_expression "iVar12 != *piVar5" (identifier "iVar12") (!= "!=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n    (**(code **)(iVar11 + -0x7b8c))();\n    iVar11 = piVar20[8];\n    iVar18 = *piVar20;\n    uVar3 = (uint)(iVar11 < iVar18);\n    uVar19 = piVar20[7];\n    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }\n    piVar20[8] = iVar18;\n    piVar20[7] = (iVar18 - iVar11) + uVar19;\n    return uVar3;\n  }" ({ "{") (expression_statement "(**(code **)(iVar11 + -0x7b8c))();" (call_expression "(**(code **)(iVar11 + -0x7b8c))()" (parenthesized_expression "(**(code **)(iVar11 + -0x7b8c))" (( "(") (pointer_expression "**(code **)(iVar11 + -0x7b8c)" (* "*") (pointer_expression "*(code **)(iVar11 + -0x7b8c)" (* "*") (cast_expression "(code **)(iVar11 + -0x7b8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + -0x7b8c)" (( "(") (binary_expression "iVar11 + -0x7b8c" (identifier "iVar11") (+ "+") (number_literal "-0x7b8c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar11 = piVar20[8];" (assignment_expression "iVar11 = piVar20[8]" (identifier "iVar11") (= "=") (subscript_expression "piVar20[8]" (identifier "piVar20") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar18 = *piVar20;" (assignment_expression "iVar18 = *piVar20" (identifier "iVar18") (= "=") (pointer_expression "*piVar20" (* "*") (identifier "piVar20"))) (; ";")) (expression_statement "uVar3 = (uint)(iVar11 < iVar18);" (assignment_expression "uVar3 = (uint)(iVar11 < iVar18)" (identifier "uVar3") (= "=") (call_expression "(uint)(iVar11 < iVar18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar11 < iVar18)" (( "(") (binary_expression "iVar11 < iVar18" (identifier "iVar11") (< "<") (identifier "iVar18")) () ")")))) (; ";")) (expression_statement "uVar19 = piVar20[7];" (assignment_expression "uVar19 = piVar20[7]" (identifier "uVar19") (= "=") (subscript_expression "piVar20[7]" (identifier "piVar20") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }" (if "if") (parenthesized_expression "((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0))" (( "(") (binary_expression "(uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)" (( "(") (comma_expression "uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0" (assignment_expression "uVar3 = (uint)((int)uVar19 < iVar11)" (identifier "uVar3") (= "=") (call_expression "(uint)((int)uVar19 < iVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar19 < iVar11)" (( "(") (binary_expression "(int)uVar19 < iVar11" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (identifier "iVar11")) () ")")))) (, ",") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      iVar8 = iVar18 - iVar11;\n      uVar6 = uVar19;\n      iVar17 = iVar18;\n      do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));\n    }" ({ "{") (expression_statement "iVar8 = iVar18 - iVar11;" (assignment_expression "iVar8 = iVar18 - iVar11" (identifier "iVar8") (= "=") (binary_expression "iVar18 - iVar11" (identifier "iVar18") (- "-") (identifier "iVar11"))) (; ";")) (expression_statement "uVar6 = uVar19;" (assignment_expression "uVar6 = uVar19" (identifier "uVar6") (= "=") (identifier "uVar19")) (; ";")) (expression_statement "iVar17 = iVar18;" (assignment_expression "iVar17 = iVar18" (identifier "iVar17") (= "=") (identifier "iVar18")) (; ";")) (do_statement "do {\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));" (do "do") (compound_statement "{\n        iVar15 = iVar11 - uVar6;\n        uVar3 = iVar8 + uVar6;\n        if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }\n      }" ({ "{") (expression_statement "iVar15 = iVar11 - uVar6;" (assignment_expression "iVar15 = iVar11 - uVar6" (identifier "iVar15") (= "=") (binary_expression "iVar11 - uVar6" (identifier "iVar11") (- "-") (identifier "uVar6"))) (; ";")) (expression_statement "uVar3 = iVar8 + uVar6;" (assignment_expression "uVar3 = iVar8 + uVar6" (identifier "uVar3") (= "=") (binary_expression "iVar8 + uVar6" (identifier "iVar8") (+ "+") (identifier "uVar6"))) (; ";")) (if_statement "if (iVar15 < iVar8) {\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }\n        else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" (if "if") (parenthesized_expression "(iVar15 < iVar8)" (( "(") (binary_expression "iVar15 < iVar8" (identifier "iVar15") (< "<") (identifier "iVar8")) () ")")) (compound_statement "{\n          iVar17 = iVar17 - iVar15;\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);\n        }" ({ "{") (expression_statement "iVar17 = iVar17 - iVar15;" (assignment_expression "iVar17 = iVar17 - iVar15" (identifier "iVar17") (= "=") (binary_expression "iVar17 - iVar15" (identifier "iVar17") (- "-") (identifier "iVar15"))) (; ";")) (expression_statement "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);" (assignment_expression "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(iVar12 + uVar6 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + uVar6 * 4)" (( "(") (binary_expression "iVar12 + uVar6 * 4" (identifier "iVar12") (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);" (assignment_expression "puVar10 = (undefined4 *)(iVar12 + iVar17 * 4)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(iVar12 + iVar17 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar17 * 4)" (( "(") (binary_expression "iVar12 + iVar17 * 4" (identifier "iVar12") (+ "+") (binary_expression "iVar17 * 4" (identifier "iVar17") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);" (do "do") (compound_statement "{\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            uVar3 = uVar6;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          }" ({ "{") (expression_statement "puVar9 = puVar4 + 1;" (assignment_expression "puVar9 = puVar4 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = *puVar4;" (assignment_expression "uVar16 = *puVar4" (identifier "uVar16") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "*puVar4 = *puVar10;" (assignment_expression "*puVar4 = *puVar10" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "*puVar10 = uVar16;" (assignment_expression "*puVar10 = uVar16" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "uVar3 = uVar6;" (assignment_expression "uVar3 = uVar6" (identifier "uVar3") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" (identifier "puVar4") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9)" (( "(") (binary_expression "(undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9" (cast_expression "(undefined4 *)(iVar12 + (iVar15 + uVar6) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + (iVar15 + uVar6) * 4)" (( "(") (binary_expression "iVar12 + (iVar15 + uVar6) * 4" (identifier "iVar12") (+ "+") (binary_expression "(iVar15 + uVar6) * 4" (parenthesized_expression "(iVar15 + uVar6)" (( "(") (binary_expression "iVar15 + uVar6" (identifier "iVar15") (+ "+") (identifier "uVar6")) () ")")) (* "*") (number_literal "4"))) () ")"))) (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" (else "else") (compound_statement "{\n          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);\n          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);\n          do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));\n        }" ({ "{") (expression_statement "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);" (assignment_expression "puVar4 = (undefined4 *)(iVar12 + uVar6 * 4)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(iVar12 + uVar6 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + uVar6 * 4)" (( "(") (binary_expression "iVar12 + uVar6 * 4" (identifier "iVar12") (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);" (assignment_expression "puVar10 = (undefined4 *)(iVar12 + iVar11 * 4)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(iVar12 + iVar11 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar11 * 4)" (( "(") (binary_expression "iVar12 + iVar11 * 4" (identifier "iVar12") (+ "+") (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4"))) () ")")))) (; ";")) (do_statement "do {\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));" (do "do") (compound_statement "{\n            puVar9 = puVar4 + 1;\n            uVar16 = *puVar4;\n            *puVar4 = *puVar10;\n            *puVar10 = uVar16;\n            puVar4 = puVar9;\n            puVar10 = puVar10 + 1;\n          }" ({ "{") (expression_statement "puVar9 = puVar4 + 1;" (assignment_expression "puVar9 = puVar4 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = *puVar4;" (assignment_expression "uVar16 = *puVar4" (identifier "uVar16") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "*puVar4 = *puVar10;" (assignment_expression "*puVar4 = *puVar10" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "*puVar10 = uVar16;" (assignment_expression "*puVar10 = uVar16" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar4 = puVar9;" (assignment_expression "puVar4 = puVar9" (identifier "puVar4") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != (undefined4 *)(iVar12 + uVar3 * 4))" (( "(") (binary_expression "puVar9 != (undefined4 *)(iVar12 + uVar3 * 4)" (identifier "puVar9") (!= "!=") (cast_expression "(undefined4 *)(iVar12 + uVar3 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + uVar3 * 4)" (( "(") (binary_expression "iVar12 + uVar3 * 4" (identifier "iVar12") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4"))) () ")")))) () ")")) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11))" (( "(") (binary_expression "(iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11)" (parenthesized_expression "(iVar11 < iVar17)" (( "(") (binary_expression "iVar11 < iVar17" (identifier "iVar11") (< "<") (identifier "iVar17")) () ")")) (&& "&&") (parenthesized_expression "(iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11)" (( "(") (comma_expression "iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11" (assignment_expression "iVar8 = iVar17 - iVar11" (identifier "iVar8") (= "=") (binary_expression "iVar17 - iVar11" (identifier "iVar17") (- "-") (identifier "iVar11"))) (, ",") (comma_expression "uVar6 = uVar3, (int)uVar3 < iVar11" (assignment_expression "uVar6 = uVar3" (identifier "uVar6") (= "=") (identifier "uVar3")) (, ",") (binary_expression "(int)uVar3 < iVar11" (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3")) (< "<") (identifier "iVar11")))) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "piVar20[8] = iVar18;" (assignment_expression "piVar20[8] = iVar18" (subscript_expression "piVar20[8]" (identifier "piVar20") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "piVar20[7] = (iVar18 - iVar11) + uVar19;" (assignment_expression "piVar20[7] = (iVar18 - iVar11) + uVar19" (subscript_expression "piVar20[7]" (identifier "piVar20") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "(iVar18 - iVar11) + uVar19" (parenthesized_expression "(iVar18 - iVar11)" (( "(") (binary_expression "iVar18 - iVar11" (identifier "iVar18") (- "-") (identifier "iVar11")) () ")")) (+ "+") (identifier "uVar19"))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))
(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: (pointer_declarator 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (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: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) 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: (identifier))) (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 (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (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: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (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 (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: (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))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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 (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: (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: (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: (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: (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: (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: (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (goto_statement label: (statement_identifier)))) (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)))))))) alternative: (else_clause (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: (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: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (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: (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))) 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: (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: (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: (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: (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: (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: (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)))) (break_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: (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (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))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (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: (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: (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: (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)) 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;
  undefined *puVar2;
  uint uVar3;
  byte bVar7;
  undefined4 *puVar4;
  int *piVar5;
  uint uVar6;
  int iVar8;
  undefined4 *puVar9;
  undefined4 *puVar10;
  int iVar11;
  int iVar12;
  byte *pbVar13;
  byte *pbVar14;
  int iVar15;
  undefined4 uVar16;
  int iVar17;
  int iVar18;
  uint uVar19;
  int *piVar20;
  undefined1 *puVar21;
  uint unaff_s1;
  byte *pbVar22;
  byte *pbVar23;
  undefined *unaff_s3;
  int unaff_s5;
  undefined1 *puVar24;
  undefined1 *puVar25;
  byte *unaff_s6;
  int *piVar26;
  byte *pbVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined1 *puVar30;
  undefined1 *puVar31;
  byte *pbVar32;
  code *pcVar33;
  code *pcVar34;
  undefined1 auStack_68 [24];
  byte *local_44;
  int *local_34;
  int local_30;
  byte *local_2c;
  
  puVar1 = PTR___stack_chk_guard_0005b58c;
  puVar30 = auStack_68;
  pbVar27 = param_2 + 1;
  local_30 = 0;
  local_2c = *(byte **)PTR___stack_chk_guard_0005b58c;
  pbVar13 = param_2;
  pbVar14 = param_3;
  local_44 = (byte *)(*(code *)PTR_strlen_0005b4e4)(param_2);
  puVar28 = PTR_DAT_0005b118;
  iVar11 = (int)(char)param_2[1];
  if (iVar11 != 0) {
    unaff_s5 = 0;
    unaff_s1 = (uint)(param_1 - 0x3fU < 2);
    puVar2 = PTR_DAT_0005b2cc + -0x78dc;
    local_34 = &local_30;
    puVar21 = auStack_68;
    unaff_s6 = pbVar27;
LAB_00029fdc:
    do {
      puVar30 = puVar21;
      unaff_s3 = puVar28;
      if (iVar11 == 0x5b) {
        if (*(int *)(puVar28 + -0x4730) == 0) {
          iVar11 = (*(code *)PTR_getenv_0005b510)(puVar2);
          uVar16 = 0xffffffff;
          if (iVar11 != 0) {
            uVar16 = 1;
          }
          *(undefined4 *)(puVar28 + -0x4730) = uVar16;
        }
        bVar7 = pbVar27[1];
        pbVar23 = pbVar27 + 1;
        if ((bVar7 == 0x21) || ((*(int *)(puVar28 + -0x4730) < 0 && (bVar7 == 0x5e)))) {
          bVar7 = pbVar27[2];
          pbVar23 = pbVar27 + 2;
        }
        if (bVar7 == 0x5d) {
          bVar7 = pbVar23[1];
          pbVar23 = pbVar23 + 1;
        }
        pbVar13 = (byte *)0x5d;
        while (pbVar27 = pbVar23 + 1, bVar7 != 0x5d) {
          if (bVar7 == 0) goto LAB_0002a034;
          pbVar23 = pbVar27;
          bVar7 = *pbVar27;
        }
        iVar11 = (int)(char)pbVar23[1];
      }
      else {
        pbVar13 = &DAT_c0000601;
        uVar3 = iVar11 - 0x21U & 0xff;
        pbVar14 = (byte *)(uint)(uVar3 < 0x20);
        if (pbVar14 == (byte *)0x0) {
          if ((iVar11 == 0x7c) && (unaff_s5 == 0)) {
            pbVar23 = local_44;
            if (unaff_s1 == 0) {
              pbVar23 = pbVar27 + (1 - (int)unaff_s6);
            }
            if (0x1f3b < ((uint)(pbVar23 + 7) & 0xfffffffc) - 4) break;
            pbVar14 = pbVar27 + -(int)unaff_s6;
            pbVar22 = pbVar27 + 1;
            iVar12 = -(((uint)(pbVar23 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
            puVar31 = puVar30 + iVar12;
            piVar5 = (int *)(puVar30 + iVar12 + 0x18);
            puVar21 = (undefined1 *)(*(code *)PTR_mempcpy_0005b574)(puVar30 + iVar12 + 0x1c);
            iVar11 = (int)(char)pbVar27[1];
            *puVar21 = 0;
            *piVar5 = 0;
            *local_34 = (int)piVar5;
            pbVar13 = unaff_s6;
            unaff_s6 = pbVar22;
            pbVar27 = pbVar22;
            puVar30 = puVar30 + iVar12;
            local_34 = piVar5;
            puVar21 = puVar31;
            if (iVar11 == 0) break;
            goto LAB_00029fdc;
          }
LAB_0002a198:
          iVar11 = (int)(char)pbVar27[1];
        }
        else {
          while ((int)((0xc0000601U >> (uVar3 & 0x1f)) << 0x1f) < 0) {
            iVar11 = (int)(char)pbVar27[1];
            if (iVar11 != 0x28) goto joined_r0x0002a19c;
            pbVar14 = (byte *)0x1;
            unaff_s5 = unaff_s5 + 1;
            pbVar27 = pbVar27 + 1;
            uVar3 = 7;
          }
          if (iVar11 != 0x29) goto LAB_0002a198;
          if (unaff_s5 == 0) {
            if (1 < param_1 - 0x3fU) {
              local_44 = pbVar27 + (1 - (int)unaff_s6);
            }
            if (((uint)(local_44 + 7) & 0xfffffffc) - 4 < 0x1f3c) {
              iVar11 = -(((uint)(local_44 + 7) & 0xfffffffc) + 7 & 0xfffffff8);
              puVar21 = (undefined1 *)
                        (*(code *)PTR_mempcpy_0005b574)
                                  (puVar30 + iVar11 + 0x1c,unaff_s6,(int)pbVar27 - (int)unaff_s6);
              *puVar21 = 0;
              *(undefined4 *)(puVar30 + iVar11 + 0x18) = 0;
              *local_34 = (int)(puVar30 + iVar11 + 0x18);
              if (local_30 == 0) {
                uVar3 = (*(code *)PTR___assert_fail_0005b410)
                                  (PTR_DAT_0005b2cc + -0x78bc,PTR_DAT_0005b2cc + -0x78cc,0x454,
                                   PTR_DAT_0005b2cc + -0x7570);
                return uVar3;
              }
              if (pbVar27[-1] != 0x29) {
                uVar3 = (*(code *)PTR___assert_fail_0005b410)
                                  (PTR_DAT_0005b2cc + -0x78ac,PTR_DAT_0005b2cc + -0x78cc,0x455,
                                   PTR_DAT_0005b2cc + -0x7570);
                return uVar3;
              }
              if (0x1f < param_1 - 0x21U) {
                uVar3 = (*(code *)PTR___assert_fail_0005b410)
                                  (PTR_DAT_0005b2cc + -0x7898,PTR_DAT_0005b2cc + -0x78cc,0x4ad,
                                   PTR_DAT_0005b2cc + -0x7570);
                return uVar3;
              }
                    /* WARNING: Could not emulate address calculation at 0x0002a294 */
                    /* WARNING: Treating indirect jump as call */
              uVar3 = (*(code *)(&_gp_1 + *(int *)(PTR_DAT_0005b2cc +
                                                  (param_1 - 0x21U) * 4 + -0x76e0)))();
              return uVar3;
            }
            break;
          }
          iVar11 = (int)(char)pbVar27[1];
          unaff_s5 = unaff_s5 + -1;
        }
joined_r0x0002a19c:
        pbVar27 = pbVar27 + 1;
      }
      puVar21 = puVar30;
    } while (iVar11 != 0);
  }
LAB_0002a034:
  if (local_2c == *(byte **)puVar1) {
    return 0xffffffff;
  }
  pcVar33 = FUN_0002a610;
  pbVar23 = local_2c;
  puVar28 = PTR___stack_chk_fail_0005b564;
  (*(code *)PTR___stack_chk_fail_0005b564)();
  puVar2 = puVar28 + 0x38ae0;
  puVar4 = *(undefined4 **)(puVar28 + 0x30f7c);
  *(undefined1 **)(puVar30 + -8) = auStack_68;
  *(undefined **)(puVar30 + -0x1c) = unaff_s3;
  *(undefined **)(puVar30 + -0x160) = puVar2;
  *(code **)(puVar30 + -4) = pcVar33;
  *(byte **)(puVar30 + -0xc) = pbVar27;
  *(byte **)(puVar30 + -0x10) = unaff_s6;
  *(int *)(puVar30 + -0x14) = unaff_s5;
  *(byte **)(puVar30 + -0x18) = param_3;
  *(undefined **)(puVar30 + -0x20) = puVar1;
  *(uint *)(puVar30 + -0x24) = unaff_s1;
  *(byte **)(puVar30 + -0x28) = param_2;
  *(undefined4 **)(puVar30 + -0x144) = puVar4;
  *(byte **)(puVar30 + -0x154) = pbVar23 + 1;
  pbVar22 = (byte *)(uint)*pbVar23;
  *(undefined4 *)(puVar30 + -0x2c) = *puVar4;
  iVar11 = *(int *)(puVar28 + 0x30cbc);
  pbVar27 = pbVar14;
  pbVar32 = pbVar13;
  if (pbVar22 != (byte *)0x0) {
    uVar3 = *(uint *)(puVar30 + 0x10);
    unaff_s1 = uVar3 & 2;
    param_2 = (byte *)(uVar3 & 0x10);
    *(uint *)(puVar30 + -0x140) = uVar3 & 5;
    *(undefined4 *)(puVar30 + -0x148) = *(undefined4 *)(puVar28 + 0x30b08);
    *(int *)(puVar30 + -0x14c) = iVar11 + -0x7660;
    *(int *)(puVar30 + -0x138) = *(int *)(puVar28 + 0x30d80) + -0x60e0;
    *(int *)(puVar30 + -0x13c) = *(int *)(puVar28 + 0x30cbc) + -0x78dc;
    param_3 = pbVar23;
    unaff_s6 = param_4;
    do {
      pbVar23 = pbVar22;
      if (param_2 != (byte *)0x0) {
        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();
        puVar2 = *(undefined **)(puVar30 + -0x160);
        pbVar23 = (byte *)(uint)*(byte *)(*piVar5 + (int)pbVar22 * 4 + 3);
      }
      if (((uint)(pbVar23 + -0x21) & 0xff) < 0x3c) {
                    /* WARNING: Could not recover jumptable at 0x0002a704. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar3 = (*(code *)(puVar2 + *(int *)(*(int *)(puVar30 + -0x14c) +
                                            ((uint)(pbVar23 + -0x21) & 0xff) * 4)))();
        return uVar3;
      }
      uVar3 = 1;
      pbVar22 = pbVar23;
      if (pbVar32 == pbVar14) goto LAB_0002a8e4;
      pbVar22 = (byte *)(uint)*pbVar32;
      if (param_2 != (byte *)0x0) {
        piVar5 = (int *)(**(code **)(puVar2 + -0x7cdc))();
        puVar2 = *(undefined **)(puVar30 + -0x160);
        pbVar22 = *(byte **)(*piVar5 + (int)pbVar22 * 4);
      }
      uVar3 = 1;
      unaff_s6 = pbVar23;
      if (pbVar22 != pbVar23) goto LAB_0002a8e4;
      param_3 = *(byte **)(puVar30 + -0x154);
      unaff_s6 = (byte *)0x0;
      pbVar22 = (byte *)(uint)*param_3;
      pbVar32 = pbVar32 + 1;
      *(byte **)(puVar30 + -0x154) = param_3 + 1;
    } while (pbVar22 != (byte *)0x0);
  }
  uVar3 = 0;
  if (pbVar32 != pbVar14) {
    param_3 = (byte *)(*(uint *)(puVar30 + 0x10) & 8);
    if (param_3 == (byte *)0x0) {
      uVar3 = 1;
    }
    else {
      uVar3 = (uint)(*pbVar32 != 0x2f);
    }
  }
LAB_0002a8e4:
  iVar12 = *(int *)(puVar30 + -0x2c);
  if (iVar12 == **(int **)(puVar30 + -0x144)) {
    return uVar3;
  }
  pcVar33 = *(code **)(puVar2 + -0x7b8c);
  pcVar34 = rpl_fnmatch;
  (*pcVar33)();
  pcVar29 = *(code **)(pcVar33 + 0x302e0);
  *(uint *)(puVar30 + -0x19c) = unaff_s1;
  piVar5 = *(int **)(pcVar33 + 0x30338);
  *(byte **)(puVar30 + -0x180) = pbVar32;
  *(byte **)(puVar30 + -0x198) = pbVar22;
  *(code **)(puVar30 + -0x1c8) = pcVar33 + 0x37e9c;
  *(code **)(puVar30 + -0x17c) = pcVar34;
  *(int *)(puVar30 + -0x184) = iVar11;
  *(byte **)(puVar30 + -0x188) = unaff_s6;
  *(int *)(puVar30 + -0x18c) = unaff_s5;
  *(byte **)(puVar30 + -400) = param_3;
  *(byte **)(puVar30 + -0x194) = pbVar14;
  *(byte **)(puVar30 + -0x1a0) = param_2;
  *(int *)(puVar30 + -0x1b4) = iVar12;
  *(byte **)(puVar30 + -0x1b8) = pbVar13;
  *(int *)(puVar30 + -0x1a4) = *piVar5;
  iVar11 = (*pcVar29)();
  iVar12 = *(int *)(puVar30 + -0x1c8);
  if (iVar11 != 1) {
    puVar21 = puVar30 + -0x1ac;
    pcVar33 = *(code **)(iVar12 + -0x7b28);
    puVar24 = puVar30 + -0x1b4;
    *(undefined4 *)(puVar30 + -0x1ac) = 0;
    *(undefined4 *)(puVar30 + -0x1a8) = 0;
    iVar11 = (*pcVar33)(0,puVar24,0,puVar21);
    uVar3 = iVar11 + 1;
    iVar12 = *(int *)(puVar30 + -0x1c8);
    if (uVar3 != 0) {
      iVar11 = (**(code **)(iVar12 + -0x7b68))(puVar21);
      uVar16 = 0x129;
      iVar12 = *(int *)(puVar30 + -0x1c8);
      if (iVar11 == 0) goto LAB_0002b570;
      piVar26 = (int *)(puVar30 + -0x1b8);
      piVar20 = piVar26;
      iVar11 = (**(code **)(iVar12 + -0x7b28))(0,piVar26,0,puVar21);
      iVar18 = iVar11 + 1;
      iVar12 = *(int *)(puVar30 + -0x1c8);
      if (iVar18 != 0) {
        iVar17 = (**(code **)(iVar12 + -0x7b68))(puVar21);
        iVar12 = *(int *)(puVar30 + -0x1c8);
        if (iVar17 == 0) {
          uVar16 = 0x12d;
          goto LAB_0002b570;
        }
        uVar19 = uVar3 + iVar18;
        if ((uVar3 <= uVar19) && (uVar19 < 0x40000000)) {
          if (uVar19 < 2000) {
            iVar17 = -(uVar19 * 4 + 7 & 0xfffffff8);
            puVar25 = puVar30 + iVar17 + -0x1c8;
            piVar20 = (int *)(puVar25 + uVar3 * 4);
            (**(code **)(iVar12 + -0x7b28))(puVar25,puVar24,uVar3,puVar21);
            iVar8 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);
            iVar12 = *(int *)(puVar30 + -0x1c8);
            if (iVar8 == 0) {
LAB_0002b590:
              do {
                uVar16 = 0x147;
LAB_0002b570:
                (**(code **)(iVar12 + -0x7ce0))
                          (*(int *)(iVar12 + -0x7e24) + -0x7864,*(int *)(iVar12 + -0x7e24) + -0x7870
                           ,uVar16,*(int *)(iVar12 + -0x7e24) + -0x7558);
              } while( true );
            }
            (**(code **)(iVar12 + -0x7b28))(piVar20,piVar26,iVar18,puVar21);
            *(byte **)(puVar30 + iVar17 + -0x1d0) = pbVar27;
            uVar3 = FUN_00029320(puVar25,piVar20,piVar20 + iVar11,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            iVar11 = *(int *)(puVar30 + -0x1c8);
            goto LAB_0002b300;
          }
          iVar17 = (**(code **)(iVar12 + -0x7be8))();
          iVar12 = *(int *)(puVar30 + -0x1c8);
          if (iVar17 != 0) {
            pcVar33 = *(code **)(iVar12 + -0x7b28);
            *(int *)(puVar30 + -0x1bc) = iVar17;
            piVar20 = (int *)(iVar17 + uVar3 * 4);
            (*pcVar33)(iVar17,puVar24,uVar3,puVar21);
            iVar17 = (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b68))(puVar21);
            iVar12 = *(int *)(puVar30 + -0x1c8);
            if (iVar17 == 0) goto LAB_0002b590;
            pcVar33 = *(code **)(iVar12 + -0x7b28);
            *(undefined4 *)(puVar30 + -0x1bc) = *(undefined4 *)(puVar30 + -0x1bc);
            (*pcVar33)(piVar20,piVar26,iVar18,puVar21);
            *(byte **)(puVar30 + -0x1d0) = pbVar27;
            uVar3 = FUN_00029320(*(undefined4 *)(puVar30 + -0x1bc),piVar20,piVar20 + iVar11,
                                 (uint)((int)pbVar27 << 0x1d) >> 0x1f);
            (**(code **)(*(int *)(puVar30 + -0x1c8) + -0x7b54))(*(undefined4 *)(puVar30 + -0x1bc));
            iVar11 = *(int *)(puVar30 + -0x1c8);
            goto LAB_0002b300;
          }
        }
        uVar3 = 0xffffffff;
        puVar4 = (undefined4 *)(**(code **)(iVar12 + -0x7c3c))();
        iVar11 = *(int *)(puVar30 + -0x1c8);
        *puVar4 = 0xc;
        goto LAB_0002b300;
      }
    }
  }
  piVar20 = *(int **)(puVar30 + -0x1b8);
  iVar11 = (**(code **)(iVar12 + -0x7c0c))(piVar20);
  *(byte **)(puVar30 + -0x1d0) = pbVar27;
  uVar3 = FUN_0002a610(*(undefined4 *)(puVar30 + -0x1b4),piVar20,(int)piVar20 + iVar11,
                       (uint)((int)pbVar27 << 0x1d) >> 0x1f);
  iVar11 = *(int *)(puVar30 + -0x1c8);
LAB_0002b300:
  iVar12 = *(int *)(puVar30 + -0x1a4);
  if (iVar12 != *piVar5) {
    (**(code **)(iVar11 + -0x7b8c))();
    iVar11 = piVar20[8];
    iVar18 = *piVar20;
    uVar3 = (uint)(iVar11 < iVar18);
    uVar19 = piVar20[7];
    if ((uVar3 != 0) && (uVar3 = (uint)((int)uVar19 < iVar11), uVar3 != 0)) {
      iVar8 = iVar18 - iVar11;
      uVar6 = uVar19;
      iVar17 = iVar18;
      do {
        iVar15 = iVar11 - uVar6;
        uVar3 = iVar8 + uVar6;
        if (iVar15 < iVar8) {
          iVar17 = iVar17 - iVar15;
          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);
          puVar10 = (undefined4 *)(iVar12 + iVar17 * 4);
          do {
            puVar9 = puVar4 + 1;
            uVar16 = *puVar4;
            *puVar4 = *puVar10;
            *puVar10 = uVar16;
            uVar3 = uVar6;
            puVar4 = puVar9;
            puVar10 = puVar10 + 1;
          } while ((undefined4 *)(iVar12 + (iVar15 + uVar6) * 4) != puVar9);
        }
        else {
          puVar4 = (undefined4 *)(iVar12 + uVar6 * 4);
          puVar10 = (undefined4 *)(iVar12 + iVar11 * 4);
          do {
            puVar9 = puVar4 + 1;
            uVar16 = *puVar4;
            *puVar4 = *puVar10;
            *puVar10 = uVar16;
            puVar4 = puVar9;
            puVar10 = puVar10 + 1;
          } while (puVar9 != (undefined4 *)(iVar12 + uVar3 * 4));
        }
      } while ((iVar11 < iVar17) && (iVar8 = iVar17 - iVar11, uVar6 = uVar3, (int)uVar3 < iVar11));
    }
    piVar20[8] = iVar18;
    piVar20[7] = (iVar18 - iVar11) + uVar19;
    return uVar3;
  }
  return uVar3;
}

