
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  patternlist **pppVar1;
  int iVar2;
  wchar_t *pwVar3;
  char *pcVar4;
  wchar_t *pwVar5;
  uint uVar6;
  wchar_t *pwVar7;
  patternlist *ppVar8;
  patternlist *ppVar9;
  undefined1 *puVar10;
  undefined1 *puVar11;
  patternlist *ppVar12;
  patternlist *pattern_00;
  int iVar13;
  patternlist *ppVar14;
  uint uVar15;
  int in_GS_OFFSET;
  undefined3 in_stack_00000009;
  undefined1 auStack_5c [11];
  byte local_51;
  wchar_t *local_50;
  uint local_4c;
  patternlist *local_48;
  wchar_t *local_44;
  wchar_t *local_40;
  patternlist *local_3c;
  wchar_t *local_38;
  patternlist *local_34;
  patternlist *local_30;
  patternlist *list;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1670d;
  local_44 = string_end;
  local_4c = _no_leading_period;
  local_51 = no_leading_period;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  list = (patternlist *)0x0;
  local_50 = pattern;
  local_40 = (wchar_t *)opt;
  local_38 = string;
  local_3c = (patternlist *)wcslen(pattern);
  puVar10 = auStack_5c;
  ppVar14 = (patternlist *)pattern[1];
  if (ppVar14 != (patternlist *)0x0) {
    ppVar12 = (patternlist *)(pattern + 1);
    local_34 = (patternlist *)&list;
    ppVar9 = (patternlist *)0xc0000601;
    local_30 = ppVar12;
    puVar10 = auStack_5c;
    iVar13 = 0;
LAB_00016787:
    ppVar8 = local_30;
    pattern_00 = ppVar12;
    if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;
    if (posixly_correct == 0) {
      local_48 = ppVar9;
      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";
      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;
      pcVar4 = getenv(*(char **)(puVar10 + -0x10));
      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;
      ppVar9 = local_48;
    }
    ppVar14 = ppVar12[1].next;
    if ((ppVar14 == (patternlist *)0x21) ||
       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {
      ppVar8 = ppVar12 + 2;
      ppVar14 = ppVar12[2].next;
    }
    else {
      ppVar8 = ppVar12 + 1;
    }
    if (ppVar14 == (patternlist *)0x5d) {
      ppVar14 = ppVar8[1].next;
      ppVar8 = ppVar8 + 1;
    }
    while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {
      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;
      ppVar8 = ppVar12;
      ppVar14 = ppVar12->next;
    }
    ppVar14 = ppVar8[1].next;
    goto LAB_00016783;
  }
LAB_000167c0:
  iVar2 = -1;
  puVar11 = puVar10;
  goto LAB_000167c5;
LAB_0001678c:
  puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3);
  if (puVar11 < (undefined1 *)0x20) {
    if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&
       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;
    if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;
    if (iVar13 != 0) {
      ppVar14 = pattern_00[1].next;
      ppVar12 = pattern_00 + 1;
      iVar13 = iVar13 + -1;
      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;
      goto LAB_000167c0;
    }
    if (1 < (int)local_40 - 0x3fU) {
      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);
    }
    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))
    goto LAB_000167c0;
    iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);
    puVar11 = puVar10 + iVar13;
    ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);
    *(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;
    *(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;
    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;
    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;
    pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)
                      ,*(size_t *)(puVar10 + iVar13 + -8));
    pwVar3 = local_44;
    uVar6 = local_4c;
    *pwVar5 = L'\0';
    ppVar14->next = (patternlist *)0x0;
    local_34->next = ppVar14;
    local_48 = list;
    if (list == (patternlist *)0x0) {
      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;
      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;
      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),
                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));
    }
    if (pattern_00[-1].next != (patternlist *)0x29) {
      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;
      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";
                    /* WARNING: Subroutine does not return */
      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;
      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),
                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));
    }
    switch(local_40) {
    case (wchar_t *)0x21:
      if (local_44 < local_38) goto LAB_00016b66;
      local_34 = pattern_00;
      local_30 = (patternlist *)(local_4c & 0xff);
      ppVar14 = local_48;
      uVar6 = flags & 0xfffffffb;
      pwVar3 = local_38;
      if ((flags & 1U) != 0) {
        uVar6 = flags;
      }
      goto LAB_00016b00;
    default:
      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;
      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;
      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),
                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));
    case (wchar_t *)0x2a:
      uVar6 = local_4c & 0xff;
      *(int *)(puVar10 + iVar13 + -0xc) = flags;
      pwVar5 = local_38;
      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;
      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;
      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],
                                *(int *)(puVar10 + iVar13 + -0xc));
      if (iVar2 == 0) goto LAB_00016acb;
    case (wchar_t *)0x2b:
      local_3c = pattern_00;
      uVar6 = flags & 0xfffffffb;
      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {
        uVar6 = flags;
      }
      local_34 = (patternlist *)(flags & 1U);
      ppVar14 = local_48;
      goto LAB_000169fc;
    case (wchar_t *)0x3f:
      uVar15 = local_4c & 0xff;
      *(int *)(puVar10 + iVar13 + -0xc) = flags;
      pwVar3 = local_44;
      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;
      pwVar5 = local_38;
      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;
      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],
                                *(int *)(puVar10 + iVar13 + -0xc));
      if (iVar2 != 0) goto LAB_00016b74;
      iVar2 = 0;
      puVar11 = puVar10 + iVar13;
      goto LAB_000167c5;
    case (wchar_t *)0x40:
LAB_00016b74:
      local_34 = (patternlist *)(uVar6 & 0xff);
      local_30 = (patternlist *)(flags & 0xfffffffb);
      if ((flags & 1U) != 0) {
        local_30 = (patternlist *)flags;
      }
      ppVar14 = local_48;
    }
    goto LAB_00016b96;
  }
  if ((ppVar14 == (patternlist *)0x7c) && (iVar13 == 0)) {
    ppVar14 = local_3c;
    if (1 < (int)local_40 - 0x3fU) {
      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);
    }
    local_48 = ppVar9;
    if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))
    goto LAB_000167c0;
    iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);
    ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);
    *(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;
    *(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;
    *(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;
    *(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;
    pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),
                      *(size_t *)(puVar10 + iVar2 + -8));
    ppVar14 = local_34;
    ppVar12 = pattern_00 + 1;
    *pwVar3 = L'\0';
    ppVar9->next = (patternlist *)0x0;
    local_34 = ppVar9;
    ppVar14->next = ppVar9;
    ppVar14 = pattern_00[1].next;
    iVar13 = 0;
    local_30 = ppVar12;
    ppVar9 = local_48;
    puVar10 = puVar10 + iVar2;
  }
  else {
LAB_0001677d:
    ppVar14 = pattern_00[1].next;
    ppVar12 = pattern_00 + 1;
  }
LAB_00016783:
  if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;
  goto LAB_00016787;
LAB_000167e0:
  iVar13 = iVar13 + 1;
  pattern_00 = pattern_00 + 1;
  ppVar14 = (patternlist *)0x28;
  goto LAB_0001678c;
  while( true ) {
    ppVar14 = ppVar14->next;
    list = ppVar14;
    if (ppVar14 == (patternlist *)0x0) break;
LAB_00016b96:
    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;
    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;
    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;
    pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));
    *(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;
    pwVar3 = local_44;
    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;
    pwVar5 = local_38;
    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;
    iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],
                              *(int *)(puVar10 + iVar13 + -0xc));
    if (iVar2 == 0) {
      iVar2 = 0;
      puVar11 = puVar10 + iVar13;
      goto LAB_000167c5;
    }
  }
  goto LAB_00016b66;
LAB_000169fc:
  do {
    if (local_38 <= local_44) {
      local_30 = (patternlist *)(uint)local_51;
      local_40 = local_50 + -1;
      pwVar3 = local_38;
      do {
        pwVar5 = local_38;
        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;
        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;
        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;
        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,
                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));
        pwVar7 = local_38;
        pwVar5 = local_44;
        if (iVar2 == 0) {
          if (local_38 == pwVar3) {
            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;
            ppVar14 = local_3c;
            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;
            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;
            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,
                                      (_Bool)puVar10[iVar13 + -0x10],
                                      *(int *)(puVar10 + iVar13 + -0xc));
            ppVar14 = list;
          }
          else {
            uVar15 = 0;
            if (pwVar3[-1] == L'/') {
              uVar15 = (uint)((flags & 5U) == 5);
            }
            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;
            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;
            ppVar14 = local_3c;
            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;
            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,
                                      (_Bool)puVar10[iVar13 + -0x10],
                                      *(int *)(puVar10 + iVar13 + -0xc));
            pwVar5 = local_44;
            if (iVar2 == 0) goto LAB_00016acb;
            uVar15 = 0;
            if (pwVar3[-1] == L'/') {
              uVar15 = (uint)((flags & 5U) == 5);
            }
            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;
            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;
            pwVar7 = local_40;
            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;
            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],
                                      *(int *)(puVar10 + iVar13 + -0xc));
            ppVar14 = list;
          }
          list = ppVar14;
          if (iVar2 == 0) goto LAB_00016acb;
        }
        pwVar3 = pwVar3 + 1;
      } while (pwVar3 <= local_44);
    }
    ppVar14 = ppVar14->next;
    list = ppVar14;
  } while (ppVar14 != (patternlist *)0x0);
  goto LAB_00016b66;
LAB_00016acb:
  iVar2 = 0;
  goto LAB_000167c5;
  while (pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44) {
LAB_00016b00:
    pwVar5 = local_38;
    *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;
    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;
    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;
    iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],
                              *(int *)(puVar10 + iVar13 + -0xc));
    pwVar5 = local_44;
    if (iVar2 != 0) {
      pppVar1 = &ppVar14->next;
      ppVar14 = *pppVar1;
      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;
      ppVar14 = local_30;
      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {
        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);
      }
      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;
      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;
      ppVar14 = local_34;
      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;
      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],
                                *(int *)(puVar10 + iVar13 + -0xc));
      if (iVar2 == 0) goto LAB_00016acb;
    }
  }
LAB_00016b66:
  iVar2 = 1;
  puVar11 = puVar10 + iVar13;
LAB_000167c5:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)(puVar11 + -4) = 0x16c2c;
    __stack_chk_fail_local();
  }
  return iVar2;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 __regparm3
FUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,
            int **param_6)

{
  undefined4 uVar1;
  char *pcVar2;
  wchar_t *pwVar3;
  int **ppiVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  uint uVar8;
  undefined1 *puVar9;
  undefined1 *puVar10;
  int **ppiVar11;
  int iVar12;
  int **ppiVar13;
  int *piVar14;
  uint uVar15;
  int in_GS_OFFSET;
  undefined1 auStack_5c [11];
  byte local_51;
  wchar_t *local_50;
  uint local_4c;
  int *local_48;
  uint local_44;
  wchar_t *local_40;
  int **local_3c;
  uint local_38;
  int **local_34;
  int **local_30;
  int *local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1670d;
  local_44 = param_4;
  local_4c = param_5;
  local_51 = (byte)param_5;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_24 = (int *)0x0;
  local_50 = param_2;
  local_38 = param_3;
  local_3c = (int **)wcslen(param_2);
  puVar9 = auStack_5c;
  piVar14 = (int *)param_2[1];
  if (piVar14 != (int *)0x0) {
    ppiVar6 = (int **)(param_2 + 1);
    local_34 = &local_24;
    piVar7 = (int *)0xc0000601;
    local_30 = ppiVar6;
    puVar9 = auStack_5c;
    iVar12 = 0;
LAB_00016787:
    ppiVar4 = local_30;
    ppiVar11 = ppiVar6;
    if (piVar14 != (int *)0x5b) goto LAB_0001678c;
    if (DAT_00022330 == 0) {
      local_48 = piVar7;
      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";
      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;
      pcVar2 = getenv(*(char **)(puVar9 + -0x10));
      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;
      piVar7 = local_48;
    }
    piVar14 = ppiVar6[1];
    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {
      ppiVar4 = ppiVar6 + 2;
      piVar14 = ppiVar6[2];
    }
    else {
      ppiVar4 = ppiVar6 + 1;
    }
    if (piVar14 == (int *)0x5d) {
      piVar14 = ppiVar4[1];
      ppiVar4 = ppiVar4 + 1;
    }
    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {
      if (piVar14 == (int *)0x0) goto LAB_000167c0;
      ppiVar4 = ppiVar6;
      piVar14 = *ppiVar6;
    }
    piVar14 = ppiVar4[1];
    goto LAB_00016783;
  }
LAB_000167c0:
  uVar1 = 0xffffffff;
  puVar10 = puVar9;
  goto code_r0x000167c5;
LAB_0001678c:
  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {
    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&
       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;
    if (piVar14 != (int *)0x29) goto LAB_0001677d;
    if (iVar12 != 0) {
      piVar14 = ppiVar11[1];
      ppiVar6 = ppiVar11 + 1;
      iVar12 = iVar12 + -1;
      if (piVar14 != (int *)0x0) goto LAB_00016787;
      goto LAB_000167c0;
    }
    if (1 < (int)local_40 - 0x3fU) {
      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);
    }
    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;
    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);
    puVar10 = puVar9 + iVar12;
    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);
    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;
    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;
    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;
    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;
    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),
                      *(size_t *)(puVar9 + iVar12 + -8));
    uVar8 = local_4c;
    *pwVar3 = L'\0';
    *piVar14 = 0;
    *local_34 = piVar14;
    local_48 = local_24;
    if (local_24 == (int *)0x0) {
      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;
      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;
      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),
                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));
    }
    if (ppiVar11[-1] != (int *)0x29) {
      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;
      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";
                    /* WARNING: Subroutine does not return */
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;
      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),
                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));
    }
    switch(local_40) {
    case (wchar_t *)0x21:
      if (local_44 < local_38) goto code_r0x00016b66;
      local_30 = (int **)(local_4c & 0xff);
      piVar14 = local_48;
      local_34 = ppiVar11;
      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);
      uVar8 = local_38;
      if (((uint)param_6 & 1) != 0) {
        ppiVar6 = param_6;
      }
      goto code_r0x00016b00;
    default:
      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;
      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;
      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),
                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));
    case (wchar_t *)0x2a:
      uVar8 = local_4c & 0xff;
      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;
      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;
      iVar5 = FUN_00016c70();
      if (iVar5 == 0) goto code_r0x00016acb;
    case (wchar_t *)0x2b:
      local_34 = (int **)((uint)param_6 & 1);
      piVar14 = local_48;
      local_3c = ppiVar11;
      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);
      if (local_34 != (int **)0x0) {
        ppiVar6 = param_6;
      }
      goto code_r0x000169fc;
    case (wchar_t *)0x3f:
      uVar15 = local_4c & 0xff;
      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;
      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;
      iVar5 = FUN_00016c70();
      if (iVar5 != 0) goto code_r0x00016b74;
      uVar1 = 0;
      puVar10 = puVar9 + iVar12;
      goto code_r0x000167c5;
    case (wchar_t *)0x40:
code_r0x00016b74:
      local_34 = (int **)(uVar8 & 0xff);
      local_30 = (int **)((uint)param_6 & 0xfffffffb);
      piVar14 = local_48;
      if (((uint)param_6 & 1) != 0) {
        local_30 = param_6;
      }
    }
    goto code_r0x00016b96;
  }
  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {
    ppiVar6 = local_3c;
    if (1 < (int)local_40 - 0x3fU) {
      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);
    }
    local_48 = piVar7;
    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;
    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);
    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);
    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;
    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;
    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;
    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;
    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),
                      *(size_t *)(puVar9 + iVar5 + -8));
    ppiVar4 = local_34;
    ppiVar6 = ppiVar11 + 1;
    *pwVar3 = L'\0';
    *ppiVar13 = (int *)0x0;
    local_34 = ppiVar13;
    *ppiVar4 = (int *)ppiVar13;
    piVar14 = ppiVar11[1];
    iVar12 = 0;
    local_30 = ppiVar6;
    piVar7 = local_48;
    puVar9 = puVar9 + iVar5;
  }
  else {
LAB_0001677d:
    piVar14 = ppiVar11[1];
    ppiVar6 = ppiVar11 + 1;
  }
LAB_00016783:
  if (piVar14 == (int *)0x0) goto LAB_000167c0;
  goto LAB_00016787;
LAB_000167e0:
  iVar12 = iVar12 + 1;
  ppiVar11 = ppiVar11 + 1;
  piVar14 = (int *)0x28;
  goto LAB_0001678c;
  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {
code_r0x00016b96:
    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;
    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;
    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;
    func_0x00012380();
    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;
    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;
    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;
    iVar5 = FUN_00016c70();
    if (iVar5 == 0) {
      uVar1 = 0;
      puVar10 = puVar9 + iVar12;
      goto code_r0x000167c5;
    }
  }
  goto code_r0x00016b66;
code_r0x000169fc:
  do {
    if (local_38 <= local_44) {
      local_30 = (int **)(uint)local_51;
      local_40 = local_50 + -1;
      uVar8 = local_38;
      do {
        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;
        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;
        iVar5 = FUN_00016c70();
        if (iVar5 == 0) {
          if (local_38 == uVar8) {
            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;
            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;
            iVar5 = FUN_00016c70();
            piVar14 = local_24;
          }
          else {
            uVar15 = 0;
            if (*(int *)(uVar8 - 4) == 0x2f) {
              uVar15 = (uint)(((uint)param_6 & 5) == 5);
            }
            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;
            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;
            iVar5 = FUN_00016c70();
            if (iVar5 == 0) goto code_r0x00016acb;
            uVar15 = 0;
            if (*(int *)(uVar8 - 4) == 0x2f) {
              uVar15 = (uint)(((uint)param_6 & 5) == 5);
            }
            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;
            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;
            iVar5 = FUN_00016c70();
            piVar14 = local_24;
          }
          local_24 = piVar14;
          if (iVar5 == 0) goto code_r0x00016acb;
        }
        uVar8 = uVar8 + 4;
      } while (uVar8 <= local_44);
    }
    local_24 = (int *)*piVar14;
    piVar14 = local_24;
  } while (local_24 != (int *)0x0);
  goto code_r0x00016b66;
code_r0x00016acb:
  uVar1 = 0;
  goto code_r0x000167c5;
  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {
code_r0x00016b00:
    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;
    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;
    iVar5 = FUN_00016c70();
    if (iVar5 != 0) {
      piVar14 = (int *)*piVar14;
      if (piVar14 != (int *)0x0) goto code_r0x00016b00;
      ppiVar4 = local_30;
      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {
        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);
      }
      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;
      iVar5 = FUN_00016c70();
      if (iVar5 == 0) goto code_r0x00016acb;
    }
  }
code_r0x00016b66:
  uVar1 = 1;
  puVar10 = puVar9 + iVar12;
code_r0x000167c5:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)(puVar10 + -4) = 0x16c2c;
    FUN_0001a150();
  }
  return uVar1;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
CALL 0x000129a0
ADD EBX,0xb8f3
SUB ESP,0x58
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x4c],EDX
MOV dword ptr [EBP + -0x40],EAX
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x34],ECX
MOV dword ptr [EBP + -0x48],EAX
MOV byte ptr [EBP + -0x4d],AL
MOV EAX,GS:[0x14]
MOV dword ptr [EBP + -0x1c],EAX
XOR EAX,EAX
PUSH EDX
MOV dword ptr [EBP + -0x20],0x0
CALL 0x000122d0
ADD ESP,0x10
MOV dword ptr [EBP + -0x38],EAX
MOV EAX,dword ptr [EDI + 0x4]
TEST EAX,EAX
JZ 0x000167c0
LEA ESI,[EDI + 0x4]
LEA EDX,[EBP + -0x20]
XOR EDI,EDI
MOV dword ptr [EBP + -0x30],EDX
MOV EDX,0xc0000601
MOV dword ptr [EBP + -0x2c],ESI
JMP 0x00016787
CMP EAX,0x7c
JNZ 0x0001677d
TEST EDI,EDI
JZ 0x00016850
MOV EAX,dword ptr [ESI + 0x4]
ADD ESI,0x4
TEST EAX,EAX
JZ 0x000167c0
CMP EAX,0x5b
JZ 0x000167f0
LEA ECX,[EAX + -0x21]
CMP ECX,0x1f
JA 0x00016770
BT EDX,ECX
JNC 0x0001679f
CMP dword ptr [ESI + 0x4],0x28
JZ 0x000167e0
CMP EAX,0x29
JNZ 0x0001677d
LEA ECX,[EDI + -0x1]
TEST EDI,EDI
JZ 0x00016913
MOV EAX,dword ptr [ESI + 0x4]
MOV EDI,ECX
ADD ESI,0x4
TEST EAX,EAX
JNZ 0x00016787
LEA ESI,[ESI]
NOP
MOV EAX,0xffffffff
MOV EBX,dword ptr [EBP + -0x1c]
XOR EBX,dword ptr GS:[0x14]
JNZ 0x00016c27
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD EDI,0x1
ADD ESI,0x4
MOV EAX,0x28
JMP 0x0001678c
MOV EAX,dword ptr [EBX + 0x330]
TEST EAX,EAX
JZ 0x000168e8
MOV EAX,dword ptr [ESI + 0x4]
CMP EAX,0x21
JZ 0x00016840
MOV ECX,dword ptr [EBX + 0x330]
TEST ECX,ECX
JNS 0x00016815
CMP EAX,0x5e
JZ 0x00016840
LEA ECX,[ESI + 0x4]
CMP EAX,0x5d
JNZ 0x00016830
MOV EAX,dword ptr [ECX + 0x4]
ADD ECX,0x4
JMP 0x00016830
TEST EAX,EAX
JZ 0x000167c0
MOV EAX,dword ptr [ESI]
MOV ECX,ESI
LEA ESI,[ECX + 0x4]
CMP EAX,0x5d
JNZ 0x00016828
MOV EAX,dword ptr [ECX + 0x4]
JMP 0x00016783
LEA ECX,[ESI + 0x8]
MOV EAX,dword ptr [ESI + 0x8]
JMP 0x00016818
MOV EAX,dword ptr [EBP + -0x3c]
MOV ECX,dword ptr [EBP + -0x38]
SUB EAX,0x3f
CMP EAX,0x1
JBE 0x00016869
MOV ECX,ESI
SUB ECX,dword ptr [EBP + -0x2c]
SAR ECX,0x2
ADD ECX,0x1
LEA EAX,[ECX*0x4 + 0x4]
MOV dword ptr [EBP + -0x44],EDX
LEA EDI,[EAX + -0x4]
CMP EDI,0x1f3b
JA 0x000167c0
CMP ECX,0x3fffffff
JA 0x000167c0
ADD EAX,0x1b
MOV EDX,dword ptr [EBP + -0x2c]
AND EAX,0xfffffff0
SUB ESP,EAX
MOV EAX,ESI
SUB EAX,EDX
LEA EDI,[ESP + 0xf]
SUB ESP,0x4
AND EDI,0xfffffff0
SAR EAX,0x2
PUSH EAX
LEA EAX,[EDI + 0x4]
PUSH EDX
PUSH EAX
CALL 0x000122e0
LEA EDX,[ESI + 0x4]
ADD ESP,0x10
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [EBP + -0x30]
MOV dword ptr [EDI],0x0
MOV dword ptr [EBP + -0x30],EDI
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [ESI + 0x4]
XOR EDI,EDI
MOV ESI,EDX
MOV dword ptr [EBP + -0x2c],EDX
MOV EDX,dword ptr [EBP + -0x44]
JMP 0x00016783
SUB ESP,0xc
LEA EAX,[EBX + 0xffffb2a0]
MOV dword ptr [EBP + -0x44],EDX
PUSH EAX
CALL 0x000121f0
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x44]
CMP EAX,0x1
SBB EAX,EAX
OR EAX,0x1
MOV dword ptr [EBX + 0x330],EAX
JMP 0x000167fe
MOV EAX,dword ptr [EBP + -0x3c]
SUB EAX,0x3f
CMP EAX,0x1
JBE 0x0001692c
MOV EAX,ESI
SUB EAX,dword ptr [EBP + -0x2c]
SAR EAX,0x2
ADD EAX,0x1
MOV dword ptr [EBP + -0x38],EAX
MOV EDI,dword ptr [EBP + -0x38]
LEA EAX,[EDI*0x4 + 0x4]
LEA EDX,[EAX + -0x4]
CMP EDX,0x1f3b
JA 0x000167c0
CMP EDI,0x3fffffff
JA 0x000167c0
ADD EAX,0x1b
MOV EDX,dword ptr [EBP + -0x2c]
AND EAX,0xfffffff0
SUB ESP,EAX
MOV EAX,ESI
LEA EDI,[ESP + 0xf]
SUB EAX,EDX
SUB ESP,0x4
AND EDI,0xfffffff0
SAR EAX,0x2
PUSH EAX
LEA EAX,[EDI + 0x4]
PUSH EDX
PUSH EAX
CALL 0x000122e0
ADD ESP,0x10
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [EBP + -0x30]
MOV dword ptr [EDI],0x0
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [EBP + -0x20]
MOV dword ptr [EBP + -0x44],EAX
TEST EAX,EAX
JZ 0x00016c08
CMP dword ptr [ESI + -0x4],0x29
JNZ 0x00016c4b
MOV EAX,dword ptr [EBP + -0x3c]
SUB EAX,0x21
CMP EAX,0x1f
JA 0x00016c2c
MOV EDX,dword ptr [EBX + EAX*0x4 + 0xffffb328]
ADD EDX,EBX
JMP EDX
LEA EAX,[EBX + 0xffffb614]
PUSH EAX
LEA EAX,[EBX + 0xffffb2b0]
PUSH 0x454
PUSH EAX
LEA EAX,[EBX + 0xffffb2c3]
PUSH EAX
CALL 0x00012410
CALL 0x0001a150
LEA EAX,[EBX + 0xffffb614]
PUSH EAX
LEA EAX,[EBX + 0xffffb2b0]
PUSH 0x4ad
PUSH EAX
LEA EAX,[EBX + 0xffffb300]
PUSH EAX
CALL 0x00012410
LEA EAX,[EBX + 0xffffb614]
PUSH EAX
LEA EAX,[EBX + 0xffffb2b0]
PUSH 0x455
PUSH EAX
LEA EAX,[EBX + 0xffffb2d0]
PUSH EAX
CALL 0x00012410
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3\nFUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)\n\n{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}\n\n" comment (function_definition "undefined4 __regparm3\nFUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)\n\n{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)" identifier (parameter_list "(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "wchar_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int **param_6" primitive_type (pointer_declarator "**param_6" * (pointer_declarator "*param_6" * identifier))) ))) (compound_statement "{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "wchar_t *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "int **ppiVar4;" primitive_type (pointer_declarator "**ppiVar4" * (pointer_declarator "*ppiVar4" * identifier)) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int **ppiVar6;" primitive_type (pointer_declarator "**ppiVar6" * (pointer_declarator "*ppiVar6" * identifier)) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int **ppiVar11;" primitive_type (pointer_declarator "**ppiVar11" * (pointer_declarator "*ppiVar11" * identifier)) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int **ppiVar13;" primitive_type (pointer_declarator "**ppiVar13" * (pointer_declarator "*ppiVar13" * identifier)) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 auStack_5c [11];" type_identifier (array_declarator "auStack_5c [11]" identifier [ number_literal ]) ;) (declaration "byte local_51;" type_identifier identifier ;) (declaration "wchar_t *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "wchar_t *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "int **local_3c;" primitive_type (pointer_declarator "**local_3c" * (pointer_declarator "*local_3c" * identifier)) ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "int **local_34;" primitive_type (pointer_declarator "**local_34" * (pointer_declarator "*local_34" * identifier)) ;) (declaration "int **local_30;" primitive_type (pointer_declarator "**local_30" * (pointer_declarator "*local_30" * identifier)) ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1670d;" (assignment_expression "uStack_14 = 0x1670d" identifier = number_literal) ;) (expression_statement "local_44 = param_4;" (assignment_expression "local_44 = param_4" identifier = identifier) ;) (expression_statement "local_4c = param_5;" (assignment_expression "local_4c = param_5" identifier = identifier) ;) (expression_statement "local_51 = (byte)param_5;" (assignment_expression "local_51 = (byte)param_5" identifier = (cast_expression "(byte)param_5" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (expression_statement "local_38 = param_3;" (assignment_expression "local_38 = param_3" identifier = identifier) ;) (expression_statement "local_3c = (int **)wcslen(param_2);" (assignment_expression "local_3c = (int **)wcslen(param_2)" identifier = (cast_expression "(int **)wcslen(param_2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "wcslen(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "puVar9 = auStack_5c;" (assignment_expression "puVar9 = auStack_5c" identifier = identifier) ;) (expression_statement "piVar14 = (int *)param_2[1];" (assignment_expression "piVar14 = (int *)param_2[1]" identifier = (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }" { (expression_statement "ppiVar6 = (int **)(param_2 + 1);" (assignment_expression "ppiVar6 = (int **)(param_2 + 1)" identifier = (cast_expression "(int **)(param_2 + 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )))) ;) (expression_statement "local_34 = &local_24;" (assignment_expression "local_34 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "piVar7 = (int *)0xc0000601;" (assignment_expression "piVar7 = (int *)0xc0000601" identifier = (cast_expression "(int *)0xc0000601" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = ppiVar6;" (assignment_expression "local_30 = ppiVar6" identifier = identifier) ;) (expression_statement "puVar9 = auStack_5c;" (assignment_expression "puVar9 = auStack_5c" identifier = identifier) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00016787:\n    ppiVar4 = local_30;" statement_identifier : (expression_statement "ppiVar4 = local_30;" (assignment_expression "ppiVar4 = local_30" identifier = identifier) ;)) (expression_statement "ppiVar11 = ppiVar6;" (assignment_expression "ppiVar11 = ppiVar6" identifier = identifier) ;) (if_statement "if (piVar14 != (int *)0x5b) goto LAB_0001678c;" if (parenthesized_expression "(piVar14 != (int *)0x5b)" ( (binary_expression "piVar14 != (int *)0x5b" identifier != (cast_expression "(int *)0x5b" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001678c;" goto statement_identifier ;)) (if_statement "if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }" if (parenthesized_expression "(DAT_00022330 == 0)" ( (binary_expression "DAT_00022330 == 0" identifier == number_literal) )) (compound_statement "{\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }" { (expression_statement "local_48 = piVar7;" (assignment_expression "local_48 = piVar7" identifier = identifier) ;) (expression_statement "*(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";" (assignment_expression "*(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT"" (pointer_expression "*(char **)(puVar9 + -0x10)" * (cast_expression "(char **)(puVar9 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x10)" ( (binary_expression "puVar9 + -0x10" identifier + number_literal) )))) = (string_literal ""POSIXLY_CORRECT"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + -0x14) = 0x168fa;" (assignment_expression "*(undefined4 *)(puVar9 + -0x14) = 0x168fa" (pointer_expression "*(undefined4 *)(puVar9 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -0x14)" ( (binary_expression "puVar9 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar2 = getenv(*(char **)(puVar9 + -0x10));" (assignment_expression "pcVar2 = getenv(*(char **)(puVar9 + -0x10))" identifier = (call_expression "getenv(*(char **)(puVar9 + -0x10))" identifier (argument_list "(*(char **)(puVar9 + -0x10))" ( (pointer_expression "*(char **)(puVar9 + -0x10)" * (cast_expression "(char **)(puVar9 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x10)" ( (binary_expression "puVar9 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;" (assignment_expression "DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1" identifier = (binary_expression "-(uint)(pcVar2 == (char *)0x0) | 1" (unary_expression "-(uint)(pcVar2 == (char *)0x0)" - (call_expression "(uint)(pcVar2 == (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) | number_literal)) ;) (expression_statement "piVar7 = local_48;" (assignment_expression "piVar7 = local_48" identifier = identifier) ;) })) (expression_statement "piVar14 = ppiVar6[1];" (assignment_expression "piVar14 = ppiVar6[1]" identifier = (subscript_expression "ppiVar6[1]" identifier [ number_literal ])) ;) (if_statement "if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }" if (parenthesized_expression "((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e))))" ( (binary_expression "(piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))" (parenthesized_expression "(piVar14 == (int *)0x21)" ( (binary_expression "piVar14 == (int *)0x21" identifier == (cast_expression "(int *)0x21" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))" ( (parenthesized_expression "((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e))" ( (binary_expression "(int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)" (binary_expression "(int)DAT_00022330 < 0" (cast_expression "(int)DAT_00022330" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) && (parenthesized_expression "(piVar14 == (int *)0x5e)" ( (binary_expression "piVar14 == (int *)0x5e" identifier == (cast_expression "(int *)0x5e" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }" { (expression_statement "ppiVar4 = ppiVar6 + 2;" (assignment_expression "ppiVar4 = ppiVar6 + 2" identifier = (binary_expression "ppiVar6 + 2" identifier + number_literal)) ;) (expression_statement "piVar14 = ppiVar6[2];" (assignment_expression "piVar14 = ppiVar6[2]" identifier = (subscript_expression "ppiVar6[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      ppiVar4 = ppiVar6 + 1;\n    }" else (compound_statement "{\n      ppiVar4 = ppiVar6 + 1;\n    }" { (expression_statement "ppiVar4 = ppiVar6 + 1;" (assignment_expression "ppiVar4 = ppiVar6 + 1" identifier = (binary_expression "ppiVar6 + 1" identifier + number_literal)) ;) }))) (if_statement "if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }" if (parenthesized_expression "(piVar14 == (int *)0x5d)" ( (binary_expression "piVar14 == (int *)0x5d" identifier == (cast_expression "(int *)0x5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }" { (expression_statement "piVar14 = ppiVar4[1];" (assignment_expression "piVar14 = ppiVar4[1]" identifier = (subscript_expression "ppiVar4[1]" identifier [ number_literal ])) ;) (expression_statement "ppiVar4 = ppiVar4 + 1;" (assignment_expression "ppiVar4 = ppiVar4 + 1" identifier = (binary_expression "ppiVar4 + 1" identifier + number_literal)) ;) })) (while_statement "while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }" while (parenthesized_expression "(ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d)" ( (comma_expression "ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d" (assignment_expression "ppiVar6 = ppiVar4 + 1" identifier = (binary_expression "ppiVar4 + 1" identifier + number_literal)) , (binary_expression "piVar14 != (int *)0x5d" identifier != (cast_expression "(int *)0x5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }" { (if_statement "if (piVar14 == (int *)0x0) goto LAB_000167c0;" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "ppiVar4 = ppiVar6;" (assignment_expression "ppiVar4 = ppiVar6" identifier = identifier) ;) (expression_statement "piVar14 = *ppiVar6;" (assignment_expression "piVar14 = *ppiVar6" identifier = (pointer_expression "*ppiVar6" * identifier)) ;) })) (expression_statement "piVar14 = ppiVar4[1];" (assignment_expression "piVar14 = ppiVar4[1]" identifier = (subscript_expression "ppiVar4[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00016783;" goto statement_identifier ;) })) (labeled_statement "LAB_000167c0:\n  uVar1 = 0xffffffff;" statement_identifier : (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;) (labeled_statement "LAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" statement_identifier : (if_statement "if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" if (parenthesized_expression "((uint)((int)piVar14 + L'\xffffffdf') < 0x20)" ( (binary_expression "(uint)((int)piVar14 + L'\xffffffdf') < 0x20" (call_expression "(uint)((int)piVar14 + L'\xffffffdf')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar14 + L'\xffffffdf')" ( (binary_expression "(int)piVar14 + L'\xffffffdf'" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (char_literal "L'\xffffffdf'" L' escape_sequence character character character character ')) ))) < number_literal) )) (compound_statement "{\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" { (if_statement "if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;" if (parenthesized_expression "((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28))" ( (binary_expression "(((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)" (parenthesized_expression "(((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0)" ( (binary_expression "((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0" (parenthesized_expression "((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1)" ( (binary_expression "(uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1" (binary_expression "(uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU)" (cast_expression "(uint)piVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "((int)piVar14 + L'\xffffffdf' & 0x1fU)" ( (binary_expression "(int)piVar14 + L'\xffffffdf' & 0x1fU" (binary_expression "(int)piVar14 + L'\xffffffdf'" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (char_literal "L'\xffffffdf'" L' escape_sequence character character character character ')) & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(ppiVar11[1] == (int *)0x28)" ( (binary_expression "ppiVar11[1] == (int *)0x28" (subscript_expression "ppiVar11[1]" identifier [ number_literal ]) == (cast_expression "(int *)0x28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_000167e0;" goto statement_identifier ;)) (if_statement "if (piVar14 != (int *)0x29) goto LAB_0001677d;" if (parenthesized_expression "(piVar14 != (int *)0x29)" ( (binary_expression "piVar14 != (int *)0x29" identifier != (cast_expression "(int *)0x29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001677d;" goto statement_identifier ;)) (if_statement "if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" { (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" identifier = (subscript_expression "ppiVar11[1]" identifier [ number_literal ])) ;) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (piVar14 != (int *)0x0) goto LAB_00016787;" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016787;" goto statement_identifier ;)) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;) })) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" if (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" ( (binary_expression "1 < (int)local_40 - 0x3fU" number_literal < (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) )) (compound_statement "{\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" { (expression_statement "local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);" (assignment_expression "local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" identifier = (cast_expression "(int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (binary_expression "((int)ppiVar11 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)ppiVar11 - (int)local_30 >> 2)" ( (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal) )))) ;) })) (if_statement "if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;" if (parenthesized_expression "((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c))" ( (binary_expression "(0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)" (parenthesized_expression "(0x1f3b < (uint)((int)local_3c * 4))" ( (binary_expression "0x1f3b < (uint)((int)local_3c * 4)" number_literal < (call_expression "(uint)((int)local_3c * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_3c * 4)" ( (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) )) || (parenthesized_expression "((int **)0x3fffffff < local_3c)" ( (binary_expression "(int **)0x3fffffff < local_3c" (cast_expression "(int **)0x3fffffff" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) < identifier) ))) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0)" identifier = (unary_expression "-((int)local_3c * 4 + 0x1fU & 0xfffffff0)" - (parenthesized_expression "((int)local_3c * 4 + 0x1fU & 0xfffffff0)" ( (binary_expression "(int)local_3c * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)local_3c * 4 + 0x1fU" (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (expression_statement "piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);" (assignment_expression "piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" identifier = (cast_expression "(int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" ( (binary_expression "(uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar9 + iVar12 + 0xf)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9 + iVar12 + 0xf)" ( (binary_expression "puVar9 + iVar12 + 0xf" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "*(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar9 + iVar12 + -8)" * (cast_expression "(int *)(puVar9 + iVar12 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;" (assignment_expression "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1" (pointer_expression "*(int **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" identifier = (call_expression "wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" identifier (argument_list "(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" ( (pointer_expression "*(wchar_t **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(wchar_t **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(wchar_t **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(size_t *)(puVar9 + iVar12 + -8)" * (cast_expression "(size_t *)(puVar9 + iVar12 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "uVar8 = local_4c;" (assignment_expression "uVar8 = local_4c" identifier = identifier) ;) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*piVar14 = 0;" (assignment_expression "*piVar14 = 0" (pointer_expression "*piVar14" * identifier) = number_literal) ;) (expression_statement "*local_34 = piVar14;" (assignment_expression "*local_34 = piVar14" (pointer_expression "*local_34" * identifier) = identifier) ;) (expression_statement "local_48 = local_24;" (assignment_expression "local_48 = local_24" identifier = identifier) ;) (if_statement "if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" if (parenthesized_expression "(local_24 == (int *)0x0)" ( (binary_expression "local_24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" { (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x454" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "list != NULL"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""list != NULL"" " string_content ")) ;) comment (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" identifier (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" ( (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" * (cast_expression "(uint *)(puVar9 + iVar12 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) ))) ;) })) (if_statement "if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" if (parenthesized_expression "(ppiVar11[-1] != (int *)0x29)" ( (binary_expression "ppiVar11[-1] != (int *)0x29" (subscript_expression "ppiVar11[-1]" identifier [ number_literal ]) != (cast_expression "(int *)0x29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" { (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x455" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""p[-1] == L_(\')\')"" " string_content escape_sequence string_content escape_sequence string_content ")) ;) comment (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016c6a" & identifier)) ;) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" identifier (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" ( (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" * (cast_expression "(uint *)(puVar9 + iVar12 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) ))) ;) })) (switch_statement "switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }" switch (parenthesized_expression "(local_40)" ( identifier )) (compound_statement "{\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }" { (case_statement "case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;" case (cast_expression "(wchar_t *)0x21" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (if_statement "if (local_44 < local_38) goto code_r0x00016b66;" if (parenthesized_expression "(local_44 < local_38)" ( (binary_expression "local_44 < local_38" identifier < identifier) )) (goto_statement "goto code_r0x00016b66;" goto statement_identifier ;)) (expression_statement "local_30 = (int **)(local_4c & 0xff);" (assignment_expression "local_30 = (int **)(local_4c & 0xff)" identifier = (cast_expression "(int **)(local_4c & 0xff)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_4c & 0xff)" ( (binary_expression "local_4c & 0xff" identifier & number_literal) )))) ;) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" identifier = identifier) ;) (expression_statement "local_34 = ppiVar11;" (assignment_expression "local_34 = ppiVar11" identifier = identifier) ;) (expression_statement "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb)" identifier = (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 0xfffffffb)" ( (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = local_38;" (assignment_expression "uVar8 = local_38" identifier = identifier) ;) (if_statement "if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }" if (parenthesized_expression "(((uint)param_6 & 1) != 0)" ( (binary_expression "((uint)param_6 & 1) != 0" (parenthesized_expression "((uint)param_6 & 1)" ( (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        ppiVar6 = param_6;\n      }" { (expression_statement "ppiVar6 = param_6;" (assignment_expression "ppiVar6 = param_6" identifier = identifier) ;) })) (goto_statement "goto code_r0x00016b00;" goto statement_identifier ;)) (case_statement "default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" default : (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\""" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""! \"Invalid extended matching operator\""" " string_content escape_sequence string_content escape_sequence ")) ;) comment (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" identifier (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" ( (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" * (cast_expression "(uint *)(puVar9 + iVar12 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) ))) ;)) (case_statement "case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;" case (cast_expression "(wchar_t *)0x2a" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "uVar8 = local_4c & 0xff;" (assignment_expression "uVar8 = local_4c & 0xff" identifier = (binary_expression "local_4c & 0xff" identifier & number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = param_6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = param_6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar8;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar8" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_000169d6" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;))) (case_statement "case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;" case (cast_expression "(wchar_t *)0x2b" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "local_34 = (int **)((uint)param_6 & 1);" (assignment_expression "local_34 = (int **)((uint)param_6 & 1)" identifier = (cast_expression "(int **)((uint)param_6 & 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 1)" ( (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" identifier = identifier) ;) (expression_statement "local_3c = ppiVar11;" (assignment_expression "local_3c = ppiVar11" identifier = identifier) ;) (expression_statement "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb)" identifier = (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 0xfffffffb)" ( (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }" if (parenthesized_expression "(local_34 != (int **)0x0)" ( (binary_expression "local_34 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        ppiVar6 = param_6;\n      }" { (expression_statement "ppiVar6 = param_6;" (assignment_expression "ppiVar6 = param_6" identifier = identifier) ;) })) (goto_statement "goto code_r0x000169fc;" goto statement_identifier ;)) (case_statement "case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;" case (cast_expression "(wchar_t *)0x3f" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "uVar15 = local_4c & 0xff;" (assignment_expression "uVar15 = local_4c & 0xff" identifier = (binary_expression "local_4c & 0xff" identifier & number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = param_6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = param_6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016bdc" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) goto code_r0x00016b74;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00016b74;" goto statement_identifier ;)) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;)) (case_statement "case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }" case (cast_expression "(wchar_t *)0x40" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (labeled_statement "code_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);" statement_identifier : (expression_statement "local_34 = (int **)(uVar8 & 0xff);" (assignment_expression "local_34 = (int **)(uVar8 & 0xff)" identifier = (cast_expression "(int **)(uVar8 & 0xff)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )))) ;)) (expression_statement "local_30 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "local_30 = (int **)((uint)param_6 & 0xfffffffb)" identifier = (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 0xfffffffb)" ( (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" identifier = identifier) ;) (if_statement "if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }" if (parenthesized_expression "(((uint)param_6 & 1) != 0)" ( (binary_expression "((uint)param_6 & 1) != 0" (parenthesized_expression "((uint)param_6 & 1)" ( (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        local_30 = param_6;\n      }" { (expression_statement "local_30 = param_6;" (assignment_expression "local_30 = param_6" identifier = identifier) ;) }))) })) (goto_statement "goto code_r0x00016b96;" goto statement_identifier ;) }))) (if_statement "if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" if (parenthesized_expression "((piVar14 == (int *)0x7c) && (iVar12 == 0))" ( (binary_expression "(piVar14 == (int *)0x7c) && (iVar12 == 0)" (parenthesized_expression "(piVar14 == (int *)0x7c)" ( (binary_expression "piVar14 == (int *)0x7c" identifier == (cast_expression "(int *)0x7c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }" { (expression_statement "ppiVar6 = local_3c;" (assignment_expression "ppiVar6 = local_3c" identifier = identifier) ;) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" if (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" ( (binary_expression "1 < (int)local_40 - 0x3fU" number_literal < (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) )) (compound_statement "{\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" { (expression_statement "ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);" (assignment_expression "ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" identifier = (cast_expression "(int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (binary_expression "((int)ppiVar11 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)ppiVar11 - (int)local_30 >> 2)" ( (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal) )))) ;) })) (expression_statement "local_48 = piVar7;" (assignment_expression "local_48 = piVar7" identifier = identifier) ;) (if_statement "if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;" if (parenthesized_expression "((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6))" ( (binary_expression "(0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)" (parenthesized_expression "(0x1f3b < (uint)((int)ppiVar6 * 4))" ( (binary_expression "0x1f3b < (uint)((int)ppiVar6 * 4)" number_literal < (call_expression "(uint)((int)ppiVar6 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppiVar6 * 4)" ( (binary_expression "(int)ppiVar6 * 4" (cast_expression "(int)ppiVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) )) || (parenthesized_expression "((int **)0x3fffffff < ppiVar6)" ( (binary_expression "(int **)0x3fffffff < ppiVar6" (cast_expression "(int **)0x3fffffff" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) < identifier) ))) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" identifier = (unary_expression "-((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" - (parenthesized_expression "((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" ( (binary_expression "(int)ppiVar6 * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)ppiVar6 * 4 + 0x1fU" (binary_expression "(int)ppiVar6 * 4" (cast_expression "(int)ppiVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);" (assignment_expression "ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" identifier = (cast_expression "(int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" ( (binary_expression "(uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar9 + iVar5 + 0xf)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9 + iVar5 + 0xf)" ( (binary_expression "puVar9 + iVar5 + 0xf" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "*(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar9 + iVar5 + -8)" * (cast_expression "(int *)(puVar9 + iVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar5 + -8)" ( (binary_expression "puVar9 + iVar5 + -8" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar5 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar5 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar5 + -0xc)" ( (binary_expression "puVar9 + iVar5 + -0xc" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;" (assignment_expression "*(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1" (pointer_expression "*(int ***)(puVar9 + iVar5 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar5 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar5 + -0x10)" ( (binary_expression "puVar9 + iVar5 + -0x10" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = (binary_expression "ppiVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;" (assignment_expression "*(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5" (pointer_expression "*(undefined4 *)(puVar9 + iVar5 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar5 + -0x14)" ( (binary_expression "puVar9 + iVar5 + -0x14" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" identifier = (call_expression "wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" identifier (argument_list "(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" ( (pointer_expression "*(wchar_t **)(puVar9 + iVar5 + -0x10)" * (cast_expression "(wchar_t **)(puVar9 + iVar5 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar5 + -0x10)" ( (binary_expression "puVar9 + iVar5 + -0x10" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar9 + iVar5 + -0xc)" * (cast_expression "(wchar_t **)(puVar9 + iVar5 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar5 + -0xc)" ( (binary_expression "puVar9 + iVar5 + -0xc" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) , (pointer_expression "*(size_t *)(puVar9 + iVar5 + -8)" * (cast_expression "(size_t *)(puVar9 + iVar5 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar5 + -8)" ( (binary_expression "puVar9 + iVar5 + -8" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "ppiVar4 = local_34;" (assignment_expression "ppiVar4 = local_34" identifier = identifier) ;) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*ppiVar13 = (int *)0x0;" (assignment_expression "*ppiVar13 = (int *)0x0" (pointer_expression "*ppiVar13" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = ppiVar13;" (assignment_expression "local_34 = ppiVar13" identifier = identifier) ;) (expression_statement "*ppiVar4 = (int *)ppiVar13;" (assignment_expression "*ppiVar4 = (int *)ppiVar13" (pointer_expression "*ppiVar4" * identifier) = (cast_expression "(int *)ppiVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" identifier = (subscript_expression "ppiVar11[1]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "local_30 = ppiVar6;" (assignment_expression "local_30 = ppiVar6" identifier = identifier) ;) (expression_statement "piVar7 = local_48;" (assignment_expression "piVar7 = local_48" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + iVar5;" (assignment_expression "puVar9 = puVar9 + iVar5" identifier = (binary_expression "puVar9 + iVar5" identifier + identifier)) ;) }) (else_clause "else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" else (compound_statement "{\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" { (labeled_statement "LAB_0001677d:\n    piVar14 = ppiVar11[1];" statement_identifier : (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" identifier = (subscript_expression "ppiVar11[1]" identifier [ number_literal ])) ;)) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;" statement_identifier : (if_statement "if (piVar14 == (int *)0x0) goto LAB_000167c0;" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;))) (goto_statement "goto LAB_00016787;" goto statement_identifier ;) (labeled_statement "LAB_000167e0:\n  iVar12 = iVar12 + 1;" statement_identifier : (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;)) (expression_statement "ppiVar11 = ppiVar11 + 1;" (assignment_expression "ppiVar11 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = (int *)0x28;" (assignment_expression "piVar14 = (int *)0x28" identifier = (cast_expression "(int *)0x28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0001678c;" goto statement_identifier ;) (while_statement "while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }" while (parenthesized_expression "(local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0)" ( (comma_expression "local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0" (assignment_expression "local_24 = (int *)*piVar14" identifier = (cast_expression "(int *)*piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) , (comma_expression "piVar14 = local_24, local_24 != (int *)0x0" (assignment_expression "piVar14 = local_24" identifier = identifier) , (binary_expression "local_24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) )) (compound_statement "{\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }" { (labeled_statement "code_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;" statement_identifier : (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;" (assignment_expression "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1" (pointer_expression "*(int **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016ba3" & identifier)) ;) (expression_statement "func_0x00012380();" (call_expression "func_0x00012380()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_34;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_34" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016bb6" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;) })) })) (goto_statement "goto code_r0x00016b66;" goto statement_identifier ;) (labeled_statement "code_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);" statement_identifier : (do_statement "do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);" do (compound_statement "{\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  }" { (if_statement "if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }" if (parenthesized_expression "(local_38 <= local_44)" ( (binary_expression "local_38 <= local_44" identifier <= identifier) )) (compound_statement "{\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }" { (expression_statement "local_30 = (int **)(uint)local_51;" (assignment_expression "local_30 = (int **)(uint)local_51" identifier = (cast_expression "(int **)(uint)local_51" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (cast_expression "(uint)local_51" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_40 = local_50 + -1;" (assignment_expression "local_40 = local_50 + -1" identifier = (binary_expression "local_50 + -1" identifier + number_literal)) ;) (expression_statement "uVar8 = local_38;" (assignment_expression "uVar8 = local_38" identifier = identifier) ;) (do_statement "do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);" do (compound_statement "{\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      }" { (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016a9f" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }" { (if_statement "if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" if (parenthesized_expression "(local_38 == uVar8)" ( (binary_expression "local_38 == uVar8" identifier == identifier) )) (compound_statement "{\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" { (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016ac4" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" identifier = identifier) ;) }) (else_clause "else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" else (compound_statement "{\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" if (parenthesized_expression "(*(int *)(uVar8 - 4) == 0x2f)" ( (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" * (cast_expression "(int *)(uVar8 - 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 - 4)" ( (binary_expression "uVar8 - 4" identifier - number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" { (expression_statement "uVar15 = (uint)(((uint)param_6 & 5) == 5);" (assignment_expression "uVar15 = (uint)(((uint)param_6 & 5) == 5)" identifier = (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((uint)param_6 & 5) == 5)" ( (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" ( (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )))) ;) })) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016a45" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;)) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" if (parenthesized_expression "(*(int *)(uVar8 - 4) == 0x2f)" ( (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" * (cast_expression "(int *)(uVar8 - 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 - 4)" ( (binary_expression "uVar8 - 4" identifier - number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" { (expression_statement "uVar15 = (uint)(((uint)param_6 & 5) == 5);" (assignment_expression "uVar15 = (uint)(((uint)param_6 & 5) == 5)" identifier = (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((uint)param_6 & 5) == 5)" ( (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" ( (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )))) ;) })) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016a75" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" identifier = identifier) ;) }))) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" identifier = identifier) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;)) })) (expression_statement "uVar8 = uVar8 + 4;" (assignment_expression "uVar8 = uVar8 + 4" identifier = (binary_expression "uVar8 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 <= local_44)" ( (binary_expression "uVar8 <= local_44" identifier <= identifier) )) ;) })) (expression_statement "local_24 = (int *)*piVar14;" (assignment_expression "local_24 = (int *)*piVar14" identifier = (cast_expression "(int *)*piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ;) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" identifier = identifier) ;) }) while (parenthesized_expression "(local_24 != (int *)0x0)" ( (binary_expression "local_24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (goto_statement "goto code_r0x00016b66;" goto statement_identifier ;) (labeled_statement "code_r0x00016acb:\n  uVar1 = 0;" statement_identifier : (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;)) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;) (while_statement "while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }" while (parenthesized_expression "(uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44)" ( (comma_expression "uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44" (assignment_expression "uVar8 = uVar8 + 4" identifier = (binary_expression "uVar8 + 4" identifier + number_literal)) , (comma_expression "piVar14 = local_48, uVar8 <= local_44" (assignment_expression "piVar14 = local_48" identifier = identifier) , (binary_expression "uVar8 <= local_44" identifier <= identifier))) )) (compound_statement "{\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }" { (labeled_statement "code_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" statement_identifier : (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016b14" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }" { (expression_statement "piVar14 = (int *)*piVar14;" (assignment_expression "piVar14 = (int *)*piVar14" identifier = (cast_expression "(int *)*piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ;) (if_statement "if (piVar14 != (int *)0x0) goto code_r0x00016b00;" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00016b00;" goto statement_identifier ;)) (expression_statement "ppiVar4 = local_30;" (assignment_expression "ppiVar4 = local_30" identifier = identifier) ;) (if_statement "if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }" if (parenthesized_expression "((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f))" ( (binary_expression "(local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)" (parenthesized_expression "(local_38 != uVar8)" ( (binary_expression "local_38 != uVar8" identifier != identifier) )) && (parenthesized_expression "(ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)" ( (comma_expression "ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f" (assignment_expression "ppiVar4 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) , (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" * (cast_expression "(int *)(uVar8 - 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 - 4)" ( (binary_expression "uVar8 - 4" identifier - number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }" { (expression_statement "ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);" (assignment_expression "ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5)" identifier = (cast_expression "(int **)(uint)(((uint)param_6 & 5) == 5)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((uint)param_6 & 5) == 5)" ( (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" ( (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) ))))) ;) })) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016b53" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;)) })) })) (labeled_statement "code_r0x00016b66:\n  uVar1 = 1;" statement_identifier : (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;)) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (labeled_statement "code_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" { comment (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x16c2c;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x16c2c" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001a150();" (call_expression "FUN_0001a150()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3\next_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n          int flags)\n\n{\n  patternlist **pppVar1;\n  int iVar2;\n  wchar_t *pwVar3;\n  char *pcVar4;\n  wchar_t *pwVar5;\n  uint uVar6;\n  wchar_t *pwVar7;\n  patternlist *ppVar8;\n  patternlist *ppVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  patternlist *ppVar12;\n  patternlist *pattern_00;\n  int iVar13;\n  patternlist *ppVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined3 in_stack_00000009;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  patternlist *local_48;\n  wchar_t *local_44;\n  wchar_t *local_40;\n  patternlist *local_3c;\n  wchar_t *local_38;\n  patternlist *local_34;\n  patternlist *local_30;\n  patternlist *list;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = string_end;\n  local_4c = _no_leading_period;\n  local_51 = no_leading_period;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  list = (patternlist *)0x0;\n  local_50 = pattern;\n  local_40 = (wchar_t *)opt;\n  local_38 = string;\n  local_3c = (patternlist *)wcslen(pattern);\n  puVar10 = auStack_5c;\n  ppVar14 = (patternlist *)pattern[1];\n  if (ppVar14 != (patternlist *)0x0) {\n    ppVar12 = (patternlist *)(pattern + 1);\n    local_34 = (patternlist *)&list;\n    ppVar9 = (patternlist *)0xc0000601;\n    local_30 = ppVar12;\n    puVar10 = auStack_5c;\n    iVar13 = 0;\nLAB_00016787:\n    ppVar8 = local_30;\n    pattern_00 = ppVar12;\n    if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;\n    if (posixly_correct == 0) {\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }\n    ppVar14 = ppVar12[1].next;\n    if ((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }\n    else {\n      ppVar8 = ppVar12 + 1;\n    }\n    if (ppVar14 == (patternlist *)0x5d) {\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }\n    while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }\n    ppVar14 = ppVar8[1].next;\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  iVar2 = -1;\n  puVar11 = puVar10;\n  goto LAB_000167c5;\nLAB_0001678c:\n  puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3);\n  if (puVar11 < (undefined1 *)0x20) {\n    if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;\n    if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;\n    if (iVar13 != 0) {\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))\n    goto LAB_000167c0;\n    iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar11 = puVar10 + iVar13;\n    ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;\n    pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8));\n    pwVar3 = local_44;\n    uVar6 = local_4c;\n    *pwVar5 = L'\0';\n    ppVar14->next = (patternlist *)0x0;\n    local_34->next = ppVar14;\n    local_48 = list;\n    if (list == (patternlist *)0x0) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    if (pattern_00[-1].next != (patternlist *)0x29) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }\n    goto LAB_00016b96;\n  }\n  if ((ppVar14 == (patternlist *)0x7c) && (iVar13 == 0)) {\n    ppVar14 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = ppVar9;\n    if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))\n    goto LAB_000167c0;\n    iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);\n    ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;\n    *(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8));\n    ppVar14 = local_34;\n    ppVar12 = pattern_00 + 1;\n    *pwVar3 = L'\0';\n    ppVar9->next = (patternlist *)0x0;\n    local_34 = ppVar9;\n    ppVar14->next = ppVar9;\n    ppVar14 = pattern_00[1].next;\n    iVar13 = 0;\n    local_30 = ppVar12;\n    ppVar9 = local_48;\n    puVar10 = puVar10 + iVar2;\n  }\n  else {\nLAB_0001677d:\n    ppVar14 = pattern_00[1].next;\n    ppVar12 = pattern_00 + 1;\n  }\nLAB_00016783:\n  if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar13 = iVar13 + 1;\n  pattern_00 = pattern_00 + 1;\n  ppVar14 = (patternlist *)0x28;\n  goto LAB_0001678c;\n  while( true ) {\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n    if (ppVar14 == (patternlist *)0x0) break;\nLAB_00016b96:\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;\n    pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;\n    pwVar3 = local_44;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;\n    pwVar5 = local_38;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;\n    iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    if (iVar2 == 0) {\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }\n  }\n  goto LAB_00016b66;\nLAB_000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n  } while (ppVar14 != (patternlist *)0x0);\n  goto LAB_00016b66;\nLAB_00016acb:\n  iVar2 = 0;\n  goto LAB_000167c5;\n  while (pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44) {\nLAB_00016b00:\n    pwVar5 = local_38;\n    *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;\n    iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    pwVar5 = local_44;\n    if (iVar2 != 0) {\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }\n  }\nLAB_00016b66:\n  iVar2 = 1;\n  puVar11 = puVar10 + iVar13;\nLAB_000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar11 + -4) = 0x16c2c;\n    __stack_chk_fail_local();\n  }\n  return iVar2;\n}\n\n" comment (function_definition "int __regparm3\next_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n          int flags)\n\n{\n  patternlist **pppVar1;\n  int iVar2;\n  wchar_t *pwVar3;\n  char *pcVar4;\n  wchar_t *pwVar5;\n  uint uVar6;\n  wchar_t *pwVar7;\n  patternlist *ppVar8;\n  patternlist *ppVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  patternlist *ppVar12;\n  patternlist *pattern_00;\n  int iVar13;\n  patternlist *ppVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined3 in_stack_00000009;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  patternlist *local_48;\n  wchar_t *local_44;\n  wchar_t *local_40;\n  patternlist *local_3c;\n  wchar_t *local_38;\n  patternlist *local_34;\n  patternlist *local_30;\n  patternlist *list;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = string_end;\n  local_4c = _no_leading_period;\n  local_51 = no_leading_period;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  list = (patternlist *)0x0;\n  local_50 = pattern;\n  local_40 = (wchar_t *)opt;\n  local_38 = string;\n  local_3c = (patternlist *)wcslen(pattern);\n  puVar10 = auStack_5c;\n  ppVar14 = (patternlist *)pattern[1];\n  if (ppVar14 != (patternlist *)0x0) {\n    ppVar12 = (patternlist *)(pattern + 1);\n    local_34 = (patternlist *)&list;\n    ppVar9 = (patternlist *)0xc0000601;\n    local_30 = ppVar12;\n    puVar10 = auStack_5c;\n    iVar13 = 0;\nLAB_00016787:\n    ppVar8 = local_30;\n    pattern_00 = ppVar12;\n    if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;\n    if (posixly_correct == 0) {\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }\n    ppVar14 = ppVar12[1].next;\n    if ((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }\n    else {\n      ppVar8 = ppVar12 + 1;\n    }\n    if (ppVar14 == (patternlist *)0x5d) {\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }\n    while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }\n    ppVar14 = ppVar8[1].next;\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  iVar2 = -1;\n  puVar11 = puVar10;\n  goto LAB_000167c5;\nLAB_0001678c:\n  puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3);\n  if (puVar11 < (undefined1 *)0x20) {\n    if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;\n    if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;\n    if (iVar13 != 0) {\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))\n    goto LAB_000167c0;\n    iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar11 = puVar10 + iVar13;\n    ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;\n    pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8));\n    pwVar3 = local_44;\n    uVar6 = local_4c;\n    *pwVar5 = L'\0';\n    ppVar14->next = (patternlist *)0x0;\n    local_34->next = ppVar14;\n    local_48 = list;\n    if (list == (patternlist *)0x0) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    if (pattern_00[-1].next != (patternlist *)0x29) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }\n    goto LAB_00016b96;\n  }\n  if ((ppVar14 == (patternlist *)0x7c) && (iVar13 == 0)) {\n    ppVar14 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = ppVar9;\n    if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))\n    goto LAB_000167c0;\n    iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);\n    ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;\n    *(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8));\n    ppVar14 = local_34;\n    ppVar12 = pattern_00 + 1;\n    *pwVar3 = L'\0';\n    ppVar9->next = (patternlist *)0x0;\n    local_34 = ppVar9;\n    ppVar14->next = ppVar9;\n    ppVar14 = pattern_00[1].next;\n    iVar13 = 0;\n    local_30 = ppVar12;\n    ppVar9 = local_48;\n    puVar10 = puVar10 + iVar2;\n  }\n  else {\nLAB_0001677d:\n    ppVar14 = pattern_00[1].next;\n    ppVar12 = pattern_00 + 1;\n  }\nLAB_00016783:\n  if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar13 = iVar13 + 1;\n  pattern_00 = pattern_00 + 1;\n  ppVar14 = (patternlist *)0x28;\n  goto LAB_0001678c;\n  while( true ) {\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n    if (ppVar14 == (patternlist *)0x0) break;\nLAB_00016b96:\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;\n    pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;\n    pwVar3 = local_44;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;\n    pwVar5 = local_38;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;\n    iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    if (iVar2 == 0) {\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }\n  }\n  goto LAB_00016b66;\nLAB_000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n  } while (ppVar14 != (patternlist *)0x0);\n  goto LAB_00016b66;\nLAB_00016acb:\n  iVar2 = 0;\n  goto LAB_000167c5;\n  while (pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44) {\nLAB_00016b00:\n    pwVar5 = local_38;\n    *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;\n    iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    pwVar5 = local_44;\n    if (iVar2 != 0) {\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }\n  }\nLAB_00016b66:\n  iVar2 = 1;\n  puVar11 = puVar10 + iVar13;\nLAB_000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar11 + -4) = 0x16c2c;\n    __stack_chk_fail_local();\n  }\n  return iVar2;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "ext_wmatch(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n          int flags)" identifier (parameter_list "(wint_t opt,wchar_t *pattern,wchar_t *string,wchar_t *string_end,_Bool no_leading_period,\n          int flags)" ( (parameter_declaration "wint_t opt" type_identifier identifier) , (parameter_declaration "wchar_t *pattern" type_identifier (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "wchar_t *string" type_identifier (pointer_declarator "*string" * identifier)) , (parameter_declaration "wchar_t *string_end" type_identifier (pointer_declarator "*string_end" * identifier)) , (parameter_declaration "_Bool no_leading_period" type_identifier identifier) , (parameter_declaration "int flags" primitive_type identifier) ))) (compound_statement "{\n  patternlist **pppVar1;\n  int iVar2;\n  wchar_t *pwVar3;\n  char *pcVar4;\n  wchar_t *pwVar5;\n  uint uVar6;\n  wchar_t *pwVar7;\n  patternlist *ppVar8;\n  patternlist *ppVar9;\n  undefined1 *puVar10;\n  undefined1 *puVar11;\n  patternlist *ppVar12;\n  patternlist *pattern_00;\n  int iVar13;\n  patternlist *ppVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined3 in_stack_00000009;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  patternlist *local_48;\n  wchar_t *local_44;\n  wchar_t *local_40;\n  patternlist *local_3c;\n  wchar_t *local_38;\n  patternlist *local_34;\n  patternlist *local_30;\n  patternlist *list;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = string_end;\n  local_4c = _no_leading_period;\n  local_51 = no_leading_period;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  list = (patternlist *)0x0;\n  local_50 = pattern;\n  local_40 = (wchar_t *)opt;\n  local_38 = string;\n  local_3c = (patternlist *)wcslen(pattern);\n  puVar10 = auStack_5c;\n  ppVar14 = (patternlist *)pattern[1];\n  if (ppVar14 != (patternlist *)0x0) {\n    ppVar12 = (patternlist *)(pattern + 1);\n    local_34 = (patternlist *)&list;\n    ppVar9 = (patternlist *)0xc0000601;\n    local_30 = ppVar12;\n    puVar10 = auStack_5c;\n    iVar13 = 0;\nLAB_00016787:\n    ppVar8 = local_30;\n    pattern_00 = ppVar12;\n    if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;\n    if (posixly_correct == 0) {\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }\n    ppVar14 = ppVar12[1].next;\n    if ((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }\n    else {\n      ppVar8 = ppVar12 + 1;\n    }\n    if (ppVar14 == (patternlist *)0x5d) {\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }\n    while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }\n    ppVar14 = ppVar8[1].next;\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  iVar2 = -1;\n  puVar11 = puVar10;\n  goto LAB_000167c5;\nLAB_0001678c:\n  puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3);\n  if (puVar11 < (undefined1 *)0x20) {\n    if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;\n    if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;\n    if (iVar13 != 0) {\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))\n    goto LAB_000167c0;\n    iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar11 = puVar10 + iVar13;\n    ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;\n    pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8));\n    pwVar3 = local_44;\n    uVar6 = local_4c;\n    *pwVar5 = L'\0';\n    ppVar14->next = (patternlist *)0x0;\n    local_34->next = ppVar14;\n    local_48 = list;\n    if (list == (patternlist *)0x0) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    if (pattern_00[-1].next != (patternlist *)0x29) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }\n    goto LAB_00016b96;\n  }\n  if ((ppVar14 == (patternlist *)0x7c) && (iVar13 == 0)) {\n    ppVar14 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = ppVar9;\n    if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))\n    goto LAB_000167c0;\n    iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);\n    ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;\n    *(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8));\n    ppVar14 = local_34;\n    ppVar12 = pattern_00 + 1;\n    *pwVar3 = L'\0';\n    ppVar9->next = (patternlist *)0x0;\n    local_34 = ppVar9;\n    ppVar14->next = ppVar9;\n    ppVar14 = pattern_00[1].next;\n    iVar13 = 0;\n    local_30 = ppVar12;\n    ppVar9 = local_48;\n    puVar10 = puVar10 + iVar2;\n  }\n  else {\nLAB_0001677d:\n    ppVar14 = pattern_00[1].next;\n    ppVar12 = pattern_00 + 1;\n  }\nLAB_00016783:\n  if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar13 = iVar13 + 1;\n  pattern_00 = pattern_00 + 1;\n  ppVar14 = (patternlist *)0x28;\n  goto LAB_0001678c;\n  while( true ) {\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n    if (ppVar14 == (patternlist *)0x0) break;\nLAB_00016b96:\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;\n    pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;\n    pwVar3 = local_44;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;\n    pwVar5 = local_38;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;\n    iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    if (iVar2 == 0) {\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }\n  }\n  goto LAB_00016b66;\nLAB_000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n  } while (ppVar14 != (patternlist *)0x0);\n  goto LAB_00016b66;\nLAB_00016acb:\n  iVar2 = 0;\n  goto LAB_000167c5;\n  while (pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44) {\nLAB_00016b00:\n    pwVar5 = local_38;\n    *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;\n    iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    pwVar5 = local_44;\n    if (iVar2 != 0) {\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }\n  }\nLAB_00016b66:\n  iVar2 = 1;\n  puVar11 = puVar10 + iVar13;\nLAB_000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar11 + -4) = 0x16c2c;\n    __stack_chk_fail_local();\n  }\n  return iVar2;\n}" { (declaration "patternlist **pppVar1;" type_identifier (pointer_declarator "**pppVar1" * (pointer_declarator "*pppVar1" * identifier)) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "wchar_t *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "wchar_t *pwVar5;" type_identifier (pointer_declarator "*pwVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "wchar_t *pwVar7;" type_identifier (pointer_declarator "*pwVar7" * identifier) ;) (declaration "patternlist *ppVar8;" type_identifier (pointer_declarator "*ppVar8" * identifier) ;) (declaration "patternlist *ppVar9;" type_identifier (pointer_declarator "*ppVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "patternlist *ppVar12;" type_identifier (pointer_declarator "*ppVar12" * identifier) ;) (declaration "patternlist *pattern_00;" type_identifier (pointer_declarator "*pattern_00" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "patternlist *ppVar14;" type_identifier (pointer_declarator "*ppVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined3 in_stack_00000009;" type_identifier identifier ;) (declaration "undefined1 auStack_5c [11];" type_identifier (array_declarator "auStack_5c [11]" identifier [ number_literal ]) ;) (declaration "byte local_51;" type_identifier identifier ;) (declaration "wchar_t *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "patternlist *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "wchar_t *local_44;" type_identifier (pointer_declarator "*local_44" * identifier) ;) (declaration "wchar_t *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "patternlist *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "wchar_t *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "patternlist *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "patternlist *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "patternlist *list;" type_identifier (pointer_declarator "*list" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1670d;" (assignment_expression "uStack_14 = 0x1670d" identifier = number_literal) ;) (expression_statement "local_44 = string_end;" (assignment_expression "local_44 = string_end" identifier = identifier) ;) (expression_statement "local_4c = _no_leading_period;" (assignment_expression "local_4c = _no_leading_period" identifier = identifier) ;) (expression_statement "local_51 = no_leading_period;" (assignment_expression "local_51 = no_leading_period" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" 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_50 = pattern;" (assignment_expression "local_50 = pattern" identifier = identifier) ;) (expression_statement "local_40 = (wchar_t *)opt;" (assignment_expression "local_40 = (wchar_t *)opt" identifier = (cast_expression "(wchar_t *)opt" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_38 = string;" (assignment_expression "local_38 = string" identifier = identifier) ;) (expression_statement "local_3c = (patternlist *)wcslen(pattern);" (assignment_expression "local_3c = (patternlist *)wcslen(pattern)" identifier = (cast_expression "(patternlist *)wcslen(pattern)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "wcslen(pattern)" identifier (argument_list "(pattern)" ( identifier ))))) ;) (expression_statement "puVar10 = auStack_5c;" (assignment_expression "puVar10 = auStack_5c" identifier = identifier) ;) (expression_statement "ppVar14 = (patternlist *)pattern[1];" (assignment_expression "ppVar14 = (patternlist *)pattern[1]" identifier = (cast_expression "(patternlist *)pattern[1]" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pattern[1]" identifier [ number_literal ]))) ;) (if_statement "if (ppVar14 != (patternlist *)0x0) {\n    ppVar12 = (patternlist *)(pattern + 1);\n    local_34 = (patternlist *)&list;\n    ppVar9 = (patternlist *)0xc0000601;\n    local_30 = ppVar12;\n    puVar10 = auStack_5c;\n    iVar13 = 0;\nLAB_00016787:\n    ppVar8 = local_30;\n    pattern_00 = ppVar12;\n    if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;\n    if (posixly_correct == 0) {\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }\n    ppVar14 = ppVar12[1].next;\n    if ((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }\n    else {\n      ppVar8 = ppVar12 + 1;\n    }\n    if (ppVar14 == (patternlist *)0x5d) {\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }\n    while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }\n    ppVar14 = ppVar8[1].next;\n    goto LAB_00016783;\n  }" if (parenthesized_expression "(ppVar14 != (patternlist *)0x0)" ( (binary_expression "ppVar14 != (patternlist *)0x0" identifier != (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppVar12 = (patternlist *)(pattern + 1);\n    local_34 = (patternlist *)&list;\n    ppVar9 = (patternlist *)0xc0000601;\n    local_30 = ppVar12;\n    puVar10 = auStack_5c;\n    iVar13 = 0;\nLAB_00016787:\n    ppVar8 = local_30;\n    pattern_00 = ppVar12;\n    if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;\n    if (posixly_correct == 0) {\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }\n    ppVar14 = ppVar12[1].next;\n    if ((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }\n    else {\n      ppVar8 = ppVar12 + 1;\n    }\n    if (ppVar14 == (patternlist *)0x5d) {\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }\n    while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }\n    ppVar14 = ppVar8[1].next;\n    goto LAB_00016783;\n  }" { (expression_statement "ppVar12 = (patternlist *)(pattern + 1);" (assignment_expression "ppVar12 = (patternlist *)(pattern + 1)" identifier = (cast_expression "(patternlist *)(pattern + 1)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pattern + 1)" ( (binary_expression "pattern + 1" 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 "ppVar9 = (patternlist *)0xc0000601;" (assignment_expression "ppVar9 = (patternlist *)0xc0000601" identifier = (cast_expression "(patternlist *)0xc0000601" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = ppVar12;" (assignment_expression "local_30 = ppVar12" identifier = identifier) ;) (expression_statement "puVar10 = auStack_5c;" (assignment_expression "puVar10 = auStack_5c" identifier = identifier) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00016787:\n    ppVar8 = local_30;" statement_identifier : (expression_statement "ppVar8 = local_30;" (assignment_expression "ppVar8 = local_30" identifier = identifier) ;)) (expression_statement "pattern_00 = ppVar12;" (assignment_expression "pattern_00 = ppVar12" identifier = identifier) ;) (if_statement "if (ppVar14 != (patternlist *)0x5b) goto LAB_0001678c;" if (parenthesized_expression "(ppVar14 != (patternlist *)0x5b)" ( (binary_expression "ppVar14 != (patternlist *)0x5b" identifier != (cast_expression "(patternlist *)0x5b" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001678c;" goto statement_identifier ;)) (if_statement "if (posixly_correct == 0) {\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }" if (parenthesized_expression "(posixly_correct == 0)" ( (binary_expression "posixly_correct == 0" identifier == number_literal) )) (compound_statement "{\n      local_48 = ppVar9;\n      *(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar10 + -0x14) = 0x168fa;\n      pcVar4 = getenv(*(char **)(puVar10 + -0x10));\n      posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;\n      ppVar9 = local_48;\n    }" { (expression_statement "local_48 = ppVar9;" (assignment_expression "local_48 = ppVar9" identifier = identifier) ;) (expression_statement "*(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT";" (assignment_expression "*(char **)(puVar10 + -0x10) = "POSIXLY_CORRECT"" (pointer_expression "*(char **)(puVar10 + -0x10)" * (cast_expression "(char **)(puVar10 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) = (string_literal ""POSIXLY_CORRECT"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar10 + -0x14) = 0x168fa;" (assignment_expression "*(undefined4 *)(puVar10 + -0x14) = 0x168fa" (pointer_expression "*(undefined4 *)(puVar10 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -0x14)" ( (binary_expression "puVar10 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar4 = getenv(*(char **)(puVar10 + -0x10));" (assignment_expression "pcVar4 = getenv(*(char **)(puVar10 + -0x10))" identifier = (call_expression "getenv(*(char **)(puVar10 + -0x10))" identifier (argument_list "(*(char **)(puVar10 + -0x10))" ( (pointer_expression "*(char **)(puVar10 + -0x10)" * (cast_expression "(char **)(puVar10 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + -0x10)" ( (binary_expression "puVar10 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1;" (assignment_expression "posixly_correct = -(uint)(pcVar4 == (char *)0x0) | 1" identifier = (binary_expression "-(uint)(pcVar4 == (char *)0x0) | 1" (unary_expression "-(uint)(pcVar4 == (char *)0x0)" - (call_expression "(uint)(pcVar4 == (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) | number_literal)) ;) (expression_statement "ppVar9 = local_48;" (assignment_expression "ppVar9 = local_48" identifier = identifier) ;) })) (expression_statement "ppVar14 = ppVar12[1].next;" (assignment_expression "ppVar14 = ppVar12[1].next" identifier = (field_expression "ppVar12[1].next" (subscript_expression "ppVar12[1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if ((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))) {\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }\n    else {\n      ppVar8 = ppVar12 + 1;\n    }" if (parenthesized_expression "((ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e))))" ( (binary_expression "(ppVar14 == (patternlist *)0x21) ||\n       ((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))" (parenthesized_expression "(ppVar14 == (patternlist *)0x21)" ( (binary_expression "ppVar14 == (patternlist *)0x21" identifier == (cast_expression "(patternlist *)0x21" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)))" ( (parenthesized_expression "(posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e))" ( (binary_expression "posixly_correct < 0 && (ppVar14 == (patternlist *)0x5e)" (binary_expression "posixly_correct < 0" identifier < number_literal) && (parenthesized_expression "(ppVar14 == (patternlist *)0x5e)" ( (binary_expression "ppVar14 == (patternlist *)0x5e" identifier == (cast_expression "(patternlist *)0x5e" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\n      ppVar8 = ppVar12 + 2;\n      ppVar14 = ppVar12[2].next;\n    }" { (expression_statement "ppVar8 = ppVar12 + 2;" (assignment_expression "ppVar8 = ppVar12 + 2" identifier = (binary_expression "ppVar12 + 2" identifier + number_literal)) ;) (expression_statement "ppVar14 = ppVar12[2].next;" (assignment_expression "ppVar14 = ppVar12[2].next" identifier = (field_expression "ppVar12[2].next" (subscript_expression "ppVar12[2]" identifier [ number_literal ]) . field_identifier)) ;) }) (else_clause "else {\n      ppVar8 = ppVar12 + 1;\n    }" else (compound_statement "{\n      ppVar8 = ppVar12 + 1;\n    }" { (expression_statement "ppVar8 = ppVar12 + 1;" (assignment_expression "ppVar8 = ppVar12 + 1" identifier = (binary_expression "ppVar12 + 1" identifier + number_literal)) ;) }))) (if_statement "if (ppVar14 == (patternlist *)0x5d) {\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }" if (parenthesized_expression "(ppVar14 == (patternlist *)0x5d)" ( (binary_expression "ppVar14 == (patternlist *)0x5d" identifier == (cast_expression "(patternlist *)0x5d" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      ppVar14 = ppVar8[1].next;\n      ppVar8 = ppVar8 + 1;\n    }" { (expression_statement "ppVar14 = ppVar8[1].next;" (assignment_expression "ppVar14 = ppVar8[1].next" identifier = (field_expression "ppVar8[1].next" (subscript_expression "ppVar8[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "ppVar8 = ppVar8 + 1;" (assignment_expression "ppVar8 = ppVar8 + 1" identifier = (binary_expression "ppVar8 + 1" identifier + number_literal)) ;) })) (while_statement "while (ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d) {\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }" while (parenthesized_expression "(ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d)" ( (comma_expression "ppVar12 = ppVar8 + 1, ppVar14 != (patternlist *)0x5d" (assignment_expression "ppVar12 = ppVar8 + 1" identifier = (binary_expression "ppVar8 + 1" identifier + number_literal)) , (binary_expression "ppVar14 != (patternlist *)0x5d" identifier != (cast_expression "(patternlist *)0x5d" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;\n      ppVar8 = ppVar12;\n      ppVar14 = ppVar12->next;\n    }" { (if_statement "if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;" if (parenthesized_expression "(ppVar14 == (patternlist *)0x0)" ( (binary_expression "ppVar14 == (patternlist *)0x0" identifier == (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "ppVar8 = ppVar12;" (assignment_expression "ppVar8 = ppVar12" identifier = identifier) ;) (expression_statement "ppVar14 = ppVar12->next;" (assignment_expression "ppVar14 = ppVar12->next" identifier = (field_expression "ppVar12->next" identifier -> field_identifier)) ;) })) (expression_statement "ppVar14 = ppVar8[1].next;" (assignment_expression "ppVar14 = ppVar8[1].next" identifier = (field_expression "ppVar8[1].next" (subscript_expression "ppVar8[1]" identifier [ number_literal ]) . field_identifier)) ;) (goto_statement "goto LAB_00016783;" goto statement_identifier ;) })) (labeled_statement "LAB_000167c0:\n  iVar2 = -1;" statement_identifier : (expression_statement "iVar2 = -1;" (assignment_expression "iVar2 = -1" identifier = number_literal) ;)) (expression_statement "puVar11 = puVar10;" (assignment_expression "puVar11 = puVar10" identifier = identifier) ;) (goto_statement "goto LAB_000167c5;" goto statement_identifier ;) (labeled_statement "LAB_0001678c:\n  puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3);" statement_identifier : (expression_statement "puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3);" (assignment_expression "puVar11 = (undefined1 *)((int)&ppVar14[-9].next + 3)" identifier = (cast_expression "(undefined1 *)((int)&ppVar14[-9].next + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ppVar14[-9].next + 3)" ( (binary_expression "(int)&ppVar14[-9].next + 3" (cast_expression "(int)&ppVar14[-9].next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar14[-9].next" & (field_expression "ppVar14[-9].next" (subscript_expression "ppVar14[-9]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;)) (if_statement "if (puVar11 < (undefined1 *)0x20) {\n    if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;\n    if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;\n    if (iVar13 != 0) {\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))\n    goto LAB_000167c0;\n    iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar11 = puVar10 + iVar13;\n    ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;\n    pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8));\n    pwVar3 = local_44;\n    uVar6 = local_4c;\n    *pwVar5 = L'\0';\n    ppVar14->next = (patternlist *)0x0;\n    local_34->next = ppVar14;\n    local_48 = list;\n    if (list == (patternlist *)0x0) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    if (pattern_00[-1].next != (patternlist *)0x29) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }\n    goto LAB_00016b96;\n  }" if (parenthesized_expression "(puVar11 < (undefined1 *)0x20)" ( (binary_expression "puVar11 < (undefined1 *)0x20" identifier < (cast_expression "(undefined1 *)0x20" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;\n    if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;\n    if (iVar13 != 0) {\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))\n    goto LAB_000167c0;\n    iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar11 = puVar10 + iVar13;\n    ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;\n    pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8));\n    pwVar3 = local_44;\n    uVar6 = local_4c;\n    *pwVar5 = L'\0';\n    ppVar14->next = (patternlist *)0x0;\n    local_34->next = ppVar14;\n    local_48 = list;\n    if (list == (patternlist *)0x0) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    if (pattern_00[-1].next != (patternlist *)0x29) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }\n    goto LAB_00016b96;\n  }" { (if_statement "if ((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)) goto LAB_000167e0;" if (parenthesized_expression "((((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28))" ( (binary_expression "(((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0) &&\n       (pattern_00[1].next == (patternlist *)0x28)" (parenthesized_expression "(((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0)" ( (binary_expression "((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1) != 0" (parenthesized_expression "((uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1)" ( (binary_expression "(uint)ppVar9 >> ((uint)puVar11 & 0x1f) & 1" (binary_expression "(uint)ppVar9 >> ((uint)puVar11 & 0x1f)" (cast_expression "(uint)ppVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "((uint)puVar11 & 0x1f)" ( (binary_expression "(uint)puVar11 & 0x1f" (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(pattern_00[1].next == (patternlist *)0x28)" ( (binary_expression "pattern_00[1].next == (patternlist *)0x28" (field_expression "pattern_00[1].next" (subscript_expression "pattern_00[1]" identifier [ number_literal ]) . field_identifier) == (cast_expression "(patternlist *)0x28" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_000167e0;" goto statement_identifier ;)) (if_statement "if (ppVar14 != (patternlist *)0x29) goto LAB_0001677d;" if (parenthesized_expression "(ppVar14 != (patternlist *)0x29)" ( (binary_expression "ppVar14 != (patternlist *)0x29" identifier != (cast_expression "(patternlist *)0x29" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001677d;" goto statement_identifier ;)) (if_statement "if (iVar13 != 0) {\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      ppVar14 = pattern_00[1].next;\n      ppVar12 = pattern_00 + 1;\n      iVar13 = iVar13 + -1;\n      if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" { (expression_statement "ppVar14 = pattern_00[1].next;" (assignment_expression "ppVar14 = pattern_00[1].next" identifier = (field_expression "pattern_00[1].next" (subscript_expression "pattern_00[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "ppVar12 = pattern_00 + 1;" (assignment_expression "ppVar12 = pattern_00 + 1" identifier = (binary_expression "pattern_00 + 1" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (if_statement "if (ppVar14 != (patternlist *)0x0) goto LAB_00016787;" if (parenthesized_expression "(ppVar14 != (patternlist *)0x0)" ( (binary_expression "ppVar14 != (patternlist *)0x0" identifier != (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016787;" goto statement_identifier ;)) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;) })) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }" if (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" ( (binary_expression "1 < (int)local_40 - 0x3fU" number_literal < (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) )) (compound_statement "{\n      local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }" { (expression_statement "local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);" (assignment_expression "local_3c = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1)" identifier = (cast_expression "(patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)pattern_00 - (int)local_30 >> 2) + 1)" ( (binary_expression "((int)pattern_00 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)pattern_00 - (int)local_30 >> 2)" ( (binary_expression "(int)pattern_00 - (int)local_30 >> 2" (binary_expression "(int)pattern_00 - (int)local_30" (cast_expression "(int)pattern_00" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal) )))) ;) })) (if_statement "if ((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))\n    goto LAB_000167c0;" if (parenthesized_expression "((0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c))" ( (binary_expression "(0x1f3b < (uint)((int)local_3c * 4)) || ((patternlist *)0x3fffffff < local_3c)" (parenthesized_expression "(0x1f3b < (uint)((int)local_3c * 4))" ( (binary_expression "0x1f3b < (uint)((int)local_3c * 4)" number_literal < (call_expression "(uint)((int)local_3c * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_3c * 4)" ( (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) )) || (parenthesized_expression "((patternlist *)0x3fffffff < local_3c)" ( (binary_expression "(patternlist *)0x3fffffff < local_3c" (cast_expression "(patternlist *)0x3fffffff" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar13 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0)" identifier = (unary_expression "-((int)local_3c * 4 + 0x1fU & 0xfffffff0)" - (parenthesized_expression "((int)local_3c * 4 + 0x1fU & 0xfffffff0)" ( (binary_expression "(int)local_3c * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)local_3c * 4 + 0x1fU" (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar11 = puVar10 + iVar13;" (assignment_expression "puVar11 = puVar10 + iVar13" identifier = (binary_expression "puVar10 + iVar13" identifier + identifier)) ;) (expression_statement "ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0);" (assignment_expression "ppVar14 = (patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0)" identifier = (cast_expression "(patternlist *)((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0)" ( (binary_expression "(uint)(puVar10 + iVar13 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar10 + iVar13 + 0xf)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar10 + iVar13 + 0xf)" ( (binary_expression "puVar10 + iVar13 + 0xf" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "*(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar10 + iVar13 + -8) = (int)pattern_00 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar10 + iVar13 + -8)" * (cast_expression "(int *)(puVar10 + iVar13 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (binary_expression "(int)pattern_00 - (int)local_30 >> 2" (binary_expression "(int)pattern_00 - (int)local_30" (cast_expression "(int)pattern_00" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0xc) = ppVar8" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (binary_expression "ppVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16978" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8));" (assignment_expression "pwVar5 = wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8))" identifier = (call_expression "wmempcpy(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8))" identifier (argument_list "(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc)\n                      ,*(size_t *)(puVar10 + iVar13 + -8))" ( (pointer_expression "*(wchar_t **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(wchar_t **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(wchar_t **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(size_t *)(puVar10 + iVar13 + -8)" * (cast_expression "(size_t *)(puVar10 + iVar13 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "pwVar3 = local_44;" (assignment_expression "pwVar3 = local_44" identifier = identifier) ;) (expression_statement "uVar6 = local_4c;" (assignment_expression "uVar6 = local_4c" identifier = identifier) ;) (expression_statement "*pwVar5 = L'\0';" (assignment_expression "*pwVar5 = L'\0'" (pointer_expression "*pwVar5" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "ppVar14->next = (patternlist *)0x0;" (assignment_expression "ppVar14->next = (patternlist *)0x0" (field_expression "ppVar14->next" identifier -> field_identifier) = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34->next = ppVar14;" (assignment_expression "local_34->next = ppVar14" (field_expression "local_34->next" identifier -> field_identifier) = identifier) ;) (expression_statement "local_48 = list;" (assignment_expression "local_48 = list" identifier = identifier) ;) (if_statement "if (list == (patternlist *)0x0) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\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      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }" { (expression_statement "*(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar10 + iVar13 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar10 + iVar13 + -4)" * (cast_expression "(char **)(puVar10 + iVar13 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -4)" ( (binary_expression "puVar10 + iVar13 + -4" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -8) = 0x454;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -8) = 0x454" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -8)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(char **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar10 + iVar13 + -0x10) = "list != NULL";" (assignment_expression "*(char **)(puVar10 + iVar13 + -0x10) = "list != NULL"" (pointer_expression "*(char **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(char **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""list != NULL"" " string_content ")) ;) comment (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c27" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));" (call_expression "__assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4))" identifier (argument_list "(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4))" ( (pointer_expression "*(char **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(char **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(char **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar10 + iVar13 + -8)" * (cast_expression "(uint *)(puVar10 + iVar13 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar10 + iVar13 + -4)" * (cast_expression "(char **)(puVar10 + iVar13 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -4)" ( (binary_expression "puVar10 + iVar13 + -4" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) ))) ;) })) (if_statement "if (pattern_00[-1].next != (patternlist *)0x29) {\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }" if (parenthesized_expression "(pattern_00[-1].next != (patternlist *)0x29)" ( (binary_expression "pattern_00[-1].next != (patternlist *)0x29" (field_expression "pattern_00[-1].next" (subscript_expression "pattern_00[-1]" identifier [ number_literal ]) . field_identifier) != (cast_expression "(patternlist *)0x29" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";\n                    /* WARNING: Subroutine does not return */\n      *(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    }" { (expression_statement "*(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar10 + iVar13 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar10 + iVar13 + -4)" * (cast_expression "(char **)(puVar10 + iVar13 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -4)" ( (binary_expression "puVar10 + iVar13 + -4" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -8) = 0x455;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -8) = 0x455" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -8)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(char **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')";" (assignment_expression "*(char **)(puVar10 + iVar13 + -0x10) = "p[-1] == L_(\')\')"" (pointer_expression "*(char **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(char **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""p[-1] == L_(\')\')"" " string_content escape_sequence string_content escape_sequence string_content ")) ;) comment (expression_statement "*(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a;" (assignment_expression "*(undefined **)(puVar10 + iVar13 + -0x14) = &UNK_00016c6a" (pointer_expression "*(undefined **)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined **)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016c6a" & identifier)) ;) (expression_statement "__assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));" (call_expression "__assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4))" identifier (argument_list "(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4))" ( (pointer_expression "*(char **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(char **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(char **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar10 + iVar13 + -8)" * (cast_expression "(uint *)(puVar10 + iVar13 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar10 + iVar13 + -4)" * (cast_expression "(char **)(puVar10 + iVar13 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -4)" ( (binary_expression "puVar10 + iVar13 + -4" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) ))) ;) })) (switch_statement "switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }" switch (parenthesized_expression "(local_40)" ( identifier )) (compound_statement "{\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;\n    default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));\n    case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;\n    }" { (case_statement "case (wchar_t *)0x21:\n      if (local_44 < local_38) goto LAB_00016b66;\n      local_34 = pattern_00;\n      local_30 = (patternlist *)(local_4c & 0xff);\n      ppVar14 = local_48;\n      uVar6 = flags & 0xfffffffb;\n      pwVar3 = local_38;\n      if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }\n      goto LAB_00016b00;" case (cast_expression "(wchar_t *)0x21" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (if_statement "if (local_44 < local_38) goto LAB_00016b66;" if (parenthesized_expression "(local_44 < local_38)" ( (binary_expression "local_44 < local_38" identifier < identifier) )) (goto_statement "goto LAB_00016b66;" goto statement_identifier ;)) (expression_statement "local_34 = pattern_00;" (assignment_expression "local_34 = pattern_00" identifier = identifier) ;) (expression_statement "local_30 = (patternlist *)(local_4c & 0xff);" (assignment_expression "local_30 = (patternlist *)(local_4c & 0xff)" identifier = (cast_expression "(patternlist *)(local_4c & 0xff)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c & 0xff)" ( (binary_expression "local_4c & 0xff" identifier & number_literal) )))) ;) (expression_statement "ppVar14 = local_48;" (assignment_expression "ppVar14 = local_48" identifier = identifier) ;) (expression_statement "uVar6 = flags & 0xfffffffb;" (assignment_expression "uVar6 = flags & 0xfffffffb" identifier = (binary_expression "flags & 0xfffffffb" identifier & number_literal)) ;) (expression_statement "pwVar3 = local_38;" (assignment_expression "pwVar3 = local_38" identifier = identifier) ;) (if_statement "if ((flags & 1U) != 0) {\n        uVar6 = flags;\n      }" if (parenthesized_expression "((flags & 1U) != 0)" ( (binary_expression "(flags & 1U) != 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar6 = flags;\n      }" { (expression_statement "uVar6 = flags;" (assignment_expression "uVar6 = flags" identifier = identifier) ;) })) (goto_statement "goto LAB_00016b00;" goto statement_identifier ;)) (case_statement "default:\n      *(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;\n      *(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";\n                    /* WARNING: Subroutine does not return */\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));" default : (expression_statement "*(char **)(puVar10 + iVar13 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar10 + iVar13 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar10 + iVar13 + -4)" * (cast_expression "(char **)(puVar10 + iVar13 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -4)" ( (binary_expression "puVar10 + iVar13 + -4" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -8) = 0x4ad" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -8)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar10 + iVar13 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(char **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\"";" (assignment_expression "*(char **)(puVar10 + iVar13 + -0x10) = "! \"Invalid extended matching operator\""" (pointer_expression "*(char **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(char **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (string_literal ""! \"Invalid extended matching operator\""" " string_content escape_sequence string_content escape_sequence ")) ;) comment (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16c4b" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4));" (call_expression "__assert_fail(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4))" identifier (argument_list "(*(char **)(puVar10 + iVar13 + -0x10),*(char **)(puVar10 + iVar13 + -0xc),\n                    *(uint *)(puVar10 + iVar13 + -8),*(char **)(puVar10 + iVar13 + -4))" ( (pointer_expression "*(char **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(char **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(char **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar10 + iVar13 + -8)" * (cast_expression "(uint *)(puVar10 + iVar13 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -8)" ( (binary_expression "puVar10 + iVar13 + -8" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar10 + iVar13 + -4)" * (cast_expression "(char **)(puVar10 + iVar13 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -4)" ( (binary_expression "puVar10 + iVar13 + -4" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) ))) ;)) (case_statement "case (wchar_t *)0x2a:\n      uVar6 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar5 = local_38;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar6;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;" case (cast_expression "(wchar_t *)0x2a" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "uVar6 = local_4c & 0xff;" (assignment_expression "uVar6 = local_4c & 0xff" identifier = (binary_expression "local_4c & 0xff" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar10 + iVar13 + -0xc) = flags;" (assignment_expression "*(int *)(puVar10 + iVar13 + -0xc) = flags" (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "pwVar5 = local_38;" (assignment_expression "pwVar5 = local_38" identifier = identifier) ;) (expression_statement "*(uint *)(puVar10 + iVar13 + -0x10) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0x10) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0x10)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x169d6" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)pattern_00" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar2 == 0) goto LAB_00016acb;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00016acb;" goto statement_identifier ;))) (case_statement "case (wchar_t *)0x2b:\n      local_3c = pattern_00;\n      uVar6 = flags & 0xfffffffb;\n      if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }\n      local_34 = (patternlist *)(flags & 1U);\n      ppVar14 = local_48;\n      goto LAB_000169fc;" case (cast_expression "(wchar_t *)0x2b" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "local_3c = pattern_00;" (assignment_expression "local_3c = pattern_00" identifier = identifier) ;) (expression_statement "uVar6 = flags & 0xfffffffb;" (assignment_expression "uVar6 = flags & 0xfffffffb" identifier = (binary_expression "flags & 0xfffffffb" identifier & number_literal)) ;) (if_statement "if ((patternlist *)(flags & 1U) != (patternlist *)0x0) {\n        uVar6 = flags;\n      }" if (parenthesized_expression "((patternlist *)(flags & 1U) != (patternlist *)0x0)" ( (binary_expression "(patternlist *)(flags & 1U) != (patternlist *)0x0" (cast_expression "(patternlist *)(flags & 1U)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) ))) != (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar6 = flags;\n      }" { (expression_statement "uVar6 = flags;" (assignment_expression "uVar6 = flags" identifier = identifier) ;) })) (expression_statement "local_34 = (patternlist *)(flags & 1U);" (assignment_expression "local_34 = (patternlist *)(flags & 1U)" identifier = (cast_expression "(patternlist *)(flags & 1U)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )))) ;) (expression_statement "ppVar14 = local_48;" (assignment_expression "ppVar14 = local_48" identifier = identifier) ;) (goto_statement "goto LAB_000169fc;" goto statement_identifier ;)) (case_statement "case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int *)(puVar10 + iVar13 + -0xc) = flags;\n      pwVar3 = local_44;\n      *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n      pwVar5 = local_38;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;\n      iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 != 0) goto LAB_00016b74;\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;" case (cast_expression "(wchar_t *)0x3f" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "uVar15 = local_4c & 0xff;" (assignment_expression "uVar15 = local_4c & 0xff" identifier = (binary_expression "local_4c & 0xff" identifier & number_literal)) ;) (expression_statement "*(int *)(puVar10 + iVar13 + -0xc) = flags;" (assignment_expression "*(int *)(puVar10 + iVar13 + -0xc) = flags" (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "pwVar3 = local_44;" (assignment_expression "pwVar3 = local_44" identifier = identifier) ;) (expression_statement "*(uint *)(puVar10 + iVar13 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0x10)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "pwVar5 = local_38;" (assignment_expression "pwVar5 = local_38" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bdc" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)pattern_00,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)pattern_00" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar2 != 0) goto LAB_00016b74;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00016b74;" goto statement_identifier ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = puVar10 + iVar13;" (assignment_expression "puVar11 = puVar10 + iVar13" identifier = (binary_expression "puVar10 + iVar13" identifier + identifier)) ;) (goto_statement "goto LAB_000167c5;" goto statement_identifier ;)) (case_statement "case (wchar_t *)0x40:\nLAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);\n      local_30 = (patternlist *)(flags & 0xfffffffb);\n      if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }\n      ppVar14 = local_48;" case (cast_expression "(wchar_t *)0x40" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (labeled_statement "LAB_00016b74:\n      local_34 = (patternlist *)(uVar6 & 0xff);" statement_identifier : (expression_statement "local_34 = (patternlist *)(uVar6 & 0xff);" (assignment_expression "local_34 = (patternlist *)(uVar6 & 0xff)" identifier = (cast_expression "(patternlist *)(uVar6 & 0xff)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) )))) ;)) (expression_statement "local_30 = (patternlist *)(flags & 0xfffffffb);" (assignment_expression "local_30 = (patternlist *)(flags & 0xfffffffb)" identifier = (cast_expression "(patternlist *)(flags & 0xfffffffb)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(flags & 0xfffffffb)" ( (binary_expression "flags & 0xfffffffb" identifier & number_literal) )))) ;) (if_statement "if ((flags & 1U) != 0) {\n        local_30 = (patternlist *)flags;\n      }" if (parenthesized_expression "((flags & 1U) != 0)" ( (binary_expression "(flags & 1U) != 0" (parenthesized_expression "(flags & 1U)" ( (binary_expression "flags & 1U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_30 = (patternlist *)flags;\n      }" { (expression_statement "local_30 = (patternlist *)flags;" (assignment_expression "local_30 = (patternlist *)flags" identifier = (cast_expression "(patternlist *)flags" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "ppVar14 = local_48;" (assignment_expression "ppVar14 = local_48" identifier = identifier) ;)) })) (goto_statement "goto LAB_00016b96;" goto statement_identifier ;) })) (if_statement "if ((ppVar14 == (patternlist *)0x7c) && (iVar13 == 0)) {\n    ppVar14 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = ppVar9;\n    if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))\n    goto LAB_000167c0;\n    iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);\n    ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;\n    *(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8));\n    ppVar14 = local_34;\n    ppVar12 = pattern_00 + 1;\n    *pwVar3 = L'\0';\n    ppVar9->next = (patternlist *)0x0;\n    local_34 = ppVar9;\n    ppVar14->next = ppVar9;\n    ppVar14 = pattern_00[1].next;\n    iVar13 = 0;\n    local_30 = ppVar12;\n    ppVar9 = local_48;\n    puVar10 = puVar10 + iVar2;\n  }\n  else {\nLAB_0001677d:\n    ppVar14 = pattern_00[1].next;\n    ppVar12 = pattern_00 + 1;\n  }" if (parenthesized_expression "((ppVar14 == (patternlist *)0x7c) && (iVar13 == 0))" ( (binary_expression "(ppVar14 == (patternlist *)0x7c) && (iVar13 == 0)" (parenthesized_expression "(ppVar14 == (patternlist *)0x7c)" ( (binary_expression "ppVar14 == (patternlist *)0x7c" identifier == (cast_expression "(patternlist *)0x7c" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    ppVar14 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = ppVar9;\n    if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))\n    goto LAB_000167c0;\n    iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);\n    ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);\n    *(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;\n    *(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;\n    *(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;\n    *(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8));\n    ppVar14 = local_34;\n    ppVar12 = pattern_00 + 1;\n    *pwVar3 = L'\0';\n    ppVar9->next = (patternlist *)0x0;\n    local_34 = ppVar9;\n    ppVar14->next = ppVar9;\n    ppVar14 = pattern_00[1].next;\n    iVar13 = 0;\n    local_30 = ppVar12;\n    ppVar9 = local_48;\n    puVar10 = puVar10 + iVar2;\n  }" { (expression_statement "ppVar14 = local_3c;" (assignment_expression "ppVar14 = local_3c" identifier = identifier) ;) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }" if (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" ( (binary_expression "1 < (int)local_40 - 0x3fU" number_literal < (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) )) (compound_statement "{\n      ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);\n    }" { (expression_statement "ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1);" (assignment_expression "ppVar14 = (patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1)" identifier = (cast_expression "(patternlist *)(((int)pattern_00 - (int)local_30 >> 2) + 1)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)pattern_00 - (int)local_30 >> 2) + 1)" ( (binary_expression "((int)pattern_00 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)pattern_00 - (int)local_30 >> 2)" ( (binary_expression "(int)pattern_00 - (int)local_30 >> 2" (binary_expression "(int)pattern_00 - (int)local_30" (cast_expression "(int)pattern_00" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal) )))) ;) })) (expression_statement "local_48 = ppVar9;" (assignment_expression "local_48 = ppVar9" identifier = identifier) ;) (if_statement "if ((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))\n    goto LAB_000167c0;" if (parenthesized_expression "((0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14))" ( (binary_expression "(0x1f3b < (uint)((int)ppVar14 * 4)) || ((patternlist *)0x3fffffff < ppVar14)" (parenthesized_expression "(0x1f3b < (uint)((int)ppVar14 * 4))" ( (binary_expression "0x1f3b < (uint)((int)ppVar14 * 4)" number_literal < (call_expression "(uint)((int)ppVar14 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppVar14 * 4)" ( (binary_expression "(int)ppVar14 * 4" (cast_expression "(int)ppVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) )) || (parenthesized_expression "((patternlist *)0x3fffffff < ppVar14)" ( (binary_expression "(patternlist *)0x3fffffff < ppVar14" (cast_expression "(patternlist *)0x3fffffff" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar2 = -((int)ppVar14 * 4 + 0x1fU & 0xfffffff0)" identifier = (unary_expression "-((int)ppVar14 * 4 + 0x1fU & 0xfffffff0)" - (parenthesized_expression "((int)ppVar14 * 4 + 0x1fU & 0xfffffff0)" ( (binary_expression "(int)ppVar14 * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)ppVar14 * 4 + 0x1fU" (binary_expression "(int)ppVar14 * 4" (cast_expression "(int)ppVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0);" (assignment_expression "ppVar9 = (patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0)" identifier = (cast_expression "(patternlist *)((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0)" ( (binary_expression "(uint)(puVar10 + iVar2 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar10 + iVar2 + 0xf)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar10 + iVar2 + 0xf)" ( (binary_expression "puVar10 + iVar2 + 0xf" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "*(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar10 + iVar2 + -8) = (int)pattern_00 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar10 + iVar2 + -8)" * (cast_expression "(int *)(puVar10 + iVar2 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar2 + -8)" ( (binary_expression "puVar10 + iVar2 + -8" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) = (binary_expression "(int)pattern_00 - (int)local_30 >> 2" (binary_expression "(int)pattern_00 - (int)local_30" (cast_expression "(int)pattern_00" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "*(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8;" (assignment_expression "*(patternlist **)(puVar10 + iVar2 + -0xc) = ppVar8" (pointer_expression "*(patternlist **)(puVar10 + iVar2 + -0xc)" * (cast_expression "(patternlist **)(puVar10 + iVar2 + -0xc)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar2 + -0xc)" ( (binary_expression "puVar10 + iVar2 + -0xc" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1;" (assignment_expression "*(patternlist **)(puVar10 + iVar2 + -0x10) = ppVar9 + 1" (pointer_expression "*(patternlist **)(puVar10 + iVar2 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar2 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar2 + -0x10)" ( (binary_expression "puVar10 + iVar2 + -0x10" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) = (binary_expression "ppVar9 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5;" (assignment_expression "*(undefined4 *)(puVar10 + iVar2 + -0x14) = 0x168b5" (pointer_expression "*(undefined4 *)(puVar10 + iVar2 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar2 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar2 + -0x14)" ( (binary_expression "puVar10 + iVar2 + -0x14" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8))" identifier = (call_expression "wmempcpy(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8))" identifier (argument_list "(*(wchar_t **)(puVar10 + iVar2 + -0x10),*(wchar_t **)(puVar10 + iVar2 + -0xc),\n                      *(size_t *)(puVar10 + iVar2 + -8))" ( (pointer_expression "*(wchar_t **)(puVar10 + iVar2 + -0x10)" * (cast_expression "(wchar_t **)(puVar10 + iVar2 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar2 + -0x10)" ( (binary_expression "puVar10 + iVar2 + -0x10" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar10 + iVar2 + -0xc)" * (cast_expression "(wchar_t **)(puVar10 + iVar2 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar2 + -0xc)" ( (binary_expression "puVar10 + iVar2 + -0xc" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) , (pointer_expression "*(size_t *)(puVar10 + iVar2 + -8)" * (cast_expression "(size_t *)(puVar10 + iVar2 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar2 + -8)" ( (binary_expression "puVar10 + iVar2 + -8" (binary_expression "puVar10 + iVar2" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "ppVar14 = local_34;" (assignment_expression "ppVar14 = local_34" identifier = identifier) ;) (expression_statement "ppVar12 = pattern_00 + 1;" (assignment_expression "ppVar12 = pattern_00 + 1" identifier = (binary_expression "pattern_00 + 1" identifier + number_literal)) ;) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "ppVar9->next = (patternlist *)0x0;" (assignment_expression "ppVar9->next = (patternlist *)0x0" (field_expression "ppVar9->next" identifier -> field_identifier) = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = ppVar9;" (assignment_expression "local_34 = ppVar9" identifier = identifier) ;) (expression_statement "ppVar14->next = ppVar9;" (assignment_expression "ppVar14->next = ppVar9" (field_expression "ppVar14->next" identifier -> field_identifier) = identifier) ;) (expression_statement "ppVar14 = pattern_00[1].next;" (assignment_expression "ppVar14 = pattern_00[1].next" identifier = (field_expression "pattern_00[1].next" (subscript_expression "pattern_00[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "local_30 = ppVar12;" (assignment_expression "local_30 = ppVar12" identifier = identifier) ;) (expression_statement "ppVar9 = local_48;" (assignment_expression "ppVar9 = local_48" identifier = identifier) ;) (expression_statement "puVar10 = puVar10 + iVar2;" (assignment_expression "puVar10 = puVar10 + iVar2" identifier = (binary_expression "puVar10 + iVar2" identifier + identifier)) ;) }) (else_clause "else {\nLAB_0001677d:\n    ppVar14 = pattern_00[1].next;\n    ppVar12 = pattern_00 + 1;\n  }" else (compound_statement "{\nLAB_0001677d:\n    ppVar14 = pattern_00[1].next;\n    ppVar12 = pattern_00 + 1;\n  }" { (labeled_statement "LAB_0001677d:\n    ppVar14 = pattern_00[1].next;" statement_identifier : (expression_statement "ppVar14 = pattern_00[1].next;" (assignment_expression "ppVar14 = pattern_00[1].next" identifier = (field_expression "pattern_00[1].next" (subscript_expression "pattern_00[1]" identifier [ number_literal ]) . field_identifier)) ;)) (expression_statement "ppVar12 = pattern_00 + 1;" (assignment_expression "ppVar12 = pattern_00 + 1" identifier = (binary_expression "pattern_00 + 1" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00016783:\n  if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;" statement_identifier : (if_statement "if (ppVar14 == (patternlist *)0x0) goto LAB_000167c0;" if (parenthesized_expression "(ppVar14 == (patternlist *)0x0)" ( (binary_expression "ppVar14 == (patternlist *)0x0" identifier == (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;))) (goto_statement "goto LAB_00016787;" goto statement_identifier ;) (labeled_statement "LAB_000167e0:\n  iVar13 = iVar13 + 1;" statement_identifier : (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;)) (expression_statement "pattern_00 = pattern_00 + 1;" (assignment_expression "pattern_00 = pattern_00 + 1" identifier = (binary_expression "pattern_00 + 1" identifier + number_literal)) ;) (expression_statement "ppVar14 = (patternlist *)0x28;" (assignment_expression "ppVar14 = (patternlist *)0x28" identifier = (cast_expression "(patternlist *)0x28" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0001678c;" goto statement_identifier ;) (while_statement "while( true ) {\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n    if (ppVar14 == (patternlist *)0x0) break;\nLAB_00016b96:\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;\n    pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;\n    pwVar3 = local_44;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;\n    pwVar5 = local_38;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;\n    iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    if (iVar2 == 0) {\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n    if (ppVar14 == (patternlist *)0x0) break;\nLAB_00016b96:\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;\n    pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;\n    pwVar3 = local_44;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;\n    pwVar5 = local_38;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;\n    iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    if (iVar2 == 0) {\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }\n  }" { (expression_statement "ppVar14 = ppVar14->next;" (assignment_expression "ppVar14 = ppVar14->next" identifier = (field_expression "ppVar14->next" identifier -> field_identifier)) ;) (expression_statement "list = ppVar14;" (assignment_expression "list = ppVar14" identifier = identifier) ;) (if_statement "if (ppVar14 == (patternlist *)0x0) break;" if (parenthesized_expression "(ppVar14 == (patternlist *)0x0)" ( (binary_expression "ppVar14 == (patternlist *)0x0" identifier == (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00016b96:\n    *(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;" statement_identifier : (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0xc) = pattern_00" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14 + 1" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = (binary_expression "ppVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ba3" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc));" (assignment_expression "pwVar7 = wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "wcscat(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc))" identifier (argument_list "(*(wchar_t **)(puVar10 + iVar13 + -0x10),*(wchar_t **)(puVar10 + iVar13 + -0xc))" ( (pointer_expression "*(wchar_t **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(wchar_t **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(wchar_t **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0xc) = local_30;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0xc) = local_30" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0xc)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "pwVar3 = local_44;" (assignment_expression "pwVar3 = local_44" identifier = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_34;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_34" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "pwVar5 = local_38;" (assignment_expression "pwVar5 = local_38" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16bb6" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "(pwVar7,pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc))" ( identifier , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar2 == 0) {\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = 0;\n      puVar11 = puVar10 + iVar13;\n      goto LAB_000167c5;\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "puVar11 = puVar10 + iVar13;" (assignment_expression "puVar11 = puVar10 + iVar13" identifier = (binary_expression "puVar10 + iVar13" identifier + identifier)) ;) (goto_statement "goto LAB_000167c5;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00016b66;" goto statement_identifier ;) (labeled_statement "LAB_000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n  } while (ppVar14 != (patternlist *)0x0);" statement_identifier : (do_statement "do {\n    if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n  } while (ppVar14 != (patternlist *)0x0);" do (compound_statement "{\n    if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }\n    ppVar14 = ppVar14->next;\n    list = ppVar14;\n  }" { (if_statement "if (local_38 <= local_44) {\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }" if (parenthesized_expression "(local_38 <= local_44)" ( (binary_expression "local_38 <= local_44" identifier <= identifier) )) (compound_statement "{\n      local_30 = (patternlist *)(uint)local_51;\n      local_40 = local_50 + -1;\n      pwVar3 = local_38;\n      do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);\n    }" { (expression_statement "local_30 = (patternlist *)(uint)local_51;" (assignment_expression "local_30 = (patternlist *)(uint)local_51" identifier = (cast_expression "(patternlist *)(uint)local_51" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)local_51" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_40 = local_50 + -1;" (assignment_expression "local_40 = local_50 + -1" identifier = (binary_expression "local_50 + -1" identifier + number_literal)) ;) (expression_statement "pwVar3 = local_38;" (assignment_expression "pwVar3 = local_38" identifier = identifier) ;) (do_statement "do {\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      } while (pwVar3 <= local_44);" do (compound_statement "{\n        pwVar5 = local_38;\n        *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n        *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n        *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;\n        iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));\n        pwVar7 = local_38;\n        pwVar5 = local_44;\n        if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }\n        pwVar3 = pwVar3 + 1;\n      }" { (expression_statement "pwVar5 = local_38;" (assignment_expression "pwVar5 = local_38" identifier = identifier) ;) (expression_statement "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_30" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a9f" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,\n                                  (_Bool)puVar10[iVar13 + -0x10],*(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)(ppVar14 + 1)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppVar14 + 1)" ( (binary_expression "ppVar14 + 1" identifier + number_literal) ))) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "pwVar7 = local_38;" (assignment_expression "pwVar7 = local_38" identifier = identifier) ;) (expression_statement "pwVar5 = local_44;" (assignment_expression "pwVar5 = local_44" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          list = ppVar14;\n          if (iVar2 == 0) goto LAB_00016acb;\n        }" { (if_statement "if (local_38 == pwVar3) {\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }\n          else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }" if (parenthesized_expression "(local_38 == pwVar3)" ( (binary_expression "local_38 == pwVar3" identifier == identifier) )) (compound_statement "{\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            ppVar14 = local_3c;\n            *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }" { (expression_statement "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "ppVar14 = local_3c;" (assignment_expression "ppVar14 = local_3c" identifier = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_30" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16ac4" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)ppVar14,pwVar7,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)ppVar14" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "ppVar14 = list;" (assignment_expression "ppVar14 = list" identifier = identifier) ;) }) (else_clause "else {\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }" else (compound_statement "{\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            ppVar14 = local_3c;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;\n            iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            pwVar5 = local_44;\n            if (iVar2 == 0) goto LAB_00016acb;\n            uVar15 = 0;\n            if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }\n            *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n            *(uint *)(puVar10 + iVar13 + -0x10) = uVar15;\n            pwVar7 = local_40;\n            *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;\n            iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));\n            ppVar14 = list;\n          }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }" if (parenthesized_expression "(pwVar3[-1] == L'/')" ( (binary_expression "pwVar3[-1] == L'/'" (subscript_expression "pwVar3[-1]" identifier [ number_literal ]) == (char_literal "L'/'" L' character ')) )) (compound_statement "{\n              uVar15 = (uint)((flags & 5U) == 5);\n            }" { (expression_statement "uVar15 = (uint)((flags & 5U) == 5);" (assignment_expression "uVar15 = (uint)((flags & 5U) == 5)" identifier = (call_expression "(uint)((flags & 5U) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((flags & 5U) == 5)" ( (binary_expression "(flags & 5U) == 5" (parenthesized_expression "(flags & 5U)" ( (binary_expression "flags & 5U" identifier & number_literal) )) == number_literal) )))) ;) })) (expression_statement "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + iVar13 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0x10)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "ppVar14 = local_3c;" (assignment_expression "ppVar14 = local_3c" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a45" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)ppVar14,pwVar3,pwVar5,\n                                      (_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)ppVar14" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "pwVar5 = local_44;" (assignment_expression "pwVar5 = local_44" identifier = identifier) ;) (if_statement "if (iVar2 == 0) goto LAB_00016acb;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00016acb;" goto statement_identifier ;)) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (pwVar3[-1] == L'/') {\n              uVar15 = (uint)((flags & 5U) == 5);\n            }" if (parenthesized_expression "(pwVar3[-1] == L'/')" ( (binary_expression "pwVar3[-1] == L'/'" (subscript_expression "pwVar3[-1]" identifier [ number_literal ]) == (char_literal "L'/'" L' character ')) )) (compound_statement "{\n              uVar15 = (uint)((flags & 5U) == 5);\n            }" { (expression_statement "uVar15 = (uint)((flags & 5U) == 5);" (assignment_expression "uVar15 = (uint)((flags & 5U) == 5)" identifier = (call_expression "(uint)((flags & 5U) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((flags & 5U) == 5)" ( (binary_expression "(flags & 5U) == 5" (parenthesized_expression "(flags & 5U)" ( (binary_expression "flags & 5U" identifier & number_literal) )) == number_literal) )))) ;) })) (expression_statement "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar10 + iVar13 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0x10)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "pwVar7 = local_40;" (assignment_expression "pwVar7 = local_40" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16a75" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "(pwVar7,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                      *(int *)(puVar10 + iVar13 + -0xc))" ( identifier , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "ppVar14 = list;" (assignment_expression "ppVar14 = list" identifier = identifier) ;) }))) (expression_statement "list = ppVar14;" (assignment_expression "list = ppVar14" identifier = identifier) ;) (if_statement "if (iVar2 == 0) goto LAB_00016acb;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00016acb;" goto statement_identifier ;)) })) (expression_statement "pwVar3 = pwVar3 + 1;" (assignment_expression "pwVar3 = pwVar3 + 1" identifier = (binary_expression "pwVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pwVar3 <= local_44)" ( (binary_expression "pwVar3 <= local_44" identifier <= identifier) )) ;) })) (expression_statement "ppVar14 = ppVar14->next;" (assignment_expression "ppVar14 = ppVar14->next" identifier = (field_expression "ppVar14->next" identifier -> field_identifier)) ;) (expression_statement "list = ppVar14;" (assignment_expression "list = ppVar14" identifier = identifier) ;) }) while (parenthesized_expression "(ppVar14 != (patternlist *)0x0)" ( (binary_expression "ppVar14 != (patternlist *)0x0" identifier != (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (goto_statement "goto LAB_00016b66;" goto statement_identifier ;) (labeled_statement "LAB_00016acb:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_000167c5;" goto statement_identifier ;) (while_statement "while (pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44) {\nLAB_00016b00:\n    pwVar5 = local_38;\n    *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;\n    iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    pwVar5 = local_44;\n    if (iVar2 != 0) {\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }\n  }" while (parenthesized_expression "(pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44)" ( (comma_expression "pwVar3 = pwVar3 + 1, ppVar14 = local_48, pwVar3 <= local_44" (assignment_expression "pwVar3 = pwVar3 + 1" identifier = (binary_expression "pwVar3 + 1" identifier + number_literal)) , (comma_expression "ppVar14 = local_48, pwVar3 <= local_44" (assignment_expression "ppVar14 = local_48" identifier = identifier) , (binary_expression "pwVar3 <= local_44" identifier <= identifier))) )) (compound_statement "{\nLAB_00016b00:\n    pwVar5 = local_38;\n    *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n    *(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;\n    *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;\n    iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));\n    pwVar5 = local_44;\n    if (iVar2 != 0) {\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }\n  }" { (labeled_statement "LAB_00016b00:\n    pwVar5 = local_38;" statement_identifier : (expression_statement "pwVar5 = local_38;" (assignment_expression "pwVar5 = local_38" identifier = identifier) ;)) (expression_statement "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_30;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = local_30" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b14" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)(ppVar14 + 1),pwVar5,pwVar3,(_Bool)puVar10[iVar13 + -0x10],\n                              *(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)(ppVar14 + 1)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppVar14 + 1)" ( (binary_expression "ppVar14 + 1" identifier + number_literal) ))) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "pwVar5 = local_44;" (assignment_expression "pwVar5 = local_44" identifier = identifier) ;) (if_statement "if (iVar2 != 0) {\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      pppVar1 = &ppVar14->next;\n      ppVar14 = *pppVar1;\n      if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;\n      ppVar14 = local_30;\n      if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }\n      *(uint *)(puVar10 + iVar13 + -0xc) = uVar6;\n      *(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;\n      ppVar14 = local_34;\n      *(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;\n      iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));\n      if (iVar2 == 0) goto LAB_00016acb;\n    }" { (expression_statement "pppVar1 = &ppVar14->next;" (assignment_expression "pppVar1 = &ppVar14->next" identifier = (pointer_expression "&ppVar14->next" & (field_expression "ppVar14->next" identifier -> field_identifier))) ;) (expression_statement "ppVar14 = *pppVar1;" (assignment_expression "ppVar14 = *pppVar1" identifier = (pointer_expression "*pppVar1" * identifier)) ;) (if_statement "if (*pppVar1 != (patternlist *)0x0) goto LAB_00016b00;" if (parenthesized_expression "(*pppVar1 != (patternlist *)0x0)" ( (binary_expression "*pppVar1 != (patternlist *)0x0" (pointer_expression "*pppVar1" * identifier) != (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016b00;" goto statement_identifier ;)) (expression_statement "ppVar14 = local_30;" (assignment_expression "ppVar14 = local_30" identifier = identifier) ;) (if_statement "if ((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')) {\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }" if (parenthesized_expression "((local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/'))" ( (binary_expression "(local_38 != pwVar3) && (ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')" (parenthesized_expression "(local_38 != pwVar3)" ( (binary_expression "local_38 != pwVar3" identifier != identifier) )) && (parenthesized_expression "(ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/')" ( (comma_expression "ppVar14 = (patternlist *)0x0, pwVar3[-1] == L'/'" (assignment_expression "ppVar14 = (patternlist *)0x0" identifier = (cast_expression "(patternlist *)0x0" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "pwVar3[-1] == L'/'" (subscript_expression "pwVar3[-1]" identifier [ number_literal ]) == (char_literal "L'/'" L' character '))) ))) )) (compound_statement "{\n        ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);\n      }" { (expression_statement "ppVar14 = (patternlist *)(uint)((flags & 5U) == 5);" (assignment_expression "ppVar14 = (patternlist *)(uint)((flags & 5U) == 5)" identifier = (cast_expression "(patternlist *)(uint)((flags & 5U) == 5)" ( (type_descriptor "patternlist *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((flags & 5U) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((flags & 5U) == 5)" ( (binary_expression "(flags & 5U) == 5" (parenthesized_expression "(flags & 5U)" ( (binary_expression "flags & 5U" identifier & number_literal) )) == number_literal) ))))) ;) })) (expression_statement "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6;" (assignment_expression "*(uint *)(puVar10 + iVar13 + -0xc) = uVar6" (pointer_expression "*(uint *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(uint *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14;" (assignment_expression "*(patternlist **)(puVar10 + iVar13 + -0x10) = ppVar14" (pointer_expression "*(patternlist **)(puVar10 + iVar13 + -0x10)" * (cast_expression "(patternlist **)(puVar10 + iVar13 + -0x10)" ( (type_descriptor "patternlist **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + iVar13 + -0x10)" ( (binary_expression "puVar10 + iVar13 + -0x10" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "ppVar14 = local_34;" (assignment_expression "ppVar14 = local_34" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53;" (assignment_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14) = 0x16b53" (pointer_expression "*(undefined4 *)(puVar10 + iVar13 + -0x14)" * (cast_expression "(undefined4 *)(puVar10 + iVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0x14)" ( (binary_expression "puVar10 + iVar13 + -0x14" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc));" (assignment_expression "iVar2 = internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" identifier = (call_expression "internal_fnwmatch((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" identifier (argument_list "((wchar_t *)ppVar14,pwVar3,pwVar5,(_Bool)puVar10[iVar13 + -0x10],\n                                *(int *)(puVar10 + iVar13 + -0xc))" ( (cast_expression "(wchar_t *)ppVar14" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (cast_expression "(_Bool)puVar10[iVar13 + -0x10]" ( (type_descriptor "_Bool" type_identifier) ) (subscript_expression "puVar10[iVar13 + -0x10]" identifier [ (binary_expression "iVar13 + -0x10" identifier + number_literal) ])) , (pointer_expression "*(int *)(puVar10 + iVar13 + -0xc)" * (cast_expression "(int *)(puVar10 + iVar13 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + iVar13 + -0xc)" ( (binary_expression "puVar10 + iVar13 + -0xc" (binary_expression "puVar10 + iVar13" identifier + identifier) + number_literal) )))) )))) ;) (if_statement "if (iVar2 == 0) goto LAB_00016acb;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00016acb;" goto statement_identifier ;)) })) })) (labeled_statement "LAB_00016b66:\n  iVar2 = 1;" statement_identifier : (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;)) (expression_statement "puVar11 = puVar10 + iVar13;" (assignment_expression "puVar11 = puVar10 + iVar13" identifier = (binary_expression "puVar10 + iVar13" identifier + identifier)) ;) (labeled_statement "LAB_000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar11 + -4) = 0x16c2c;\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar11 + -4) = 0x16c2c;\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar11 + -4) = 0x16c2c;\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "*(undefined4 *)(puVar11 + -4) = 0x16c2c;" (assignment_expression "*(undefined4 *)(puVar11 + -4) = 0x16c2c" (pointer_expression "*(undefined4 *)(puVar11 + -4)" * (cast_expression "(undefined4 *)(puVar11 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -4)" ( (binary_expression "puVar11 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "undefined4 __regparm3\nFUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)\n\n{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined4 __regparm3\nFUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)\n\n{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)" identifier (parameter_list "(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "wchar_t *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "int **param_6" primitive_type (pointer_declarator "**param_6" * (pointer_declarator "*param_6" * identifier))) ))) (compound_statement "{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "wchar_t *pwVar3;" type_identifier (pointer_declarator "*pwVar3" * identifier) ;) (declaration "int **ppiVar4;" primitive_type (pointer_declarator "**ppiVar4" * (pointer_declarator "*ppiVar4" * identifier)) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int **ppiVar6;" primitive_type (pointer_declarator "**ppiVar6" * (pointer_declarator "*ppiVar6" * identifier)) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int **ppiVar11;" primitive_type (pointer_declarator "**ppiVar11" * (pointer_declarator "*ppiVar11" * identifier)) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int **ppiVar13;" primitive_type (pointer_declarator "**ppiVar13" * (pointer_declarator "*ppiVar13" * identifier)) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined1 auStack_5c [11];" type_identifier (array_declarator "auStack_5c [11]" identifier [ number_literal ]) ;) (declaration "byte local_51;" type_identifier identifier ;) (declaration "wchar_t *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "wchar_t *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "int **local_3c;" primitive_type (pointer_declarator "**local_3c" * (pointer_declarator "*local_3c" * identifier)) ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "int **local_34;" primitive_type (pointer_declarator "**local_34" * (pointer_declarator "*local_34" * identifier)) ;) (declaration "int **local_30;" primitive_type (pointer_declarator "**local_30" * (pointer_declarator "*local_30" * identifier)) ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1670d;" (assignment_expression "uStack_14 = 0x1670d" identifier = number_literal) ;) (expression_statement "local_44 = param_4;" (assignment_expression "local_44 = param_4" identifier = identifier) ;) (expression_statement "local_4c = param_5;" (assignment_expression "local_4c = param_5" identifier = identifier) ;) (expression_statement "local_51 = (byte)param_5;" (assignment_expression "local_51 = (byte)param_5" identifier = (cast_expression "(byte)param_5" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (expression_statement "local_38 = param_3;" (assignment_expression "local_38 = param_3" identifier = identifier) ;) (expression_statement "local_3c = (int **)wcslen(param_2);" (assignment_expression "local_3c = (int **)wcslen(param_2)" identifier = (cast_expression "(int **)wcslen(param_2)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "wcslen(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "puVar9 = auStack_5c;" (assignment_expression "puVar9 = auStack_5c" identifier = identifier) ;) (expression_statement "piVar14 = (int *)param_2[1];" (assignment_expression "piVar14 = (int *)param_2[1]" identifier = (cast_expression "(int *)param_2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }" { (expression_statement "ppiVar6 = (int **)(param_2 + 1);" (assignment_expression "ppiVar6 = (int **)(param_2 + 1)" identifier = (cast_expression "(int **)(param_2 + 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) )))) ;) (expression_statement "local_34 = &local_24;" (assignment_expression "local_34 = &local_24" identifier = (pointer_expression "&local_24" & identifier)) ;) (expression_statement "piVar7 = (int *)0xc0000601;" (assignment_expression "piVar7 = (int *)0xc0000601" identifier = (cast_expression "(int *)0xc0000601" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_30 = ppiVar6;" (assignment_expression "local_30 = ppiVar6" identifier = identifier) ;) (expression_statement "puVar9 = auStack_5c;" (assignment_expression "puVar9 = auStack_5c" identifier = identifier) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00016787:\n    ppiVar4 = local_30;" statement_identifier : (expression_statement "ppiVar4 = local_30;" (assignment_expression "ppiVar4 = local_30" identifier = identifier) ;)) (expression_statement "ppiVar11 = ppiVar6;" (assignment_expression "ppiVar11 = ppiVar6" identifier = identifier) ;) (if_statement "if (piVar14 != (int *)0x5b) goto LAB_0001678c;" if (parenthesized_expression "(piVar14 != (int *)0x5b)" ( (binary_expression "piVar14 != (int *)0x5b" identifier != (cast_expression "(int *)0x5b" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001678c;" goto statement_identifier ;)) (if_statement "if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }" if (parenthesized_expression "(DAT_00022330 == 0)" ( (binary_expression "DAT_00022330 == 0" identifier == number_literal) )) (compound_statement "{\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }" { (expression_statement "local_48 = piVar7;" (assignment_expression "local_48 = piVar7" identifier = identifier) ;) (expression_statement "*(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";" (assignment_expression "*(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT"" (pointer_expression "*(char **)(puVar9 + -0x10)" * (cast_expression "(char **)(puVar9 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x10)" ( (binary_expression "puVar9 + -0x10" identifier + number_literal) )))) = (string_literal ""POSIXLY_CORRECT"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + -0x14) = 0x168fa;" (assignment_expression "*(undefined4 *)(puVar9 + -0x14) = 0x168fa" (pointer_expression "*(undefined4 *)(puVar9 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -0x14)" ( (binary_expression "puVar9 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar2 = getenv(*(char **)(puVar9 + -0x10));" (assignment_expression "pcVar2 = getenv(*(char **)(puVar9 + -0x10))" identifier = (call_expression "getenv(*(char **)(puVar9 + -0x10))" identifier (argument_list "(*(char **)(puVar9 + -0x10))" ( (pointer_expression "*(char **)(puVar9 + -0x10)" * (cast_expression "(char **)(puVar9 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x10)" ( (binary_expression "puVar9 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;" (assignment_expression "DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1" identifier = (binary_expression "-(uint)(pcVar2 == (char *)0x0) | 1" (unary_expression "-(uint)(pcVar2 == (char *)0x0)" - (call_expression "(uint)(pcVar2 == (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) | number_literal)) ;) (expression_statement "piVar7 = local_48;" (assignment_expression "piVar7 = local_48" identifier = identifier) ;) })) (expression_statement "piVar14 = ppiVar6[1];" (assignment_expression "piVar14 = ppiVar6[1]" identifier = (subscript_expression "ppiVar6[1]" identifier [ number_literal ])) ;) (if_statement "if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }" if (parenthesized_expression "((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e))))" ( (binary_expression "(piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))" (parenthesized_expression "(piVar14 == (int *)0x21)" ( (binary_expression "piVar14 == (int *)0x21" identifier == (cast_expression "(int *)0x21" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))" ( (parenthesized_expression "((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e))" ( (binary_expression "(int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)" (binary_expression "(int)DAT_00022330 < 0" (cast_expression "(int)DAT_00022330" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) && (parenthesized_expression "(piVar14 == (int *)0x5e)" ( (binary_expression "piVar14 == (int *)0x5e" identifier == (cast_expression "(int *)0x5e" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }" { (expression_statement "ppiVar4 = ppiVar6 + 2;" (assignment_expression "ppiVar4 = ppiVar6 + 2" identifier = (binary_expression "ppiVar6 + 2" identifier + number_literal)) ;) (expression_statement "piVar14 = ppiVar6[2];" (assignment_expression "piVar14 = ppiVar6[2]" identifier = (subscript_expression "ppiVar6[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      ppiVar4 = ppiVar6 + 1;\n    }" else (compound_statement "{\n      ppiVar4 = ppiVar6 + 1;\n    }" { (expression_statement "ppiVar4 = ppiVar6 + 1;" (assignment_expression "ppiVar4 = ppiVar6 + 1" identifier = (binary_expression "ppiVar6 + 1" identifier + number_literal)) ;) }))) (if_statement "if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }" if (parenthesized_expression "(piVar14 == (int *)0x5d)" ( (binary_expression "piVar14 == (int *)0x5d" identifier == (cast_expression "(int *)0x5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }" { (expression_statement "piVar14 = ppiVar4[1];" (assignment_expression "piVar14 = ppiVar4[1]" identifier = (subscript_expression "ppiVar4[1]" identifier [ number_literal ])) ;) (expression_statement "ppiVar4 = ppiVar4 + 1;" (assignment_expression "ppiVar4 = ppiVar4 + 1" identifier = (binary_expression "ppiVar4 + 1" identifier + number_literal)) ;) })) (while_statement "while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }" while (parenthesized_expression "(ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d)" ( (comma_expression "ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d" (assignment_expression "ppiVar6 = ppiVar4 + 1" identifier = (binary_expression "ppiVar4 + 1" identifier + number_literal)) , (binary_expression "piVar14 != (int *)0x5d" identifier != (cast_expression "(int *)0x5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }" { (if_statement "if (piVar14 == (int *)0x0) goto LAB_000167c0;" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "ppiVar4 = ppiVar6;" (assignment_expression "ppiVar4 = ppiVar6" identifier = identifier) ;) (expression_statement "piVar14 = *ppiVar6;" (assignment_expression "piVar14 = *ppiVar6" identifier = (pointer_expression "*ppiVar6" * identifier)) ;) })) (expression_statement "piVar14 = ppiVar4[1];" (assignment_expression "piVar14 = ppiVar4[1]" identifier = (subscript_expression "ppiVar4[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00016783;" goto statement_identifier ;) })) (labeled_statement "LAB_000167c0:\n  uVar1 = 0xffffffff;" statement_identifier : (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;) (labeled_statement "LAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" statement_identifier : (if_statement "if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" if (parenthesized_expression "((uint)((int)piVar14 + L'\xffffffdf') < 0x20)" ( (binary_expression "(uint)((int)piVar14 + L'\xffffffdf') < 0x20" (call_expression "(uint)((int)piVar14 + L'\xffffffdf')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar14 + L'\xffffffdf')" ( (binary_expression "(int)piVar14 + L'\xffffffdf'" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (char_literal "L'\xffffffdf'" L' escape_sequence character character character character ')) ))) < number_literal) )) (compound_statement "{\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" { (if_statement "if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;" if (parenthesized_expression "((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28))" ( (binary_expression "(((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)" (parenthesized_expression "(((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0)" ( (binary_expression "((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0" (parenthesized_expression "((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1)" ( (binary_expression "(uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1" (binary_expression "(uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU)" (cast_expression "(uint)piVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "((int)piVar14 + L'\xffffffdf' & 0x1fU)" ( (binary_expression "(int)piVar14 + L'\xffffffdf' & 0x1fU" (binary_expression "(int)piVar14 + L'\xffffffdf'" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + (char_literal "L'\xffffffdf'" L' escape_sequence character character character character ')) & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(ppiVar11[1] == (int *)0x28)" ( (binary_expression "ppiVar11[1] == (int *)0x28" (subscript_expression "ppiVar11[1]" identifier [ number_literal ]) == (cast_expression "(int *)0x28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_000167e0;" goto statement_identifier ;)) (if_statement "if (piVar14 != (int *)0x29) goto LAB_0001677d;" if (parenthesized_expression "(piVar14 != (int *)0x29)" ( (binary_expression "piVar14 != (int *)0x29" identifier != (cast_expression "(int *)0x29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001677d;" goto statement_identifier ;)) (if_statement "if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" { (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" identifier = (subscript_expression "ppiVar11[1]" identifier [ number_literal ])) ;) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (piVar14 != (int *)0x0) goto LAB_00016787;" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00016787;" goto statement_identifier ;)) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;) })) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" if (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" ( (binary_expression "1 < (int)local_40 - 0x3fU" number_literal < (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) )) (compound_statement "{\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" { (expression_statement "local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);" (assignment_expression "local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" identifier = (cast_expression "(int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (binary_expression "((int)ppiVar11 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)ppiVar11 - (int)local_30 >> 2)" ( (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal) )))) ;) })) (if_statement "if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;" if (parenthesized_expression "((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c))" ( (binary_expression "(0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)" (parenthesized_expression "(0x1f3b < (uint)((int)local_3c * 4))" ( (binary_expression "0x1f3b < (uint)((int)local_3c * 4)" number_literal < (call_expression "(uint)((int)local_3c * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)local_3c * 4)" ( (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) )) || (parenthesized_expression "((int **)0x3fffffff < local_3c)" ( (binary_expression "(int **)0x3fffffff < local_3c" (cast_expression "(int **)0x3fffffff" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) < identifier) ))) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0)" identifier = (unary_expression "-((int)local_3c * 4 + 0x1fU & 0xfffffff0)" - (parenthesized_expression "((int)local_3c * 4 + 0x1fU & 0xfffffff0)" ( (binary_expression "(int)local_3c * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)local_3c * 4 + 0x1fU" (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (expression_statement "piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);" (assignment_expression "piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" identifier = (cast_expression "(int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" ( (binary_expression "(uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar9 + iVar12 + 0xf)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9 + iVar12 + 0xf)" ( (binary_expression "puVar9 + iVar12 + 0xf" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "*(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar9 + iVar12 + -8)" * (cast_expression "(int *)(puVar9 + iVar12 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;" (assignment_expression "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1" (pointer_expression "*(int **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" identifier = (call_expression "wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" identifier (argument_list "(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" ( (pointer_expression "*(wchar_t **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(wchar_t **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(wchar_t **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(size_t *)(puVar9 + iVar12 + -8)" * (cast_expression "(size_t *)(puVar9 + iVar12 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "uVar8 = local_4c;" (assignment_expression "uVar8 = local_4c" identifier = identifier) ;) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*piVar14 = 0;" (assignment_expression "*piVar14 = 0" (pointer_expression "*piVar14" * identifier) = number_literal) ;) (expression_statement "*local_34 = piVar14;" (assignment_expression "*local_34 = piVar14" (pointer_expression "*local_34" * identifier) = identifier) ;) (expression_statement "local_48 = local_24;" (assignment_expression "local_48 = local_24" identifier = identifier) ;) (if_statement "if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" if (parenthesized_expression "(local_24 == (int *)0x0)" ( (binary_expression "local_24 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" { (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x454" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "list != NULL"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""list != NULL"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" identifier (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" ( (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" * (cast_expression "(uint *)(puVar9 + iVar12 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) ))) ;) })) (if_statement "if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" if (parenthesized_expression "(ppiVar11[-1] != (int *)0x29)" ( (binary_expression "ppiVar11[-1] != (int *)0x29" (subscript_expression "ppiVar11[-1]" identifier [ number_literal ]) != (cast_expression "(int *)0x29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" { (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x455" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""p[-1] == L_(\')\')"" " string_content escape_sequence string_content escape_sequence string_content ")) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016c6a" & identifier)) ;) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" identifier (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" ( (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" * (cast_expression "(uint *)(puVar9 + iVar12 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) ))) ;) })) (switch_statement "switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }" switch (parenthesized_expression "(local_40)" ( identifier )) (compound_statement "{\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }" { (case_statement "case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;" case (cast_expression "(wchar_t *)0x21" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (if_statement "if (local_44 < local_38) goto code_r0x00016b66;" if (parenthesized_expression "(local_44 < local_38)" ( (binary_expression "local_44 < local_38" identifier < identifier) )) (goto_statement "goto code_r0x00016b66;" goto statement_identifier ;)) (expression_statement "local_30 = (int **)(local_4c & 0xff);" (assignment_expression "local_30 = (int **)(local_4c & 0xff)" identifier = (cast_expression "(int **)(local_4c & 0xff)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_4c & 0xff)" ( (binary_expression "local_4c & 0xff" identifier & number_literal) )))) ;) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" identifier = identifier) ;) (expression_statement "local_34 = ppiVar11;" (assignment_expression "local_34 = ppiVar11" identifier = identifier) ;) (expression_statement "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb)" identifier = (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 0xfffffffb)" ( (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = local_38;" (assignment_expression "uVar8 = local_38" identifier = identifier) ;) (if_statement "if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }" if (parenthesized_expression "(((uint)param_6 & 1) != 0)" ( (binary_expression "((uint)param_6 & 1) != 0" (parenthesized_expression "((uint)param_6 & 1)" ( (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        ppiVar6 = param_6;\n      }" { (expression_statement "ppiVar6 = param_6;" (assignment_expression "ppiVar6 = param_6" identifier = identifier) ;) })) (goto_statement "goto code_r0x00016b00;" goto statement_identifier ;)) (case_statement "default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" default : (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""ext_wmatch"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""lib/fnmatch_loop.c"" " string_content ")) ;) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\""" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (string_literal ""! \"Invalid extended matching operator\""" " string_content escape_sequence string_content escape_sequence ")) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" identifier (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" ( (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" * (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" * (cast_expression "(uint *)(puVar9 + iVar12 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -8)" ( (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) , (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" * (cast_expression "(char **)(puVar9 + iVar12 + -4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -4)" ( (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) ))) ;)) (case_statement "case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;" case (cast_expression "(wchar_t *)0x2a" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "uVar8 = local_4c & 0xff;" (assignment_expression "uVar8 = local_4c & 0xff" identifier = (binary_expression "local_4c & 0xff" identifier & number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = param_6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = param_6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar8;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar8" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_000169d6" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;))) (case_statement "case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;" case (cast_expression "(wchar_t *)0x2b" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "local_34 = (int **)((uint)param_6 & 1);" (assignment_expression "local_34 = (int **)((uint)param_6 & 1)" identifier = (cast_expression "(int **)((uint)param_6 & 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 1)" ( (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" identifier = identifier) ;) (expression_statement "local_3c = ppiVar11;" (assignment_expression "local_3c = ppiVar11" identifier = identifier) ;) (expression_statement "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb)" identifier = (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 0xfffffffb)" ( (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }" if (parenthesized_expression "(local_34 != (int **)0x0)" ( (binary_expression "local_34 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        ppiVar6 = param_6;\n      }" { (expression_statement "ppiVar6 = param_6;" (assignment_expression "ppiVar6 = param_6" identifier = identifier) ;) })) (goto_statement "goto code_r0x000169fc;" goto statement_identifier ;)) (case_statement "case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;" case (cast_expression "(wchar_t *)0x3f" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (expression_statement "uVar15 = local_4c & 0xff;" (assignment_expression "uVar15 = local_4c & 0xff" identifier = (binary_expression "local_4c & 0xff" identifier & number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = param_6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = param_6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016bdc" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) goto code_r0x00016b74;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00016b74;" goto statement_identifier ;)) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;)) (case_statement "case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }" case (cast_expression "(wchar_t *)0x40" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) : (labeled_statement "code_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);" statement_identifier : (expression_statement "local_34 = (int **)(uVar8 & 0xff);" (assignment_expression "local_34 = (int **)(uVar8 & 0xff)" identifier = (cast_expression "(int **)(uVar8 & 0xff)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) )))) ;)) (expression_statement "local_30 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "local_30 = (int **)((uint)param_6 & 0xfffffffb)" identifier = (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)param_6 & 0xfffffffb)" ( (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" identifier = identifier) ;) (if_statement "if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }" if (parenthesized_expression "(((uint)param_6 & 1) != 0)" ( (binary_expression "((uint)param_6 & 1) != 0" (parenthesized_expression "((uint)param_6 & 1)" ( (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        local_30 = param_6;\n      }" { (expression_statement "local_30 = param_6;" (assignment_expression "local_30 = param_6" identifier = identifier) ;) }))) })) (goto_statement "goto code_r0x00016b96;" goto statement_identifier ;) }))) (if_statement "if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" if (parenthesized_expression "((piVar14 == (int *)0x7c) && (iVar12 == 0))" ( (binary_expression "(piVar14 == (int *)0x7c) && (iVar12 == 0)" (parenthesized_expression "(piVar14 == (int *)0x7c)" ( (binary_expression "piVar14 == (int *)0x7c" identifier == (cast_expression "(int *)0x7c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }" { (expression_statement "ppiVar6 = local_3c;" (assignment_expression "ppiVar6 = local_3c" identifier = identifier) ;) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" if (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" ( (binary_expression "1 < (int)local_40 - 0x3fU" number_literal < (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) )) (compound_statement "{\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" { (expression_statement "ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);" (assignment_expression "ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" identifier = (cast_expression "(int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(((int)ppiVar11 - (int)local_30 >> 2) + 1)" ( (binary_expression "((int)ppiVar11 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)ppiVar11 - (int)local_30 >> 2)" ( (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) + number_literal) )))) ;) })) (expression_statement "local_48 = piVar7;" (assignment_expression "local_48 = piVar7" identifier = identifier) ;) (if_statement "if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;" if (parenthesized_expression "((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6))" ( (binary_expression "(0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)" (parenthesized_expression "(0x1f3b < (uint)((int)ppiVar6 * 4))" ( (binary_expression "0x1f3b < (uint)((int)ppiVar6 * 4)" number_literal < (call_expression "(uint)((int)ppiVar6 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ppiVar6 * 4)" ( (binary_expression "(int)ppiVar6 * 4" (cast_expression "(int)ppiVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) )) || (parenthesized_expression "((int **)0x3fffffff < ppiVar6)" ( (binary_expression "(int **)0x3fffffff < ppiVar6" (cast_expression "(int **)0x3fffffff" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) < identifier) ))) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;)) (expression_statement "iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" identifier = (unary_expression "-((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" - (parenthesized_expression "((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" ( (binary_expression "(int)ppiVar6 * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)ppiVar6 * 4 + 0x1fU" (binary_expression "(int)ppiVar6 * 4" (cast_expression "(int)ppiVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);" (assignment_expression "ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" identifier = (cast_expression "(int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" ( (binary_expression "(uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar9 + iVar5 + 0xf)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar9 + iVar5 + 0xf)" ( (binary_expression "puVar9 + iVar5 + 0xf" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "*(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar9 + iVar5 + -8)" * (cast_expression "(int *)(puVar9 + iVar5 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar5 + -8)" ( (binary_expression "puVar9 + iVar5 + -8" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "*(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar5 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar5 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar5 + -0xc)" ( (binary_expression "puVar9 + iVar5 + -0xc" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;" (assignment_expression "*(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1" (pointer_expression "*(int ***)(puVar9 + iVar5 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar5 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar5 + -0x10)" ( (binary_expression "puVar9 + iVar5 + -0x10" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = (binary_expression "ppiVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;" (assignment_expression "*(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5" (pointer_expression "*(undefined4 *)(puVar9 + iVar5 + -0x14)" * (cast_expression "(undefined4 *)(puVar9 + iVar5 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar5 + -0x14)" ( (binary_expression "puVar9 + iVar5 + -0x14" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" identifier = (call_expression "wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" identifier (argument_list "(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" ( (pointer_expression "*(wchar_t **)(puVar9 + iVar5 + -0x10)" * (cast_expression "(wchar_t **)(puVar9 + iVar5 + -0x10)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar5 + -0x10)" ( (binary_expression "puVar9 + iVar5 + -0x10" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) , (pointer_expression "*(wchar_t **)(puVar9 + iVar5 + -0xc)" * (cast_expression "(wchar_t **)(puVar9 + iVar5 + -0xc)" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar5 + -0xc)" ( (binary_expression "puVar9 + iVar5 + -0xc" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) , (pointer_expression "*(size_t *)(puVar9 + iVar5 + -8)" * (cast_expression "(size_t *)(puVar9 + iVar5 + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar5 + -8)" ( (binary_expression "puVar9 + iVar5 + -8" (binary_expression "puVar9 + iVar5" identifier + identifier) + number_literal) )))) )))) ;) (expression_statement "ppiVar4 = local_34;" (assignment_expression "ppiVar4 = local_34" identifier = identifier) ;) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" * identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "*ppiVar13 = (int *)0x0;" (assignment_expression "*ppiVar13 = (int *)0x0" (pointer_expression "*ppiVar13" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = ppiVar13;" (assignment_expression "local_34 = ppiVar13" identifier = identifier) ;) (expression_statement "*ppiVar4 = (int *)ppiVar13;" (assignment_expression "*ppiVar4 = (int *)ppiVar13" (pointer_expression "*ppiVar4" * identifier) = (cast_expression "(int *)ppiVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" identifier = (subscript_expression "ppiVar11[1]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "local_30 = ppiVar6;" (assignment_expression "local_30 = ppiVar6" identifier = identifier) ;) (expression_statement "piVar7 = local_48;" (assignment_expression "piVar7 = local_48" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + iVar5;" (assignment_expression "puVar9 = puVar9 + iVar5" identifier = (binary_expression "puVar9 + iVar5" identifier + identifier)) ;) }) (else_clause "else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" else (compound_statement "{\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" { (labeled_statement "LAB_0001677d:\n    piVar14 = ppiVar11[1];" statement_identifier : (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" identifier = (subscript_expression "ppiVar11[1]" identifier [ number_literal ])) ;)) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) }))) (labeled_statement "LAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;" statement_identifier : (if_statement "if (piVar14 == (int *)0x0) goto LAB_000167c0;" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000167c0;" goto statement_identifier ;))) (goto_statement "goto LAB_00016787;" goto statement_identifier ;) (labeled_statement "LAB_000167e0:\n  iVar12 = iVar12 + 1;" statement_identifier : (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;)) (expression_statement "ppiVar11 = ppiVar11 + 1;" (assignment_expression "ppiVar11 = ppiVar11 + 1" identifier = (binary_expression "ppiVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = (int *)0x28;" (assignment_expression "piVar14 = (int *)0x28" identifier = (cast_expression "(int *)0x28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0001678c;" goto statement_identifier ;) (while_statement "while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }" while (parenthesized_expression "(local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0)" ( (comma_expression "local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0" (assignment_expression "local_24 = (int *)*piVar14" identifier = (cast_expression "(int *)*piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) , (comma_expression "piVar14 = local_24, local_24 != (int *)0x0" (assignment_expression "piVar14 = local_24" identifier = identifier) , (binary_expression "local_24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) )) (compound_statement "{\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }" { (labeled_statement "code_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;" statement_identifier : (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;" (assignment_expression "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1" (pointer_expression "*(int **)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int **)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016ba3" & identifier)) ;) (expression_statement "func_0x00012380();" (call_expression "func_0x00012380()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_34;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_34" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016bb6" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;) })) })) (goto_statement "goto code_r0x00016b66;" goto statement_identifier ;) (labeled_statement "code_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);" statement_identifier : (do_statement "do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);" do (compound_statement "{\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  }" { (if_statement "if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }" if (parenthesized_expression "(local_38 <= local_44)" ( (binary_expression "local_38 <= local_44" identifier <= identifier) )) (compound_statement "{\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }" { (expression_statement "local_30 = (int **)(uint)local_51;" (assignment_expression "local_30 = (int **)(uint)local_51" identifier = (cast_expression "(int **)(uint)local_51" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (cast_expression "(uint)local_51" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "local_40 = local_50 + -1;" (assignment_expression "local_40 = local_50 + -1" identifier = (binary_expression "local_50 + -1" identifier + number_literal)) ;) (expression_statement "uVar8 = local_38;" (assignment_expression "uVar8 = local_38" identifier = identifier) ;) (do_statement "do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);" do (compound_statement "{\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      }" { (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016a9f" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }" { (if_statement "if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" if (parenthesized_expression "(local_38 == uVar8)" ( (binary_expression "local_38 == uVar8" identifier == identifier) )) (compound_statement "{\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" { (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016ac4" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" identifier = identifier) ;) }) (else_clause "else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" else (compound_statement "{\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" if (parenthesized_expression "(*(int *)(uVar8 - 4) == 0x2f)" ( (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" * (cast_expression "(int *)(uVar8 - 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 - 4)" ( (binary_expression "uVar8 - 4" identifier - number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" { (expression_statement "uVar15 = (uint)(((uint)param_6 & 5) == 5);" (assignment_expression "uVar15 = (uint)(((uint)param_6 & 5) == 5)" identifier = (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((uint)param_6 & 5) == 5)" ( (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" ( (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )))) ;) })) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016a45" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;)) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" if (parenthesized_expression "(*(int *)(uVar8 - 4) == 0x2f)" ( (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" * (cast_expression "(int *)(uVar8 - 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 - 4)" ( (binary_expression "uVar8 - 4" identifier - number_literal) )))) == number_literal) )) (compound_statement "{\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" { (expression_statement "uVar15 = (uint)(((uint)param_6 & 5) == 5);" (assignment_expression "uVar15 = (uint)(((uint)param_6 & 5) == 5)" identifier = (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((uint)param_6 & 5) == 5)" ( (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" ( (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )))) ;) })) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" * (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016a75" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" identifier = identifier) ;) }))) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" identifier = identifier) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;)) })) (expression_statement "uVar8 = uVar8 + 4;" (assignment_expression "uVar8 = uVar8 + 4" identifier = (binary_expression "uVar8 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 <= local_44)" ( (binary_expression "uVar8 <= local_44" identifier <= identifier) )) ;) })) (expression_statement "local_24 = (int *)*piVar14;" (assignment_expression "local_24 = (int *)*piVar14" identifier = (cast_expression "(int *)*piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ;) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" identifier = identifier) ;) }) while (parenthesized_expression "(local_24 != (int *)0x0)" ( (binary_expression "local_24 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (goto_statement "goto code_r0x00016b66;" goto statement_identifier ;) (labeled_statement "code_r0x00016acb:\n  uVar1 = 0;" statement_identifier : (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;)) (goto_statement "goto code_r0x000167c5;" goto statement_identifier ;) (while_statement "while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }" while (parenthesized_expression "(uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44)" ( (comma_expression "uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44" (assignment_expression "uVar8 = uVar8 + 4" identifier = (binary_expression "uVar8 + 4" identifier + number_literal)) , (comma_expression "piVar14 = local_48, uVar8 <= local_44" (assignment_expression "piVar14 = local_48" identifier = identifier) , (binary_expression "uVar8 <= local_44" identifier <= identifier))) )) (compound_statement "{\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }" { (labeled_statement "code_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" statement_identifier : (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;)) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016b14" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }" { (expression_statement "piVar14 = (int *)*piVar14;" (assignment_expression "piVar14 = (int *)*piVar14" identifier = (cast_expression "(int *)*piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar14" * identifier))) ;) (if_statement "if (piVar14 != (int *)0x0) goto code_r0x00016b00;" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00016b00;" goto statement_identifier ;)) (expression_statement "ppiVar4 = local_30;" (assignment_expression "ppiVar4 = local_30" identifier = identifier) ;) (if_statement "if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }" if (parenthesized_expression "((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f))" ( (binary_expression "(local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)" (parenthesized_expression "(local_38 != uVar8)" ( (binary_expression "local_38 != uVar8" identifier != identifier) )) && (parenthesized_expression "(ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)" ( (comma_expression "ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f" (assignment_expression "ppiVar4 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) , (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" * (cast_expression "(int *)(uVar8 - 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 - 4)" ( (binary_expression "uVar8 - 4" identifier - number_literal) )))) == number_literal)) ))) )) (compound_statement "{\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }" { (expression_statement "ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);" (assignment_expression "ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5)" identifier = (cast_expression "(int **)(uint)(((uint)param_6 & 5) == 5)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((uint)param_6 & 5) == 5)" ( (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" ( (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) ))))) ;) })) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0xc)" ( (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" * (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x10)" ( (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" * (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + iVar12 + -0x14)" ( (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" identifier + identifier) + number_literal) )))) = (pointer_expression "&UNK_00016b53" & identifier)) ;) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" identifier = (call_expression "FUN_00016c70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00016acb;" goto statement_identifier ;)) })) })) (labeled_statement "code_r0x00016b66:\n  uVar1 = 1;" statement_identifier : (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;)) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" identifier = (binary_expression "puVar9 + iVar12" identifier + identifier)) ;) (labeled_statement "code_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" { (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x16c2c;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x16c2c" (pointer_expression "*(undefined4 *)(puVar10 + -4)" * (cast_expression "(undefined4 *)(puVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + -4)" ( (binary_expression "puVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001a150();" (call_expression "FUN_0001a150()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * IDENT))) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (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 * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 * (abstract_pointer_declarator *))) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (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)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (string_literal " string_content ")) ;) (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 IDENT (argument_list ( (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 (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal L' escape_sequence character character character character ')) ))) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal L' escape_sequence character character character character ')) & LIT) ))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) + LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) < IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * 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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (binary_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 IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal L' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (string_literal " string_content ")) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (string_literal " string_content ")) ;) (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) )))) = (string_literal " string_content ")) ;) (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 (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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) )))) = (string_literal " string_content ")) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (string_literal " string_content ")) ;) (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) )))) = (string_literal " string_content escape_sequence string_content escape_sequence string_content ")) ;) (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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ))) ;) })) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;)) (case_statement default : (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) )))) = (string_literal " string_content ")) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (string_literal " string_content ")) ;) (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) )))) = (string_literal " string_content escape_sequence string_content escape_sequence ")) ;) (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 (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ))) ;)) (case_statement case (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) : (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 * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (case_statement case (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;)) (case_statement case (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) : (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 * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;)) (case_statement case (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) : (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) < IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = (binary_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 IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal L' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (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 (binary_expression IDENT + IDENT) + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = 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) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 __regparm3\nFUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)\n\n{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00016700(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)" (identifier "FUN_00016700") (parameter_list "(undefined4 param_1,wchar_t *param_2,uint param_3,uint param_4,uint param_5,\n            int **param_6)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "wchar_t *param_2" (type_identifier "wchar_t") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "int **param_6" (primitive_type "int") (pointer_declarator "**param_6" (* "*") (pointer_declarator "*param_6" (* "*") (identifier "param_6")))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  char *pcVar2;\n  wchar_t *pwVar3;\n  int **ppiVar4;\n  int iVar5;\n  int **ppiVar6;\n  int *piVar7;\n  uint uVar8;\n  undefined1 *puVar9;\n  undefined1 *puVar10;\n  int **ppiVar11;\n  int iVar12;\n  int **ppiVar13;\n  int *piVar14;\n  uint uVar15;\n  int in_GS_OFFSET;\n  undefined1 auStack_5c [11];\n  byte local_51;\n  wchar_t *local_50;\n  uint local_4c;\n  int *local_48;\n  uint local_44;\n  wchar_t *local_40;\n  int **local_3c;\n  uint local_38;\n  int **local_34;\n  int **local_30;\n  int *local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1670d;\n  local_44 = param_4;\n  local_4c = param_5;\n  local_51 = (byte)param_5;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = (int *)0x0;\n  local_50 = param_2;\n  local_38 = param_3;\n  local_3c = (int **)wcslen(param_2);\n  puVar9 = auStack_5c;\n  piVar14 = (int *)param_2[1];\n  if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }\nLAB_000167c0:\n  uVar1 = 0xffffffff;\n  puVar10 = puVar9;\n  goto code_r0x000167c5;\nLAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }\n  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }\nLAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;\n  goto LAB_00016787;\nLAB_000167e0:\n  iVar12 = iVar12 + 1;\n  ppiVar11 = ppiVar11 + 1;\n  piVar14 = (int *)0x28;\n  goto LAB_0001678c;\n  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }\n  goto code_r0x00016b66;\ncode_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);\n  goto code_r0x00016b66;\ncode_r0x00016acb:\n  uVar1 = 0;\n  goto code_r0x000167c5;\n  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }\ncode_r0x00016b66:\n  uVar1 = 1;\n  puVar10 = puVar9 + iVar12;\ncode_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }\n  return uVar1;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "wchar_t *pwVar3;" (type_identifier "wchar_t") (pointer_declarator "*pwVar3" (* "*") (identifier "pwVar3")) (; ";")) (declaration "int **ppiVar4;" (primitive_type "int") (pointer_declarator "**ppiVar4" (* "*") (pointer_declarator "*ppiVar4" (* "*") (identifier "ppiVar4"))) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int **ppiVar6;" (primitive_type "int") (pointer_declarator "**ppiVar6" (* "*") (pointer_declarator "*ppiVar6" (* "*") (identifier "ppiVar6"))) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined1 *puVar9;" (type_identifier "undefined1") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int **ppiVar11;" (primitive_type "int") (pointer_declarator "**ppiVar11" (* "*") (pointer_declarator "*ppiVar11" (* "*") (identifier "ppiVar11"))) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int **ppiVar13;" (primitive_type "int") (pointer_declarator "**ppiVar13" (* "*") (pointer_declarator "*ppiVar13" (* "*") (identifier "ppiVar13"))) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined1 auStack_5c [11];" (type_identifier "undefined1") (array_declarator "auStack_5c [11]" (identifier "auStack_5c") ([ "[") (number_literal "11") (] "]")) (; ";")) (declaration "byte local_51;" (type_identifier "byte") (identifier "local_51") (; ";")) (declaration "wchar_t *local_50;" (type_identifier "wchar_t") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "int *local_48;" (primitive_type "int") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "wchar_t *local_40;" (type_identifier "wchar_t") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "int **local_3c;" (primitive_type "int") (pointer_declarator "**local_3c" (* "*") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c"))) (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "int **local_34;" (primitive_type "int") (pointer_declarator "**local_34" (* "*") (pointer_declarator "*local_34" (* "*") (identifier "local_34"))) (; ";")) (declaration "int **local_30;" (primitive_type "int") (pointer_declarator "**local_30" (* "*") (pointer_declarator "*local_30" (* "*") (identifier "local_30"))) (; ";")) (declaration "int *local_24;" (primitive_type "int") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1670d;" (assignment_expression "uStack_14 = 0x1670d" (identifier "uStack_14") (= "=") (number_literal "0x1670d")) (; ";")) (expression_statement "local_44 = param_4;" (assignment_expression "local_44 = param_4" (identifier "local_44") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_4c = param_5;" (assignment_expression "local_4c = param_5" (identifier "local_4c") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_51 = (byte)param_5;" (assignment_expression "local_51 = (byte)param_5" (identifier "local_51") (= "=") (cast_expression "(byte)param_5" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_5"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" (identifier "local_24") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" (identifier "local_50") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_38 = param_3;" (assignment_expression "local_38 = param_3" (identifier "local_38") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_3c = (int **)wcslen(param_2);" (assignment_expression "local_3c = (int **)wcslen(param_2)" (identifier "local_3c") (= "=") (cast_expression "(int **)wcslen(param_2)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "wcslen(param_2)" (identifier "wcslen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (expression_statement "puVar9 = auStack_5c;" (assignment_expression "puVar9 = auStack_5c" (identifier "puVar9") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "piVar14 = (int *)param_2[1];" (assignment_expression "piVar14 = (int *)param_2[1]" (identifier "piVar14") (= "=") (cast_expression "(int *)param_2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (piVar14 != (int *)0x0) {\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    ppiVar6 = (int **)(param_2 + 1);\n    local_34 = &local_24;\n    piVar7 = (int *)0xc0000601;\n    local_30 = ppiVar6;\n    puVar9 = auStack_5c;\n    iVar12 = 0;\nLAB_00016787:\n    ppiVar4 = local_30;\n    ppiVar11 = ppiVar6;\n    if (piVar14 != (int *)0x5b) goto LAB_0001678c;\n    if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }\n    piVar14 = ppiVar6[1];\n    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }\n    if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }\n    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }\n    piVar14 = ppiVar4[1];\n    goto LAB_00016783;\n  }" ({ "{") (expression_statement "ppiVar6 = (int **)(param_2 + 1);" (assignment_expression "ppiVar6 = (int **)(param_2 + 1)" (identifier "ppiVar6") (= "=") (cast_expression "(int **)(param_2 + 1)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_34 = &local_24;" (assignment_expression "local_34 = &local_24" (identifier "local_34") (= "=") (pointer_expression "&local_24" (& "&") (identifier "local_24"))) (; ";")) (expression_statement "piVar7 = (int *)0xc0000601;" (assignment_expression "piVar7 = (int *)0xc0000601" (identifier "piVar7") (= "=") (cast_expression "(int *)0xc0000601" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xc0000601"))) (; ";")) (expression_statement "local_30 = ppiVar6;" (assignment_expression "local_30 = ppiVar6" (identifier "local_30") (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "puVar9 = auStack_5c;" (assignment_expression "puVar9 = auStack_5c" (identifier "puVar9") (= "=") (identifier "auStack_5c")) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00016787:\n    ppiVar4 = local_30;" (statement_identifier "LAB_00016787") (: ":") (expression_statement "ppiVar4 = local_30;" (assignment_expression "ppiVar4 = local_30" (identifier "ppiVar4") (= "=") (identifier "local_30")) (; ";"))) (expression_statement "ppiVar11 = ppiVar6;" (assignment_expression "ppiVar11 = ppiVar6" (identifier "ppiVar11") (= "=") (identifier "ppiVar6")) (; ";")) (if_statement "if (piVar14 != (int *)0x5b) goto LAB_0001678c;" (if "if") (parenthesized_expression "(piVar14 != (int *)0x5b)" (( "(") (binary_expression "piVar14 != (int *)0x5b" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x5b" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5b"))) () ")")) (goto_statement "goto LAB_0001678c;" (goto "goto") (statement_identifier "LAB_0001678c") (; ";"))) (if_statement "if (DAT_00022330 == 0) {\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }" (if "if") (parenthesized_expression "(DAT_00022330 == 0)" (( "(") (binary_expression "DAT_00022330 == 0" (identifier "DAT_00022330") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_48 = piVar7;\n      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";\n      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;\n      pcVar2 = getenv(*(char **)(puVar9 + -0x10));\n      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;\n      piVar7 = local_48;\n    }" ({ "{") (expression_statement "local_48 = piVar7;" (assignment_expression "local_48 = piVar7" (identifier "local_48") (= "=") (identifier "piVar7")) (; ";")) (expression_statement "*(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";" (assignment_expression "*(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT"" (pointer_expression "*(char **)(puVar9 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + -0x10)" (( "(") (binary_expression "puVar9 + -0x10" (identifier "puVar9") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (string_literal ""POSIXLY_CORRECT"" (" """) (string_content "POSIXLY_CORRECT") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + -0x14) = 0x168fa;" (assignment_expression "*(undefined4 *)(puVar9 + -0x14) = 0x168fa" (pointer_expression "*(undefined4 *)(puVar9 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar9 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + -0x14)" (( "(") (binary_expression "puVar9 + -0x14" (identifier "puVar9") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x168fa")) (; ";")) (expression_statement "pcVar2 = getenv(*(char **)(puVar9 + -0x10));" (assignment_expression "pcVar2 = getenv(*(char **)(puVar9 + -0x10))" (identifier "pcVar2") (= "=") (call_expression "getenv(*(char **)(puVar9 + -0x10))" (identifier "getenv") (argument_list "(*(char **)(puVar9 + -0x10))" (( "(") (pointer_expression "*(char **)(puVar9 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + -0x10)" (( "(") (binary_expression "puVar9 + -0x10" (identifier "puVar9") (+ "+") (number_literal "-0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;" (assignment_expression "DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1" (identifier "DAT_00022330") (= "=") (binary_expression "-(uint)(pcVar2 == (char *)0x0) | 1" (unary_expression "-(uint)(pcVar2 == (char *)0x0)" (- "-") (call_expression "(uint)(pcVar2 == (char *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pcVar2 == (char *)0x0)" (( "(") (binary_expression "pcVar2 == (char *)0x0" (identifier "pcVar2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "piVar7 = local_48;" (assignment_expression "piVar7 = local_48" (identifier "piVar7") (= "=") (identifier "local_48")) (; ";")) (} "}"))) (expression_statement "piVar14 = ppiVar6[1];" (assignment_expression "piVar14 = ppiVar6[1]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar6[1]" (identifier "ppiVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }\n    else {\n      ppiVar4 = ppiVar6 + 1;\n    }" (if "if") (parenthesized_expression "((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e))))" (( "(") (binary_expression "(piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))" (parenthesized_expression "(piVar14 == (int *)0x21)" (( "(") (binary_expression "piVar14 == (int *)0x21" (identifier "piVar14") (== "==") (cast_expression "(int *)0x21" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21"))) () ")")) (|| "||") (parenthesized_expression "(((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))" (( "(") (parenthesized_expression "((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e))" (( "(") (binary_expression "(int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)" (binary_expression "(int)DAT_00022330 < 0" (cast_expression "(int)DAT_00022330" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00022330")) (< "<") (number_literal "0")) (&& "&&") (parenthesized_expression "(piVar14 == (int *)0x5e)" (( "(") (binary_expression "piVar14 == (int *)0x5e" (identifier "piVar14") (== "==") (cast_expression "(int *)0x5e" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5e"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      ppiVar4 = ppiVar6 + 2;\n      piVar14 = ppiVar6[2];\n    }" ({ "{") (expression_statement "ppiVar4 = ppiVar6 + 2;" (assignment_expression "ppiVar4 = ppiVar6 + 2" (identifier "ppiVar4") (= "=") (binary_expression "ppiVar6 + 2" (identifier "ppiVar6") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar14 = ppiVar6[2];" (assignment_expression "piVar14 = ppiVar6[2]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar6[2]" (identifier "ppiVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      ppiVar4 = ppiVar6 + 1;\n    }" (else "else") (compound_statement "{\n      ppiVar4 = ppiVar6 + 1;\n    }" ({ "{") (expression_statement "ppiVar4 = ppiVar6 + 1;" (assignment_expression "ppiVar4 = ppiVar6 + 1" (identifier "ppiVar4") (= "=") (binary_expression "ppiVar6 + 1" (identifier "ppiVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (if_statement "if (piVar14 == (int *)0x5d) {\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }" (if "if") (parenthesized_expression "(piVar14 == (int *)0x5d)" (( "(") (binary_expression "piVar14 == (int *)0x5d" (identifier "piVar14") (== "==") (cast_expression "(int *)0x5d" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5d"))) () ")")) (compound_statement "{\n      piVar14 = ppiVar4[1];\n      ppiVar4 = ppiVar4 + 1;\n    }" ({ "{") (expression_statement "piVar14 = ppiVar4[1];" (assignment_expression "piVar14 = ppiVar4[1]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar4[1]" (identifier "ppiVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "ppiVar4 = ppiVar4 + 1;" (assignment_expression "ppiVar4 = ppiVar4 + 1" (identifier "ppiVar4") (= "=") (binary_expression "ppiVar4 + 1" (identifier "ppiVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (while_statement "while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }" (while "while") (parenthesized_expression "(ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d)" (( "(") (comma_expression "ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d" (assignment_expression "ppiVar6 = ppiVar4 + 1" (identifier "ppiVar6") (= "=") (binary_expression "ppiVar4 + 1" (identifier "ppiVar4") (+ "+") (number_literal "1"))) (, ",") (binary_expression "piVar14 != (int *)0x5d" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x5d" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5d")))) () ")")) (compound_statement "{\n      if (piVar14 == (int *)0x0) goto LAB_000167c0;\n      ppiVar4 = ppiVar6;\n      piVar14 = *ppiVar6;\n    }" ({ "{") (if_statement "if (piVar14 == (int *)0x0) goto LAB_000167c0;" (if "if") (parenthesized_expression "(piVar14 == (int *)0x0)" (( "(") (binary_expression "piVar14 == (int *)0x0" (identifier "piVar14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000167c0;" (goto "goto") (statement_identifier "LAB_000167c0") (; ";"))) (expression_statement "ppiVar4 = ppiVar6;" (assignment_expression "ppiVar4 = ppiVar6" (identifier "ppiVar4") (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "piVar14 = *ppiVar6;" (assignment_expression "piVar14 = *ppiVar6" (identifier "piVar14") (= "=") (pointer_expression "*ppiVar6" (* "*") (identifier "ppiVar6"))) (; ";")) (} "}"))) (expression_statement "piVar14 = ppiVar4[1];" (assignment_expression "piVar14 = ppiVar4[1]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar4[1]" (identifier "ppiVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_00016783;" (goto "goto") (statement_identifier "LAB_00016783") (; ";")) (} "}"))) (labeled_statement "LAB_000167c0:\n  uVar1 = 0xffffffff;" (statement_identifier "LAB_000167c0") (: ":") (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" (identifier "uVar1") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";")) (goto_statement "goto code_r0x000167c5;" (goto "goto") (statement_identifier "code_r0x000167c5") (; ";")) (labeled_statement "LAB_0001678c:\n  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" (statement_identifier "LAB_0001678c") (: ":") (if_statement "if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" (if "if") (parenthesized_expression "((uint)((int)piVar14 + L'\xffffffdf') < 0x20)" (( "(") (binary_expression "(uint)((int)piVar14 + L'\xffffffdf') < 0x20" (call_expression "(uint)((int)piVar14 + L'\xffffffdf')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)piVar14 + L'\xffffffdf')" (( "(") (binary_expression "(int)piVar14 + L'\xffffffdf'" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (+ "+") (char_literal "L'\xffffffdf'" (L' "L'") (escape_sequence "\xffff") (character "f") (character "f") (character "d") (character "f") (' "'"))) () ")"))) (< "<") (number_literal "0x20")) () ")")) (compound_statement "{\n    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;\n    if (piVar14 != (int *)0x29) goto LAB_0001677d;\n    if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }\n    if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;\n    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);\n    puVar10 = puVar9 + iVar12;\n    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));\n    uVar8 = local_4c;\n    *pwVar3 = L'\0';\n    *piVar14 = 0;\n    *local_34 = piVar14;\n    local_48 = local_24;\n    if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }\n    switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }\n    goto code_r0x00016b96;\n  }" ({ "{") (if_statement "if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;" (if "if") (parenthesized_expression "((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28))" (( "(") (binary_expression "(((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&\n       (ppiVar11[1] == (int *)0x28)" (parenthesized_expression "(((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0)" (( "(") (binary_expression "((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0" (parenthesized_expression "((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1)" (( "(") (binary_expression "(uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1" (binary_expression "(uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU)" (cast_expression "(uint)piVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar7")) (>> ">>") (parenthesized_expression "((int)piVar14 + L'\xffffffdf' & 0x1fU)" (( "(") (binary_expression "(int)piVar14 + L'\xffffffdf' & 0x1fU" (binary_expression "(int)piVar14 + L'\xffffffdf'" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (+ "+") (char_literal "L'\xffffffdf'" (L' "L'") (escape_sequence "\xffff") (character "f") (character "f") (character "d") (character "f") (' "'"))) (& "&") (number_literal "0x1fU")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(ppiVar11[1] == (int *)0x28)" (( "(") (binary_expression "ppiVar11[1] == (int *)0x28" (subscript_expression "ppiVar11[1]" (identifier "ppiVar11") ([ "[") (number_literal "1") (] "]")) (== "==") (cast_expression "(int *)0x28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x28"))) () ")"))) () ")")) (goto_statement "goto LAB_000167e0;" (goto "goto") (statement_identifier "LAB_000167e0") (; ";"))) (if_statement "if (piVar14 != (int *)0x29) goto LAB_0001677d;" (if "if") (parenthesized_expression "(piVar14 != (int *)0x29)" (( "(") (binary_expression "piVar14 != (int *)0x29" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x29" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x29"))) () ")")) (goto_statement "goto LAB_0001677d;" (goto "goto") (statement_identifier "LAB_0001677d") (; ";"))) (if_statement "if (iVar12 != 0) {\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar14 = ppiVar11[1];\n      ppiVar6 = ppiVar11 + 1;\n      iVar12 = iVar12 + -1;\n      if (piVar14 != (int *)0x0) goto LAB_00016787;\n      goto LAB_000167c0;\n    }" ({ "{") (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar11[1]" (identifier "ppiVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" (identifier "ppiVar6") (= "=") (binary_expression "ppiVar11 + 1" (identifier "ppiVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (piVar14 != (int *)0x0) goto LAB_00016787;" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00016787;" (goto "goto") (statement_identifier "LAB_00016787") (; ";"))) (goto_statement "goto LAB_000167c0;" (goto "goto") (statement_identifier "LAB_000167c0") (; ";")) (} "}"))) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" (if "if") (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" (( "(") (binary_expression "1 < (int)local_40 - 0x3fU" (number_literal "1") (< "<") (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (- "-") (number_literal "0x3fU"))) () ")")) (compound_statement "{\n      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" ({ "{") (expression_statement "local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);" (assignment_expression "local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" (identifier "local_3c") (= "=") (cast_expression "(int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(((int)ppiVar11 - (int)local_30 >> 2) + 1)" (( "(") (binary_expression "((int)ppiVar11 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)ppiVar11 - (int)local_30 >> 2)" (( "(") (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppiVar11")) (- "-") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (if_statement "if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;" (if "if") (parenthesized_expression "((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c))" (( "(") (binary_expression "(0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)" (parenthesized_expression "(0x1f3b < (uint)((int)local_3c * 4))" (( "(") (binary_expression "0x1f3b < (uint)((int)local_3c * 4)" (number_literal "0x1f3b") (< "<") (call_expression "(uint)((int)local_3c * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)local_3c * 4)" (( "(") (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (* "*") (number_literal "4")) () ")")))) () ")")) (|| "||") (parenthesized_expression "((int **)0x3fffffff < local_3c)" (( "(") (binary_expression "(int **)0x3fffffff < local_3c" (cast_expression "(int **)0x3fffffff" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x3fffffff")) (< "<") (identifier "local_3c")) () ")"))) () ")")) (goto_statement "goto LAB_000167c0;" (goto "goto") (statement_identifier "LAB_000167c0") (; ";"))) (expression_statement "iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0)" (identifier "iVar12") (= "=") (unary_expression "-((int)local_3c * 4 + 0x1fU & 0xfffffff0)" (- "-") (parenthesized_expression "((int)local_3c * 4 + 0x1fU & 0xfffffff0)" (( "(") (binary_expression "(int)local_3c * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)local_3c * 4 + 0x1fU" (binary_expression "(int)local_3c * 4" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (* "*") (number_literal "4")) (+ "+") (number_literal "0x1fU")) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" (identifier "puVar10") (= "=") (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);" (assignment_expression "piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" (identifier "piVar14") (= "=") (cast_expression "(int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0)" (( "(") (binary_expression "(uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar9 + iVar12 + 0xf)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar9 + iVar12 + 0xf)" (( "(") (binary_expression "puVar9 + iVar12 + 0xf" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "0xf")) () ")"))) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "*(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(int *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppiVar11")) (- "-") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar4")) (; ";")) (expression_statement "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;" (assignment_expression "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1" (pointer_expression "*(int **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x16978")) (; ";")) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" (identifier "pwVar3") (= "=") (call_expression "wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" (identifier "wmempcpy") (argument_list "(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),\n                      *(size_t *)(puVar9 + iVar12 + -8))" (( "(") (pointer_expression "*(wchar_t **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(wchar_t **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(wchar_t **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(wchar_t **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(size_t *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(size_t *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar8 = local_4c;" (assignment_expression "uVar8 = local_4c" (identifier "uVar8") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" (* "*") (identifier "pwVar3")) (= "=") (char_literal "L'\0'" (L' "L'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*piVar14 = 0;" (assignment_expression "*piVar14 = 0" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_34 = piVar14;" (assignment_expression "*local_34 = piVar14" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (identifier "piVar14")) (; ";")) (expression_statement "local_48 = local_24;" (assignment_expression "local_48 = local_24" (identifier "local_48") (= "=") (identifier "local_24")) (; ";")) (if_statement "if (local_24 == (int *)0x0) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" (if "if") (parenthesized_expression "(local_24 == (int *)0x0)" (( "(") (binary_expression "local_24 == (int *)0x0" (identifier "local_24") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" ({ "{") (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -4)" (( "(") (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (string_literal ""ext_wmatch"" (" """) (string_content "ext_wmatch") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x454" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x454")) (; ";")) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (string_literal ""lib/fnmatch_loop.c"" (" """) (string_content "lib/fnmatch_loop.c") (" """))) (; ";")) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "list != NULL"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (string_literal ""list != NULL"" (" """) (string_content "list != NULL") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x16c27")) (; ";")) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" (identifier "__assert_fail") (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" (( "(") (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (, ",") (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -4)" (( "(") (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-4")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if (ppiVar11[-1] != (int *)0x29) {\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" (if "if") (parenthesized_expression "(ppiVar11[-1] != (int *)0x29)" (( "(") (binary_expression "ppiVar11[-1] != (int *)0x29" (subscript_expression "ppiVar11[-1]" (identifier "ppiVar11") ([ "[") (number_literal "-1") (] "]")) (!= "!=") (cast_expression "(int *)0x29" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x29"))) () ")")) (compound_statement "{\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";\n                    \n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    }" ({ "{") (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -4)" (( "(") (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (string_literal ""ext_wmatch"" (" """) (string_content "ext_wmatch") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x455" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x455")) (; ";")) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (string_literal ""lib/fnmatch_loop.c"" (" """) (string_content "lib/fnmatch_loop.c") (" """))) (; ";")) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (string_literal ""p[-1] == L_(\')\')"" (" """) (string_content "p[-1] == L_(") (escape_sequence "\'") (string_content ")") (escape_sequence "\'") (string_content ")") (" """))) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016c6a" (& "&") (identifier "UNK_00016c6a"))) (; ";")) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" (identifier "__assert_fail") (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" (( "(") (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (, ",") (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -4)" (( "(") (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-4")) () ")")))) () ")"))) (; ";")) (} "}"))) (switch_statement "switch(local_40) {\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }" (switch "switch") (parenthesized_expression "(local_40)" (( "(") (identifier "local_40") () ")")) (compound_statement "{\n    case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;\n    default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));\n    case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;\n    case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }\n    }" ({ "{") (case_statement "case (wchar_t *)0x21:\n      if (local_44 < local_38) goto code_r0x00016b66;\n      local_30 = (int **)(local_4c & 0xff);\n      piVar14 = local_48;\n      local_34 = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      uVar8 = local_38;\n      if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x00016b00;" (case "case") (cast_expression "(wchar_t *)0x21" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21")) (: ":") (if_statement "if (local_44 < local_38) goto code_r0x00016b66;" (if "if") (parenthesized_expression "(local_44 < local_38)" (( "(") (binary_expression "local_44 < local_38" (identifier "local_44") (< "<") (identifier "local_38")) () ")")) (goto_statement "goto code_r0x00016b66;" (goto "goto") (statement_identifier "code_r0x00016b66") (; ";"))) (expression_statement "local_30 = (int **)(local_4c & 0xff);" (assignment_expression "local_30 = (int **)(local_4c & 0xff)" (identifier "local_30") (= "=") (cast_expression "(int **)(local_4c & 0xff)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_4c & 0xff)" (( "(") (binary_expression "local_4c & 0xff" (identifier "local_4c") (& "&") (number_literal "0xff")) () ")")))) (; ";")) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" (identifier "piVar14") (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_34 = ppiVar11;" (assignment_expression "local_34 = ppiVar11" (identifier "local_34") (= "=") (identifier "ppiVar11")) (; ";")) (expression_statement "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb)" (identifier "ppiVar6") (= "=") (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((uint)param_6 & 0xfffffffb)" (( "(") (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "0xfffffffb")) () ")")))) (; ";")) (expression_statement "uVar8 = local_38;" (assignment_expression "uVar8 = local_38" (identifier "uVar8") (= "=") (identifier "local_38")) (; ";")) (if_statement "if (((uint)param_6 & 1) != 0) {\n        ppiVar6 = param_6;\n      }" (if "if") (parenthesized_expression "(((uint)param_6 & 1) != 0)" (( "(") (binary_expression "((uint)param_6 & 1) != 0" (parenthesized_expression "((uint)param_6 & 1)" (( "(") (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        ppiVar6 = param_6;\n      }" ({ "{") (expression_statement "ppiVar6 = param_6;" (assignment_expression "ppiVar6 = param_6" (identifier "ppiVar6") (= "=") (identifier "param_6")) (; ";")) (} "}"))) (goto_statement "goto code_r0x00016b00;" (goto "goto") (statement_identifier "code_r0x00016b00") (; ";"))) (case_statement "default:\n      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";\n      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;\n      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";\n      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";\n                    \n      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;\n      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (default "default") (: ":") (expression_statement "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";" (assignment_expression "*(char **)(puVar9 + iVar12 + -4) = "ext_wmatch"" (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -4)" (( "(") (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (string_literal ""ext_wmatch"" (" """) (string_content "ext_wmatch") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x4ad")) (; ";")) (expression_statement "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c"" (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (string_literal ""lib/fnmatch_loop.c"" (" """) (string_content "lib/fnmatch_loop.c") (" """))) (; ";")) (expression_statement "*(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";" (assignment_expression "*(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\""" (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (string_literal ""! \"Invalid extended matching operator\""" (" """) (string_content "! ") (escape_sequence "\"") (string_content "Invalid extended matching operator") (escape_sequence "\"") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;" (assignment_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b" (pointer_expression "*(undefined4 *)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x16c4b")) (; ";")) (expression_statement "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));" (call_expression "__assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" (identifier "__assert_fail") (argument_list "(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),\n                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4))" (( "(") (pointer_expression "*(char **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(char **)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(uint *)(puVar9 + iVar12 + -8)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -8)" (( "(") (binary_expression "puVar9 + iVar12 + -8" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-8")) () ")")))) (, ",") (pointer_expression "*(char **)(puVar9 + iVar12 + -4)" (* "*") (cast_expression "(char **)(puVar9 + iVar12 + -4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -4)" (( "(") (binary_expression "puVar9 + iVar12 + -4" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-4")) () ")")))) () ")"))) (; ";"))) (case_statement "case (wchar_t *)0x2a:\n      uVar8 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;" (case "case") (cast_expression "(wchar_t *)0x2a" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2a")) (: ":") (expression_statement "uVar8 = local_4c & 0xff;" (assignment_expression "uVar8 = local_4c & 0xff" (identifier "uVar8") (= "=") (binary_expression "local_4c & 0xff" (identifier "local_4c") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = param_6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = param_6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar8;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar8" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_000169d6" (& "&") (identifier "UNK_000169d6"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00016acb;" (goto "goto") (statement_identifier "code_r0x00016acb") (; ";")))) (case_statement "case (wchar_t *)0x2b:\n      local_34 = (int **)((uint)param_6 & 1);\n      piVar14 = local_48;\n      local_3c = ppiVar11;\n      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);\n      if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }\n      goto code_r0x000169fc;" (case "case") (cast_expression "(wchar_t *)0x2b" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2b")) (: ":") (expression_statement "local_34 = (int **)((uint)param_6 & 1);" (assignment_expression "local_34 = (int **)((uint)param_6 & 1)" (identifier "local_34") (= "=") (cast_expression "(int **)((uint)param_6 & 1)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((uint)param_6 & 1)" (( "(") (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "1")) () ")")))) (; ";")) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" (identifier "piVar14") (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_3c = ppiVar11;" (assignment_expression "local_3c = ppiVar11" (identifier "local_3c") (= "=") (identifier "ppiVar11")) (; ";")) (expression_statement "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "ppiVar6 = (int **)((uint)param_6 & 0xfffffffb)" (identifier "ppiVar6") (= "=") (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((uint)param_6 & 0xfffffffb)" (( "(") (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "0xfffffffb")) () ")")))) (; ";")) (if_statement "if (local_34 != (int **)0x0) {\n        ppiVar6 = param_6;\n      }" (if "if") (parenthesized_expression "(local_34 != (int **)0x0)" (( "(") (binary_expression "local_34 != (int **)0x0" (identifier "local_34") (!= "!=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        ppiVar6 = param_6;\n      }" ({ "{") (expression_statement "ppiVar6 = param_6;" (assignment_expression "ppiVar6 = param_6" (identifier "ppiVar6") (= "=") (identifier "param_6")) (; ";")) (} "}"))) (goto_statement "goto code_r0x000169fc;" (goto "goto") (statement_identifier "code_r0x000169fc") (; ";"))) (case_statement "case (wchar_t *)0x3f:\n      uVar15 = local_4c & 0xff;\n      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;\n      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;\n      iVar5 = FUN_00016c70();\n      if (iVar5 != 0) goto code_r0x00016b74;\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;" (case "case") (cast_expression "(wchar_t *)0x3f" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3f")) (: ":") (expression_statement "uVar15 = local_4c & 0xff;" (assignment_expression "uVar15 = local_4c & 0xff" (identifier "uVar15") (= "=") (binary_expression "local_4c & 0xff" (identifier "local_4c") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = param_6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = param_6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016bdc" (& "&") (identifier "UNK_00016bdc"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) goto code_r0x00016b74;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00016b74;" (goto "goto") (statement_identifier "code_r0x00016b74") (; ";"))) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" (identifier "puVar10") (= "=") (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12"))) (; ";")) (goto_statement "goto code_r0x000167c5;" (goto "goto") (statement_identifier "code_r0x000167c5") (; ";"))) (case_statement "case (wchar_t *)0x40:\ncode_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);\n      local_30 = (int **)((uint)param_6 & 0xfffffffb);\n      piVar14 = local_48;\n      if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }" (case "case") (cast_expression "(wchar_t *)0x40" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x40")) (: ":") (labeled_statement "code_r0x00016b74:\n      local_34 = (int **)(uVar8 & 0xff);" (statement_identifier "code_r0x00016b74") (: ":") (expression_statement "local_34 = (int **)(uVar8 & 0xff);" (assignment_expression "local_34 = (int **)(uVar8 & 0xff)" (identifier "local_34") (= "=") (cast_expression "(int **)(uVar8 & 0xff)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")")))) (; ";"))) (expression_statement "local_30 = (int **)((uint)param_6 & 0xfffffffb);" (assignment_expression "local_30 = (int **)((uint)param_6 & 0xfffffffb)" (identifier "local_30") (= "=") (cast_expression "(int **)((uint)param_6 & 0xfffffffb)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((uint)param_6 & 0xfffffffb)" (( "(") (binary_expression "(uint)param_6 & 0xfffffffb" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "0xfffffffb")) () ")")))) (; ";")) (expression_statement "piVar14 = local_48;" (assignment_expression "piVar14 = local_48" (identifier "piVar14") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (((uint)param_6 & 1) != 0) {\n        local_30 = param_6;\n      }" (if "if") (parenthesized_expression "(((uint)param_6 & 1) != 0)" (( "(") (binary_expression "((uint)param_6 & 1) != 0" (parenthesized_expression "((uint)param_6 & 1)" (( "(") (binary_expression "(uint)param_6 & 1" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_30 = param_6;\n      }" ({ "{") (expression_statement "local_30 = param_6;" (assignment_expression "local_30 = param_6" (identifier "local_30") (= "=") (identifier "param_6")) (; ";")) (} "}")))) (} "}"))) (goto_statement "goto code_r0x00016b96;" (goto "goto") (statement_identifier "code_r0x00016b96") (; ";")) (} "}")))) (if_statement "if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }\n  else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" (if "if") (parenthesized_expression "((piVar14 == (int *)0x7c) && (iVar12 == 0))" (( "(") (binary_expression "(piVar14 == (int *)0x7c) && (iVar12 == 0)" (parenthesized_expression "(piVar14 == (int *)0x7c)" (( "(") (binary_expression "piVar14 == (int *)0x7c" (identifier "piVar14") (== "==") (cast_expression "(int *)0x7c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7c"))) () ")")) (&& "&&") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    ppiVar6 = local_3c;\n    if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }\n    local_48 = piVar7;\n    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;\n    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);\n    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);\n    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;\n    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;\n    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;\n    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;\n    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));\n    ppiVar4 = local_34;\n    ppiVar6 = ppiVar11 + 1;\n    *pwVar3 = L'\0';\n    *ppiVar13 = (int *)0x0;\n    local_34 = ppiVar13;\n    *ppiVar4 = (int *)ppiVar13;\n    piVar14 = ppiVar11[1];\n    iVar12 = 0;\n    local_30 = ppiVar6;\n    piVar7 = local_48;\n    puVar9 = puVar9 + iVar5;\n  }" ({ "{") (expression_statement "ppiVar6 = local_3c;" (assignment_expression "ppiVar6 = local_3c" (identifier "ppiVar6") (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (1 < (int)local_40 - 0x3fU) {\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" (if "if") (parenthesized_expression "(1 < (int)local_40 - 0x3fU)" (( "(") (binary_expression "1 < (int)local_40 - 0x3fU" (number_literal "1") (< "<") (binary_expression "(int)local_40 - 0x3fU" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (- "-") (number_literal "0x3fU"))) () ")")) (compound_statement "{\n      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);\n    }" ({ "{") (expression_statement "ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);" (assignment_expression "ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" (identifier "ppiVar6") (= "=") (cast_expression "(int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(((int)ppiVar11 - (int)local_30 >> 2) + 1)" (( "(") (binary_expression "((int)ppiVar11 - (int)local_30 >> 2) + 1" (parenthesized_expression "((int)ppiVar11 - (int)local_30 >> 2)" (( "(") (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppiVar11")) (- "-") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "local_48 = piVar7;" (assignment_expression "local_48 = piVar7" (identifier "local_48") (= "=") (identifier "piVar7")) (; ";")) (if_statement "if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;" (if "if") (parenthesized_expression "((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6))" (( "(") (binary_expression "(0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)" (parenthesized_expression "(0x1f3b < (uint)((int)ppiVar6 * 4))" (( "(") (binary_expression "0x1f3b < (uint)((int)ppiVar6 * 4)" (number_literal "0x1f3b") (< "<") (call_expression "(uint)((int)ppiVar6 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)ppiVar6 * 4)" (( "(") (binary_expression "(int)ppiVar6 * 4" (cast_expression "(int)ppiVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppiVar6")) (* "*") (number_literal "4")) () ")")))) () ")")) (|| "||") (parenthesized_expression "((int **)0x3fffffff < ppiVar6)" (( "(") (binary_expression "(int **)0x3fffffff < ppiVar6" (cast_expression "(int **)0x3fffffff" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x3fffffff")) (< "<") (identifier "ppiVar6")) () ")"))) () ")")) (goto_statement "goto LAB_000167c0;" (goto "goto") (statement_identifier "LAB_000167c0") (; ";"))) (expression_statement "iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);" (assignment_expression "iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" (identifier "iVar5") (= "=") (unary_expression "-((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" (- "-") (parenthesized_expression "((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0)" (( "(") (binary_expression "(int)ppiVar6 * 4 + 0x1fU & 0xfffffff0" (binary_expression "(int)ppiVar6 * 4 + 0x1fU" (binary_expression "(int)ppiVar6 * 4" (cast_expression "(int)ppiVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppiVar6")) (* "*") (number_literal "4")) (+ "+") (number_literal "0x1fU")) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);" (assignment_expression "ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" (identifier "ppiVar13") (= "=") (cast_expression "(int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0)" (( "(") (binary_expression "(uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0" (call_expression "(uint)(puVar9 + iVar5 + 0xf)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar9 + iVar5 + 0xf)" (( "(") (binary_expression "puVar9 + iVar5 + 0xf" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "0xf")) () ")"))) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (expression_statement "*(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;" (assignment_expression "*(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2" (pointer_expression "*(int *)(puVar9 + iVar5 + -8)" (* "*") (cast_expression "(int *)(puVar9 + iVar5 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -8)" (( "(") (binary_expression "puVar9 + iVar5 + -8" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "(int)ppiVar11 - (int)local_30 >> 2" (binary_expression "(int)ppiVar11 - (int)local_30" (cast_expression "(int)ppiVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppiVar11")) (- "-") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30"))) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar5 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar5 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -0xc)" (( "(") (binary_expression "puVar9 + iVar5 + -0xc" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar4")) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;" (assignment_expression "*(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1" (pointer_expression "*(int ***)(puVar9 + iVar5 + -0x10)" (* "*") (cast_expression "(int ***)(puVar9 + iVar5 + -0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -0x10)" (( "(") (binary_expression "puVar9 + iVar5 + -0x10" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "ppiVar13 + 1" (identifier "ppiVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;" (assignment_expression "*(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5" (pointer_expression "*(undefined4 *)(puVar9 + iVar5 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar9 + iVar5 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -0x14)" (( "(") (binary_expression "puVar9 + iVar5 + -0x14" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x168b5")) (; ";")) (expression_statement "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8));" (assignment_expression "pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" (identifier "pwVar3") (= "=") (call_expression "wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" (identifier "wmempcpy") (argument_list "(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),\n                      *(size_t *)(puVar9 + iVar5 + -8))" (( "(") (pointer_expression "*(wchar_t **)(puVar9 + iVar5 + -0x10)" (* "*") (cast_expression "(wchar_t **)(puVar9 + iVar5 + -0x10)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -0x10)" (( "(") (binary_expression "puVar9 + iVar5 + -0x10" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0x10")) () ")")))) (, ",") (pointer_expression "*(wchar_t **)(puVar9 + iVar5 + -0xc)" (* "*") (cast_expression "(wchar_t **)(puVar9 + iVar5 + -0xc)" (( "(") (type_descriptor "wchar_t **" (type_identifier "wchar_t") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -0xc)" (( "(") (binary_expression "puVar9 + iVar5 + -0xc" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-0xc")) () ")")))) (, ",") (pointer_expression "*(size_t *)(puVar9 + iVar5 + -8)" (* "*") (cast_expression "(size_t *)(puVar9 + iVar5 + -8)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar5 + -8)" (( "(") (binary_expression "puVar9 + iVar5 + -8" (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5")) (+ "+") (number_literal "-8")) () ")")))) () ")")))) (; ";")) (expression_statement "ppiVar4 = local_34;" (assignment_expression "ppiVar4 = local_34" (identifier "ppiVar4") (= "=") (identifier "local_34")) (; ";")) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" (identifier "ppiVar6") (= "=") (binary_expression "ppiVar11 + 1" (identifier "ppiVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pwVar3 = L'\0';" (assignment_expression "*pwVar3 = L'\0'" (pointer_expression "*pwVar3" (* "*") (identifier "pwVar3")) (= "=") (char_literal "L'\0'" (L' "L'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*ppiVar13 = (int *)0x0;" (assignment_expression "*ppiVar13 = (int *)0x0" (pointer_expression "*ppiVar13" (* "*") (identifier "ppiVar13")) (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = ppiVar13;" (assignment_expression "local_34 = ppiVar13" (identifier "local_34") (= "=") (identifier "ppiVar13")) (; ";")) (expression_statement "*ppiVar4 = (int *)ppiVar13;" (assignment_expression "*ppiVar4 = (int *)ppiVar13" (pointer_expression "*ppiVar4" (* "*") (identifier "ppiVar4")) (= "=") (cast_expression "(int *)ppiVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppiVar13"))) (; ";")) (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar11[1]" (identifier "ppiVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = ppiVar6;" (assignment_expression "local_30 = ppiVar6" (identifier "local_30") (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "piVar7 = local_48;" (assignment_expression "piVar7 = local_48" (identifier "piVar7") (= "=") (identifier "local_48")) (; ";")) (expression_statement "puVar9 = puVar9 + iVar5;" (assignment_expression "puVar9 = puVar9 + iVar5" (identifier "puVar9") (= "=") (binary_expression "puVar9 + iVar5" (identifier "puVar9") (+ "+") (identifier "iVar5"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" (else "else") (compound_statement "{\nLAB_0001677d:\n    piVar14 = ppiVar11[1];\n    ppiVar6 = ppiVar11 + 1;\n  }" ({ "{") (labeled_statement "LAB_0001677d:\n    piVar14 = ppiVar11[1];" (statement_identifier "LAB_0001677d") (: ":") (expression_statement "piVar14 = ppiVar11[1];" (assignment_expression "piVar14 = ppiVar11[1]" (identifier "piVar14") (= "=") (subscript_expression "ppiVar11[1]" (identifier "ppiVar11") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "ppiVar6 = ppiVar11 + 1;" (assignment_expression "ppiVar6 = ppiVar11 + 1" (identifier "ppiVar6") (= "=") (binary_expression "ppiVar11 + 1" (identifier "ppiVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (labeled_statement "LAB_00016783:\n  if (piVar14 == (int *)0x0) goto LAB_000167c0;" (statement_identifier "LAB_00016783") (: ":") (if_statement "if (piVar14 == (int *)0x0) goto LAB_000167c0;" (if "if") (parenthesized_expression "(piVar14 == (int *)0x0)" (( "(") (binary_expression "piVar14 == (int *)0x0" (identifier "piVar14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000167c0;" (goto "goto") (statement_identifier "LAB_000167c0") (; ";")))) (goto_statement "goto LAB_00016787;" (goto "goto") (statement_identifier "LAB_00016787") (; ";")) (labeled_statement "LAB_000167e0:\n  iVar12 = iVar12 + 1;" (statement_identifier "LAB_000167e0") (: ":") (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "ppiVar11 = ppiVar11 + 1;" (assignment_expression "ppiVar11 = ppiVar11 + 1" (identifier "ppiVar11") (= "=") (binary_expression "ppiVar11 + 1" (identifier "ppiVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar14 = (int *)0x28;" (assignment_expression "piVar14 = (int *)0x28" (identifier "piVar14") (= "=") (cast_expression "(int *)0x28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x28"))) (; ";")) (goto_statement "goto LAB_0001678c;" (goto "goto") (statement_identifier "LAB_0001678c") (; ";")) (while_statement "while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }" (while "while") (parenthesized_expression "(local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0)" (( "(") (comma_expression "local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0" (assignment_expression "local_24 = (int *)*piVar14" (identifier "local_24") (= "=") (cast_expression "(int *)*piVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar14" (* "*") (identifier "piVar14")))) (, ",") (comma_expression "piVar14 = local_24, local_24 != (int *)0x0" (assignment_expression "piVar14 = local_24" (identifier "piVar14") (= "=") (identifier "local_24")) (, ",") (binary_expression "local_24 != (int *)0x0" (identifier "local_24") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) () ")")) (compound_statement "{\ncode_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;\n    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;\n    func_0x00012380();\n    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;\n    iVar5 = FUN_00016c70();\n    if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }\n  }" ({ "{") (labeled_statement "code_r0x00016b96:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;" (statement_identifier "code_r0x00016b96") (: ":") (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar11")) (; ";"))) (expression_statement "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;" (assignment_expression "*(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1" (pointer_expression "*(int **)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int **)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016ba3" (& "&") (identifier "UNK_00016ba3"))) (; ";")) (expression_statement "func_0x00012380();" (call_expression "func_0x00012380()" (identifier "func_0x00012380") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_34;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_34" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016bb6" (& "&") (identifier "UNK_00016bb6"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = 0;\n      puVar10 = puVar9 + iVar12;\n      goto code_r0x000167c5;\n    }" ({ "{") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" (identifier "puVar10") (= "=") (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12"))) (; ";")) (goto_statement "goto code_r0x000167c5;" (goto "goto") (statement_identifier "code_r0x000167c5") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto code_r0x00016b66;" (goto "goto") (statement_identifier "code_r0x00016b66") (; ";")) (labeled_statement "code_r0x000169fc:\n  do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);" (statement_identifier "code_r0x000169fc") (: ":") (do_statement "do {\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  } while (local_24 != (int *)0x0);" (do "do") (compound_statement "{\n    if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }\n    local_24 = (int *)*piVar14;\n    piVar14 = local_24;\n  }" ({ "{") (if_statement "if (local_38 <= local_44) {\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }" (if "if") (parenthesized_expression "(local_38 <= local_44)" (( "(") (binary_expression "local_38 <= local_44" (identifier "local_38") (<= "<=") (identifier "local_44")) () ")")) (compound_statement "{\n      local_30 = (int **)(uint)local_51;\n      local_40 = local_50 + -1;\n      uVar8 = local_38;\n      do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);\n    }" ({ "{") (expression_statement "local_30 = (int **)(uint)local_51;" (assignment_expression "local_30 = (int **)(uint)local_51" (identifier "local_30") (= "=") (cast_expression "(int **)(uint)local_51" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (cast_expression "(uint)local_51" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_51")))) (; ";")) (expression_statement "local_40 = local_50 + -1;" (assignment_expression "local_40 = local_50 + -1" (identifier "local_40") (= "=") (binary_expression "local_50 + -1" (identifier "local_50") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar8 = local_38;" (assignment_expression "uVar8 = local_38" (identifier "uVar8") (= "=") (identifier "local_38")) (; ";")) (do_statement "do {\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      } while (uVar8 <= local_44);" (do "do") (compound_statement "{\n        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;\n        iVar5 = FUN_00016c70();\n        if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }\n        uVar8 = uVar8 + 4;\n      }" ({ "{") (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016a9f" (& "&") (identifier "UNK_00016a9f"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          local_24 = piVar14;\n          if (iVar5 == 0) goto code_r0x00016acb;\n        }" ({ "{") (if_statement "if (local_38 == uVar8) {\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }\n          else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" (if "if") (parenthesized_expression "(local_38 == uVar8)" (( "(") (binary_expression "local_38 == uVar8" (identifier "local_38") (== "==") (identifier "uVar8")) () ")")) (compound_statement "{\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" ({ "{") (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016ac4" (& "&") (identifier "UNK_00016ac4"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" (identifier "piVar14") (= "=") (identifier "local_24")) (; ";")) (} "}")) (else_clause "else {\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" (else "else") (compound_statement "{\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;\n            iVar5 = FUN_00016c70();\n            if (iVar5 == 0) goto code_r0x00016acb;\n            uVar15 = 0;\n            if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }\n            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;\n            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;\n            iVar5 = FUN_00016c70();\n            piVar14 = local_24;\n          }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" (if "if") (parenthesized_expression "(*(int *)(uVar8 - 4) == 0x2f)" (( "(") (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" (* "*") (cast_expression "(int *)(uVar8 - 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 - 4)" (( "(") (binary_expression "uVar8 - 4" (identifier "uVar8") (- "-") (number_literal "4")) () ")")))) (== "==") (number_literal "0x2f")) () ")")) (compound_statement "{\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" ({ "{") (expression_statement "uVar15 = (uint)(((uint)param_6 & 5) == 5);" (assignment_expression "uVar15 = (uint)(((uint)param_6 & 5) == 5)" (identifier "uVar15") (= "=") (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(((uint)param_6 & 5) == 5)" (( "(") (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" (( "(") (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "5")) () ")")) (== "==") (number_literal "5")) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016a45" (& "&") (identifier "UNK_00016a45"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00016acb;" (goto "goto") (statement_identifier "code_r0x00016acb") (; ";"))) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(uVar8 - 4) == 0x2f) {\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" (if "if") (parenthesized_expression "(*(int *)(uVar8 - 4) == 0x2f)" (( "(") (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" (* "*") (cast_expression "(int *)(uVar8 - 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 - 4)" (( "(") (binary_expression "uVar8 - 4" (identifier "uVar8") (- "-") (number_literal "4")) () ")")))) (== "==") (number_literal "0x2f")) () ")")) (compound_statement "{\n              uVar15 = (uint)(((uint)param_6 & 5) == 5);\n            }" ({ "{") (expression_statement "uVar15 = (uint)(((uint)param_6 & 5) == 5);" (assignment_expression "uVar15 = (uint)(((uint)param_6 & 5) == 5)" (identifier "uVar15") (= "=") (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(((uint)param_6 & 5) == 5)" (( "(") (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" (( "(") (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "5")) () ")")) (== "==") (number_literal "5")) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15;" (assignment_expression "*(uint *)(puVar9 + iVar12 + -0x10) = uVar15" (pointer_expression "*(uint *)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(uint *)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016a75" (& "&") (identifier "UNK_00016a75"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" (identifier "piVar14") (= "=") (identifier "local_24")) (; ";")) (} "}")))) (expression_statement "local_24 = piVar14;" (assignment_expression "local_24 = piVar14" (identifier "local_24") (= "=") (identifier "piVar14")) (; ";")) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00016acb;" (goto "goto") (statement_identifier "code_r0x00016acb") (; ";"))) (} "}"))) (expression_statement "uVar8 = uVar8 + 4;" (assignment_expression "uVar8 = uVar8 + 4" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 4" (identifier "uVar8") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar8 <= local_44)" (( "(") (binary_expression "uVar8 <= local_44" (identifier "uVar8") (<= "<=") (identifier "local_44")) () ")")) (; ";")) (} "}"))) (expression_statement "local_24 = (int *)*piVar14;" (assignment_expression "local_24 = (int *)*piVar14" (identifier "local_24") (= "=") (cast_expression "(int *)*piVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar14" (* "*") (identifier "piVar14")))) (; ";")) (expression_statement "piVar14 = local_24;" (assignment_expression "piVar14 = local_24" (identifier "piVar14") (= "=") (identifier "local_24")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_24 != (int *)0x0)" (( "(") (binary_expression "local_24 != (int *)0x0" (identifier "local_24") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";"))) (goto_statement "goto code_r0x00016b66;" (goto "goto") (statement_identifier "code_r0x00016b66") (; ";")) (labeled_statement "code_r0x00016acb:\n  uVar1 = 0;" (statement_identifier "code_r0x00016acb") (: ":") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto code_r0x000167c5;" (goto "goto") (statement_identifier "code_r0x000167c5") (; ";")) (while_statement "while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }" (while "while") (parenthesized_expression "(uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44)" (( "(") (comma_expression "uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44" (assignment_expression "uVar8 = uVar8 + 4" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 4" (identifier "uVar8") (+ "+") (number_literal "4"))) (, ",") (comma_expression "piVar14 = local_48, uVar8 <= local_44" (assignment_expression "piVar14 = local_48" (identifier "piVar14") (= "=") (identifier "local_48")) (, ",") (binary_expression "uVar8 <= local_44" (identifier "uVar8") (<= "<=") (identifier "local_44")))) () ")")) (compound_statement "{\ncode_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;\n    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;\n    iVar5 = FUN_00016c70();\n    if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }\n  }" ({ "{") (labeled_statement "code_r0x00016b00:\n    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (statement_identifier "code_r0x00016b00") (: ":") (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar6")) (; ";"))) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = local_30;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = local_30" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "local_30")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016b14" (& "&") (identifier "UNK_00016b14"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar14 = (int *)*piVar14;\n      if (piVar14 != (int *)0x0) goto code_r0x00016b00;\n      ppiVar4 = local_30;\n      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }\n      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;\n      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;\n      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;\n      iVar5 = FUN_00016c70();\n      if (iVar5 == 0) goto code_r0x00016acb;\n    }" ({ "{") (expression_statement "piVar14 = (int *)*piVar14;" (assignment_expression "piVar14 = (int *)*piVar14" (identifier "piVar14") (= "=") (cast_expression "(int *)*piVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar14" (* "*") (identifier "piVar14")))) (; ";")) (if_statement "if (piVar14 != (int *)0x0) goto code_r0x00016b00;" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto code_r0x00016b00;" (goto "goto") (statement_identifier "code_r0x00016b00") (; ";"))) (expression_statement "ppiVar4 = local_30;" (assignment_expression "ppiVar4 = local_30" (identifier "ppiVar4") (= "=") (identifier "local_30")) (; ";")) (if_statement "if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }" (if "if") (parenthesized_expression "((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f))" (( "(") (binary_expression "(local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)" (parenthesized_expression "(local_38 != uVar8)" (( "(") (binary_expression "local_38 != uVar8" (identifier "local_38") (!= "!=") (identifier "uVar8")) () ")")) (&& "&&") (parenthesized_expression "(ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)" (( "(") (comma_expression "ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f" (assignment_expression "ppiVar4 = (int **)0x0" (identifier "ppiVar4") (= "=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (, ",") (binary_expression "*(int *)(uVar8 - 4) == 0x2f" (pointer_expression "*(int *)(uVar8 - 4)" (* "*") (cast_expression "(int *)(uVar8 - 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 - 4)" (( "(") (binary_expression "uVar8 - 4" (identifier "uVar8") (- "-") (number_literal "4")) () ")")))) (== "==") (number_literal "0x2f"))) () ")"))) () ")")) (compound_statement "{\n        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);\n      }" ({ "{") (expression_statement "ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);" (assignment_expression "ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5)" (identifier "ppiVar4") (= "=") (cast_expression "(int **)(uint)(((uint)param_6 & 5) == 5)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (call_expression "(uint)(((uint)param_6 & 5) == 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(((uint)param_6 & 5) == 5)" (( "(") (binary_expression "((uint)param_6 & 5) == 5" (parenthesized_expression "((uint)param_6 & 5)" (( "(") (binary_expression "(uint)param_6 & 5" (cast_expression "(uint)param_6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_6")) (& "&") (number_literal "5")) () ")")) (== "==") (number_literal "5")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0xc)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0xc)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0xc)" (( "(") (binary_expression "puVar9 + iVar12 + -0xc" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "ppiVar6")) (; ";")) (expression_statement "*(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;" (assignment_expression "*(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4" (pointer_expression "*(int ***)(puVar9 + iVar12 + -0x10)" (* "*") (cast_expression "(int ***)(puVar9 + iVar12 + -0x10)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x10)" (( "(") (binary_expression "puVar9 + iVar12 + -0x10" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "ppiVar4")) (; ";")) (expression_statement "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;" (assignment_expression "*(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53" (pointer_expression "*(undefined **)(puVar9 + iVar12 + -0x14)" (* "*") (cast_expression "(undefined **)(puVar9 + iVar12 + -0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar9 + iVar12 + -0x14)" (( "(") (binary_expression "puVar9 + iVar12 + -0x14" (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (pointer_expression "&UNK_00016b53" (& "&") (identifier "UNK_00016b53"))) (; ";")) (expression_statement "iVar5 = FUN_00016c70();" (assignment_expression "iVar5 = FUN_00016c70()" (identifier "iVar5") (= "=") (call_expression "FUN_00016c70()" (identifier "FUN_00016c70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto code_r0x00016acb;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00016acb;" (goto "goto") (statement_identifier "code_r0x00016acb") (; ";"))) (} "}"))) (} "}"))) (labeled_statement "code_r0x00016b66:\n  uVar1 = 1;" (statement_identifier "code_r0x00016b66") (: ":") (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" (identifier "uVar1") (= "=") (number_literal "1")) (; ";"))) (expression_statement "puVar10 = puVar9 + iVar12;" (assignment_expression "puVar10 = puVar9 + iVar12" (identifier "puVar10") (= "=") (binary_expression "puVar9 + iVar12" (identifier "puVar9") (+ "+") (identifier "iVar12"))) (; ";")) (labeled_statement "code_r0x000167c5:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" (statement_identifier "code_r0x000167c5") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    *(undefined4 *)(puVar10 + -4) = 0x16c2c;\n    FUN_0001a150();\n  }" ({ "{") (expression_statement "*(undefined4 *)(puVar10 + -4) = 0x16c2c;" (assignment_expression "*(undefined4 *)(puVar10 + -4) = 0x16c2c" (pointer_expression "*(undefined4 *)(puVar10 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar10 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + -4)" (( "(") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x16c2c")) (; ";")) (expression_statement "FUN_0001a150();" (call_expression "FUN_0001a150()" (identifier "FUN_0001a150") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3
function_1(type_1 opt,type_2 *var_4,type_2 *string,type_2 *string_end,type_3 no_leading_period,
          int var_21)

{
  type_4 **pppVar1;
  int var_23;
  type_2 *var_28;
  char *var_8;
  type_2 *pwVar5;
  type_5 var_24;
  type_2 *pwVar7;
  type_4 *var_10;
  type_4 *var_25;
  type_6 *var_6;
  type_6 *var_11;
  type_4 *var_9;
  type_4 *var_13;
  int var_12;
  type_4 *var_3;
  type_5 uVar15;
  int var_1;
  type_7 in_stack_00000009;
  type_6 auStack_5c [11];
  type_8 local_51;
  type_2 *var_27;
  type_5 var_20;
  type_4 *local_48;
  type_2 *var_18;
  type_2 *local_40;
  type_4 *var_14;
  type_2 *var_19;
  type_4 *local_34;
  type_4 *local_30;
  type_4 *var_16;
  int var_29;
  type_9 uStack_14;
  
  uStack_14 = 0x1670d;
  var_18 = string_end;
  var_20 = _no_leading_period;
  local_51 = no_leading_period;
  var_29 = *(int *)(var_1 + 0x14);
  var_16 = (type_4 *)0x0;
  var_27 = var_4;
  local_40 = (type_2 *)opt;
  var_19 = string;
  var_14 = (type_4 *)var_2(var_4);
  var_6 = auStack_5c;
  var_3 = (type_4 *)var_4[1];
  if (var_3 != (type_4 *)0x0) {
    var_9 = (type_4 *)(var_4 + 1);
    local_34 = (type_4 *)&var_16;
    var_25 = (type_4 *)0xc0000601;
    local_30 = var_9;
    var_6 = auStack_5c;
    var_12 = 0;
LAB_00016787:
    var_10 = local_30;
    var_13 = var_9;
    if (var_3 != (type_4 *)0x5b) goto LAB_0001678c;
    if (var_5 == 0) {
      local_48 = var_25;
      *(char **)(var_6 + -0x10) = "POSIXLY_CORRECT";
      *(type_9 *)(var_6 + -0x14) = 0x168fa;
      var_8 = var_7(*(char **)(var_6 + -0x10));
      var_5 = -(type_5)(var_8 == (char *)0x0) | 1;
      var_25 = local_48;
    }
    var_3 = var_9[1].next;
    if ((var_3 == (type_4 *)0x21) ||
       ((var_5 < 0 && (var_3 == (type_4 *)0x5e)))) {
      var_10 = var_9 + 2;
      var_3 = var_9[2].next;
    }
    else {
      var_10 = var_9 + 1;
    }
    if (var_3 == (type_4 *)0x5d) {
      var_3 = var_10[1].next;
      var_10 = var_10 + 1;
    }
    while (var_9 = var_10 + 1, var_3 != (type_4 *)0x5d) {
      if (var_3 == (type_4 *)0x0) goto LAB_000167c0;
      var_10 = var_9;
      var_3 = var_9->next;
    }
    var_3 = var_10[1].next;
    goto LAB_00016783;
  }
LAB_000167c0:
  var_23 = -1;
  var_11 = var_6;
  goto LAB_000167c5;
LAB_0001678c:
  var_11 = (type_6 *)((int)&var_3[-9].next + 3);
  if (var_11 < (type_6 *)0x20) {
    if ((((type_5)var_25 >> ((type_5)var_11 & 0x1f) & 1) != 0) &&
       (var_13[1].next == (type_4 *)0x28)) goto LAB_000167e0;
    if (var_3 != (type_4 *)0x29) goto LAB_0001677d;
    if (var_12 != 0) {
      var_3 = var_13[1].next;
      var_9 = var_13 + 1;
      var_12 = var_12 + -1;
      if (var_3 != (type_4 *)0x0) goto LAB_00016787;
      goto LAB_000167c0;
    }
    if (1 < (int)local_40 - 0x3fU) {
      var_14 = (type_4 *)(((int)var_13 - (int)local_30 >> 2) + 1);
    }
    if ((0x1f3b < (type_5)((int)var_14 * 4)) || ((type_4 *)0x3fffffff < var_14))
    goto LAB_000167c0;
    var_12 = -((int)var_14 * 4 + 0x1fU & 0xfffffff0);
    var_11 = var_6 + var_12;
    var_3 = (type_4 *)((type_5)(var_6 + var_12 + 0xf) & 0xfffffff0);
    *(int *)(var_6 + var_12 + -8) = (int)var_13 - (int)local_30 >> 2;
    *(type_4 **)(var_6 + var_12 + -0xc) = var_10;
    *(type_4 **)(var_6 + var_12 + -0x10) = var_3 + 1;
    *(type_9 *)(var_6 + var_12 + -0x14) = 0x16978;
    pwVar5 = var_15(*(type_2 **)(var_6 + var_12 + -0x10),*(type_2 **)(var_6 + var_12 + -0xc)
                      ,*(size_t *)(var_6 + var_12 + -8));
    var_28 = var_18;
    var_24 = var_20;
    *pwVar5 = L'\0';
    var_3->next = (type_4 *)0x0;
    local_34->next = var_3;
    local_48 = var_16;
    if (var_16 == (type_4 *)0x0) {
      *(char **)(var_6 + var_12 + -4) = "ext_wmatch";
      *(type_9 *)(var_6 + var_12 + -8) = 0x454;
      *(char **)(var_6 + var_12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(var_6 + var_12 + -0x10) = "list != NULL";
                    /* WARNING: Subroutine does not return */
      *(type_9 *)(var_6 + var_12 + -0x14) = 0x16c27;
      var_17(*(char **)(var_6 + var_12 + -0x10),*(char **)(var_6 + var_12 + -0xc),
                    *(type_5 *)(var_6 + var_12 + -8),*(char **)(var_6 + var_12 + -4));
    }
    if (var_13[-1].next != (type_4 *)0x29) {
      *(char **)(var_6 + var_12 + -4) = "ext_wmatch";
      *(type_9 *)(var_6 + var_12 + -8) = 0x455;
      *(char **)(var_6 + var_12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(var_6 + var_12 + -0x10) = "p[-1] == L_(\')\')";
                    /* WARNING: Subroutine does not return */
      *(type_10 **)(var_6 + var_12 + -0x14) = &UNK_00016c6a;
      var_17(*(char **)(var_6 + var_12 + -0x10),*(char **)(var_6 + var_12 + -0xc),
                    *(type_5 *)(var_6 + var_12 + -8),*(char **)(var_6 + var_12 + -4));
    }
    switch(local_40) {
    case (type_2 *)0x21:
      if (var_18 < var_19) goto LAB_00016b66;
      local_34 = var_13;
      local_30 = (type_4 *)(var_20 & 0xff);
      var_3 = local_48;
      var_24 = var_21 & 0xfffffffb;
      var_28 = var_19;
      if ((var_21 & 1U) != 0) {
        var_24 = var_21;
      }
      goto LAB_00016b00;
    default:
      *(char **)(var_6 + var_12 + -4) = "ext_wmatch";
      *(type_9 *)(var_6 + var_12 + -8) = 0x4ad;
      *(char **)(var_6 + var_12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(var_6 + var_12 + -0x10) = "! \"Invalid extended matching operator\"";
                    /* WARNING: Subroutine does not return */
      *(type_9 *)(var_6 + var_12 + -0x14) = 0x16c4b;
      var_17(*(char **)(var_6 + var_12 + -0x10),*(char **)(var_6 + var_12 + -0xc),
                    *(type_5 *)(var_6 + var_12 + -8),*(char **)(var_6 + var_12 + -4));
    case (type_2 *)0x2a:
      var_24 = var_20 & 0xff;
      *(int *)(var_6 + var_12 + -0xc) = var_21;
      pwVar5 = var_19;
      *(type_5 *)(var_6 + var_12 + -0x10) = var_24;
      *(type_9 *)(var_6 + var_12 + -0x14) = 0x169d6;
      var_23 = var_22((type_2 *)var_13,pwVar5,var_28,(type_3)var_6[var_12 + -0x10],
                                *(int *)(var_6 + var_12 + -0xc));
      if (var_23 == 0) goto LAB_00016acb;
    case (type_2 *)0x2b:
      var_14 = var_13;
      var_24 = var_21 & 0xfffffffb;
      if ((type_4 *)(var_21 & 1U) != (type_4 *)0x0) {
        var_24 = var_21;
      }
      local_34 = (type_4 *)(var_21 & 1U);
      var_3 = local_48;
      goto LAB_000169fc;
    case (type_2 *)0x3f:
      uVar15 = var_20 & 0xff;
      *(int *)(var_6 + var_12 + -0xc) = var_21;
      var_28 = var_18;
      *(type_5 *)(var_6 + var_12 + -0x10) = uVar15;
      pwVar5 = var_19;
      *(type_9 *)(var_6 + var_12 + -0x14) = 0x16bdc;
      var_23 = var_22((type_2 *)var_13,pwVar5,var_28,(type_3)var_6[var_12 + -0x10],
                                *(int *)(var_6 + var_12 + -0xc));
      if (var_23 != 0) goto LAB_00016b74;
      var_23 = 0;
      var_11 = var_6 + var_12;
      goto LAB_000167c5;
    case (type_2 *)0x40:
LAB_00016b74:
      local_34 = (type_4 *)(var_24 & 0xff);
      local_30 = (type_4 *)(var_21 & 0xfffffffb);
      if ((var_21 & 1U) != 0) {
        local_30 = (type_4 *)var_21;
      }
      var_3 = local_48;
    }
    goto LAB_00016b96;
  }
  if ((var_3 == (type_4 *)0x7c) && (var_12 == 0)) {
    var_3 = var_14;
    if (1 < (int)local_40 - 0x3fU) {
      var_3 = (type_4 *)(((int)var_13 - (int)local_30 >> 2) + 1);
    }
    local_48 = var_25;
    if ((0x1f3b < (type_5)((int)var_3 * 4)) || ((type_4 *)0x3fffffff < var_3))
    goto LAB_000167c0;
    var_23 = -((int)var_3 * 4 + 0x1fU & 0xfffffff0);
    var_25 = (type_4 *)((type_5)(var_6 + var_23 + 0xf) & 0xfffffff0);
    *(int *)(var_6 + var_23 + -8) = (int)var_13 - (int)local_30 >> 2;
    *(type_4 **)(var_6 + var_23 + -0xc) = var_10;
    *(type_4 **)(var_6 + var_23 + -0x10) = var_25 + 1;
    *(type_9 *)(var_6 + var_23 + -0x14) = 0x168b5;
    var_28 = var_15(*(type_2 **)(var_6 + var_23 + -0x10),*(type_2 **)(var_6 + var_23 + -0xc),
                      *(size_t *)(var_6 + var_23 + -8));
    var_3 = local_34;
    var_9 = var_13 + 1;
    *var_28 = L'\0';
    var_25->next = (type_4 *)0x0;
    local_34 = var_25;
    var_3->next = var_25;
    var_3 = var_13[1].next;
    var_12 = 0;
    local_30 = var_9;
    var_25 = local_48;
    var_6 = var_6 + var_23;
  }
  else {
LAB_0001677d:
    var_3 = var_13[1].next;
    var_9 = var_13 + 1;
  }
LAB_00016783:
  if (var_3 == (type_4 *)0x0) goto LAB_000167c0;
  goto LAB_00016787;
LAB_000167e0:
  var_12 = var_12 + 1;
  var_13 = var_13 + 1;
  var_3 = (type_4 *)0x28;
  goto LAB_0001678c;
  while( true ) {
    var_3 = var_3->next;
    var_16 = var_3;
    if (var_3 == (type_4 *)0x0) break;
LAB_00016b96:
    *(type_4 **)(var_6 + var_12 + -0xc) = var_13;
    *(type_4 **)(var_6 + var_12 + -0x10) = var_3 + 1;
    *(type_9 *)(var_6 + var_12 + -0x14) = 0x16ba3;
    pwVar7 = var_26(*(type_2 **)(var_6 + var_12 + -0x10),*(type_2 **)(var_6 + var_12 + -0xc));
    *(type_4 **)(var_6 + var_12 + -0xc) = local_30;
    var_28 = var_18;
    *(type_4 **)(var_6 + var_12 + -0x10) = local_34;
    pwVar5 = var_19;
    *(type_9 *)(var_6 + var_12 + -0x14) = 0x16bb6;
    var_23 = var_22(pwVar7,pwVar5,var_28,(type_3)var_6[var_12 + -0x10],
                              *(int *)(var_6 + var_12 + -0xc));
    if (var_23 == 0) {
      var_23 = 0;
      var_11 = var_6 + var_12;
      goto LAB_000167c5;
    }
  }
  goto LAB_00016b66;
LAB_000169fc:
  do {
    if (var_19 <= var_18) {
      local_30 = (type_4 *)(type_5)local_51;
      local_40 = var_27 + -1;
      var_28 = var_19;
      do {
        pwVar5 = var_19;
        *(type_5 *)(var_6 + var_12 + -0xc) = var_24;
        *(type_4 **)(var_6 + var_12 + -0x10) = local_30;
        *(type_9 *)(var_6 + var_12 + -0x14) = 0x16a9f;
        var_23 = var_22((type_2 *)(var_3 + 1),pwVar5,var_28,
                                  (type_3)var_6[var_12 + -0x10],*(int *)(var_6 + var_12 + -0xc));
        pwVar7 = var_19;
        pwVar5 = var_18;
        if (var_23 == 0) {
          if (var_19 == var_28) {
            *(type_5 *)(var_6 + var_12 + -0xc) = var_24;
            var_3 = var_14;
            *(type_4 **)(var_6 + var_12 + -0x10) = local_30;
            *(type_9 *)(var_6 + var_12 + -0x14) = 0x16ac4;
            var_23 = var_22((type_2 *)var_3,pwVar7,pwVar5,
                                      (type_3)var_6[var_12 + -0x10],
                                      *(int *)(var_6 + var_12 + -0xc));
            var_3 = var_16;
          }
          else {
            uVar15 = 0;
            if (var_28[-1] == L'/') {
              uVar15 = (type_5)((var_21 & 5U) == 5);
            }
            *(type_5 *)(var_6 + var_12 + -0xc) = var_24;
            *(type_5 *)(var_6 + var_12 + -0x10) = uVar15;
            var_3 = var_14;
            *(type_9 *)(var_6 + var_12 + -0x14) = 0x16a45;
            var_23 = var_22((type_2 *)var_3,var_28,pwVar5,
                                      (type_3)var_6[var_12 + -0x10],
                                      *(int *)(var_6 + var_12 + -0xc));
            pwVar5 = var_18;
            if (var_23 == 0) goto LAB_00016acb;
            uVar15 = 0;
            if (var_28[-1] == L'/') {
              uVar15 = (type_5)((var_21 & 5U) == 5);
            }
            *(type_5 *)(var_6 + var_12 + -0xc) = var_24;
            *(type_5 *)(var_6 + var_12 + -0x10) = uVar15;
            pwVar7 = local_40;
            *(type_9 *)(var_6 + var_12 + -0x14) = 0x16a75;
            var_23 = var_22(pwVar7,var_28,pwVar5,(type_3)var_6[var_12 + -0x10],
                                      *(int *)(var_6 + var_12 + -0xc));
            var_3 = var_16;
          }
          var_16 = var_3;
          if (var_23 == 0) goto LAB_00016acb;
        }
        var_28 = var_28 + 1;
      } while (var_28 <= var_18);
    }
    var_3 = var_3->next;
    var_16 = var_3;
  } while (var_3 != (type_4 *)0x0);
  goto LAB_00016b66;
LAB_00016acb:
  var_23 = 0;
  goto LAB_000167c5;
  while (var_28 = var_28 + 1, var_3 = local_48, var_28 <= var_18) {
LAB_00016b00:
    pwVar5 = var_19;
    *(type_5 *)(var_6 + var_12 + -0xc) = var_24;
    *(type_4 **)(var_6 + var_12 + -0x10) = local_30;
    *(type_9 *)(var_6 + var_12 + -0x14) = 0x16b14;
    var_23 = var_22((type_2 *)(var_3 + 1),pwVar5,var_28,(type_3)var_6[var_12 + -0x10],
                              *(int *)(var_6 + var_12 + -0xc));
    pwVar5 = var_18;
    if (var_23 != 0) {
      pppVar1 = &var_3->next;
      var_3 = *pppVar1;
      if (*pppVar1 != (type_4 *)0x0) goto LAB_00016b00;
      var_3 = local_30;
      if ((var_19 != var_28) && (var_3 = (type_4 *)0x0, var_28[-1] == L'/')) {
        var_3 = (type_4 *)(type_5)((var_21 & 5U) == 5);
      }
      *(type_5 *)(var_6 + var_12 + -0xc) = var_24;
      *(type_4 **)(var_6 + var_12 + -0x10) = var_3;
      var_3 = local_34;
      *(type_9 *)(var_6 + var_12 + -0x14) = 0x16b53;
      var_23 = var_22((type_2 *)var_3,var_28,pwVar5,(type_3)var_6[var_12 + -0x10],
                                *(int *)(var_6 + var_12 + -0xc));
      if (var_23 == 0) goto LAB_00016acb;
    }
  }
LAB_00016b66:
  var_23 = 1;
  var_11 = var_6 + var_12;
LAB_000167c5:
  if (var_29 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    *(type_9 *)(var_11 + -4) = 0x16c2c;
    var_30();
  }
  return var_23;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  undefined4 uVar1;
  char *pcVar2;
  wchar_t *pwVar3;
  int **ppiVar4;
  int iVar5;
  int **ppiVar6;
  int *piVar7;
  uint uVar8;
  undefined1 *puVar9;
  undefined1 *puVar10;
  int **ppiVar11;
  int iVar12;
  int **ppiVar13;
  int *piVar14;
  uint uVar15;
  int in_GS_OFFSET;
  undefined1 auStack_5c [11];
  byte local_51;
  wchar_t *local_50;
  uint local_4c;
  int *local_48;
  uint local_44;
  wchar_t *local_40;
  int **local_3c;
  uint local_38;
  int **local_34;
  int **local_30;
  int *local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x1670d;
  local_44 = param_4;
  local_4c = param_5;
  local_51 = (byte)param_5;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_24 = (int *)0x0;
  local_50 = param_2;
  local_38 = param_3;
  local_3c = (int **)wcslen(param_2);
  puVar9 = auStack_5c;
  piVar14 = (int *)param_2[1];
  if (piVar14 != (int *)0x0) {
    ppiVar6 = (int **)(param_2 + 1);
    local_34 = &local_24;
    piVar7 = (int *)0xc0000601;
    local_30 = ppiVar6;
    puVar9 = auStack_5c;
    iVar12 = 0;
LAB_00016787:
    ppiVar4 = local_30;
    ppiVar11 = ppiVar6;
    if (piVar14 != (int *)0x5b) goto LAB_0001678c;
    if (DAT_00022330 == 0) {
      local_48 = piVar7;
      *(char **)(puVar9 + -0x10) = "POSIXLY_CORRECT";
      *(undefined4 *)(puVar9 + -0x14) = 0x168fa;
      pcVar2 = getenv(*(char **)(puVar9 + -0x10));
      DAT_00022330 = -(uint)(pcVar2 == (char *)0x0) | 1;
      piVar7 = local_48;
    }
    piVar14 = ppiVar6[1];
    if ((piVar14 == (int *)0x21) || (((int)DAT_00022330 < 0 && (piVar14 == (int *)0x5e)))) {
      ppiVar4 = ppiVar6 + 2;
      piVar14 = ppiVar6[2];
    }
    else {
      ppiVar4 = ppiVar6 + 1;
    }
    if (piVar14 == (int *)0x5d) {
      piVar14 = ppiVar4[1];
      ppiVar4 = ppiVar4 + 1;
    }
    while (ppiVar6 = ppiVar4 + 1, piVar14 != (int *)0x5d) {
      if (piVar14 == (int *)0x0) goto LAB_000167c0;
      ppiVar4 = ppiVar6;
      piVar14 = *ppiVar6;
    }
    piVar14 = ppiVar4[1];
    goto LAB_00016783;
  }
LAB_000167c0:
  uVar1 = 0xffffffff;
  puVar10 = puVar9;
  goto code_r0x000167c5;
LAB_0001678c:
  if ((uint)((int)piVar14 + L'\xffffffdf') < 0x20) {
    if ((((uint)piVar7 >> ((int)piVar14 + L'\xffffffdf' & 0x1fU) & 1) != 0) &&
       (ppiVar11[1] == (int *)0x28)) goto LAB_000167e0;
    if (piVar14 != (int *)0x29) goto LAB_0001677d;
    if (iVar12 != 0) {
      piVar14 = ppiVar11[1];
      ppiVar6 = ppiVar11 + 1;
      iVar12 = iVar12 + -1;
      if (piVar14 != (int *)0x0) goto LAB_00016787;
      goto LAB_000167c0;
    }
    if (1 < (int)local_40 - 0x3fU) {
      local_3c = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);
    }
    if ((0x1f3b < (uint)((int)local_3c * 4)) || ((int **)0x3fffffff < local_3c)) goto LAB_000167c0;
    iVar12 = -((int)local_3c * 4 + 0x1fU & 0xfffffff0);
    puVar10 = puVar9 + iVar12;
    piVar14 = (int *)((uint)(puVar9 + iVar12 + 0xf) & 0xfffffff0);
    *(int *)(puVar9 + iVar12 + -8) = (int)ppiVar11 - (int)local_30 >> 2;
    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar4;
    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;
    *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16978;
    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar12 + -0x10),*(wchar_t **)(puVar9 + iVar12 + -0xc),
                      *(size_t *)(puVar9 + iVar12 + -8));
    uVar8 = local_4c;
    *pwVar3 = L'\0';
    *piVar14 = 0;
    *local_34 = piVar14;
    local_48 = local_24;
    if (local_24 == (int *)0x0) {
      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x454;
      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar9 + iVar12 + -0x10) = "list != NULL";
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c27;
      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),
                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));
    }
    if (ppiVar11[-1] != (int *)0x29) {
      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x455;
      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar9 + iVar12 + -0x10) = "p[-1] == L_(\')\')";
                    /* WARNING: Subroutine does not return */
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016c6a;
      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),
                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));
    }
    switch(local_40) {
    case (wchar_t *)0x21:
      if (local_44 < local_38) goto code_r0x00016b66;
      local_30 = (int **)(local_4c & 0xff);
      piVar14 = local_48;
      local_34 = ppiVar11;
      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);
      uVar8 = local_38;
      if (((uint)param_6 & 1) != 0) {
        ppiVar6 = param_6;
      }
      goto code_r0x00016b00;
    default:
      *(char **)(puVar9 + iVar12 + -4) = "ext_wmatch";
      *(undefined4 *)(puVar9 + iVar12 + -8) = 0x4ad;
      *(char **)(puVar9 + iVar12 + -0xc) = "lib/fnmatch_loop.c";
      *(char **)(puVar9 + iVar12 + -0x10) = "! \"Invalid extended matching operator\"";
                    /* WARNING: Subroutine does not return */
      *(undefined4 *)(puVar9 + iVar12 + -0x14) = 0x16c4b;
      __assert_fail(*(char **)(puVar9 + iVar12 + -0x10),*(char **)(puVar9 + iVar12 + -0xc),
                    *(uint *)(puVar9 + iVar12 + -8),*(char **)(puVar9 + iVar12 + -4));
    case (wchar_t *)0x2a:
      uVar8 = local_4c & 0xff;
      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;
      *(uint *)(puVar9 + iVar12 + -0x10) = uVar8;
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_000169d6;
      iVar5 = FUN_00016c70();
      if (iVar5 == 0) goto code_r0x00016acb;
    case (wchar_t *)0x2b:
      local_34 = (int **)((uint)param_6 & 1);
      piVar14 = local_48;
      local_3c = ppiVar11;
      ppiVar6 = (int **)((uint)param_6 & 0xfffffffb);
      if (local_34 != (int **)0x0) {
        ppiVar6 = param_6;
      }
      goto code_r0x000169fc;
    case (wchar_t *)0x3f:
      uVar15 = local_4c & 0xff;
      *(int ***)(puVar9 + iVar12 + -0xc) = param_6;
      *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bdc;
      iVar5 = FUN_00016c70();
      if (iVar5 != 0) goto code_r0x00016b74;
      uVar1 = 0;
      puVar10 = puVar9 + iVar12;
      goto code_r0x000167c5;
    case (wchar_t *)0x40:
code_r0x00016b74:
      local_34 = (int **)(uVar8 & 0xff);
      local_30 = (int **)((uint)param_6 & 0xfffffffb);
      piVar14 = local_48;
      if (((uint)param_6 & 1) != 0) {
        local_30 = param_6;
      }
    }
    goto code_r0x00016b96;
  }
  if ((piVar14 == (int *)0x7c) && (iVar12 == 0)) {
    ppiVar6 = local_3c;
    if (1 < (int)local_40 - 0x3fU) {
      ppiVar6 = (int **)(((int)ppiVar11 - (int)local_30 >> 2) + 1);
    }
    local_48 = piVar7;
    if ((0x1f3b < (uint)((int)ppiVar6 * 4)) || ((int **)0x3fffffff < ppiVar6)) goto LAB_000167c0;
    iVar5 = -((int)ppiVar6 * 4 + 0x1fU & 0xfffffff0);
    ppiVar13 = (int **)((uint)(puVar9 + iVar5 + 0xf) & 0xfffffff0);
    *(int *)(puVar9 + iVar5 + -8) = (int)ppiVar11 - (int)local_30 >> 2;
    *(int ***)(puVar9 + iVar5 + -0xc) = ppiVar4;
    *(int ***)(puVar9 + iVar5 + -0x10) = ppiVar13 + 1;
    *(undefined4 *)(puVar9 + iVar5 + -0x14) = 0x168b5;
    pwVar3 = wmempcpy(*(wchar_t **)(puVar9 + iVar5 + -0x10),*(wchar_t **)(puVar9 + iVar5 + -0xc),
                      *(size_t *)(puVar9 + iVar5 + -8));
    ppiVar4 = local_34;
    ppiVar6 = ppiVar11 + 1;
    *pwVar3 = L'\0';
    *ppiVar13 = (int *)0x0;
    local_34 = ppiVar13;
    *ppiVar4 = (int *)ppiVar13;
    piVar14 = ppiVar11[1];
    iVar12 = 0;
    local_30 = ppiVar6;
    piVar7 = local_48;
    puVar9 = puVar9 + iVar5;
  }
  else {
LAB_0001677d:
    piVar14 = ppiVar11[1];
    ppiVar6 = ppiVar11 + 1;
  }
LAB_00016783:
  if (piVar14 == (int *)0x0) goto LAB_000167c0;
  goto LAB_00016787;
LAB_000167e0:
  iVar12 = iVar12 + 1;
  ppiVar11 = ppiVar11 + 1;
  piVar14 = (int *)0x28;
  goto LAB_0001678c;
  while (local_24 = (int *)*piVar14, piVar14 = local_24, local_24 != (int *)0x0) {
code_r0x00016b96:
    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar11;
    *(int **)(puVar9 + iVar12 + -0x10) = piVar14 + 1;
    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ba3;
    func_0x00012380();
    *(int ***)(puVar9 + iVar12 + -0xc) = local_30;
    *(int ***)(puVar9 + iVar12 + -0x10) = local_34;
    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016bb6;
    iVar5 = FUN_00016c70();
    if (iVar5 == 0) {
      uVar1 = 0;
      puVar10 = puVar9 + iVar12;
      goto code_r0x000167c5;
    }
  }
  goto code_r0x00016b66;
code_r0x000169fc:
  do {
    if (local_38 <= local_44) {
      local_30 = (int **)(uint)local_51;
      local_40 = local_50 + -1;
      uVar8 = local_38;
      do {
        *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
        *(int ***)(puVar9 + iVar12 + -0x10) = local_30;
        *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a9f;
        iVar5 = FUN_00016c70();
        if (iVar5 == 0) {
          if (local_38 == uVar8) {
            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
            *(int ***)(puVar9 + iVar12 + -0x10) = local_30;
            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016ac4;
            iVar5 = FUN_00016c70();
            piVar14 = local_24;
          }
          else {
            uVar15 = 0;
            if (*(int *)(uVar8 - 4) == 0x2f) {
              uVar15 = (uint)(((uint)param_6 & 5) == 5);
            }
            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;
            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a45;
            iVar5 = FUN_00016c70();
            if (iVar5 == 0) goto code_r0x00016acb;
            uVar15 = 0;
            if (*(int *)(uVar8 - 4) == 0x2f) {
              uVar15 = (uint)(((uint)param_6 & 5) == 5);
            }
            *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
            *(uint *)(puVar9 + iVar12 + -0x10) = uVar15;
            *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016a75;
            iVar5 = FUN_00016c70();
            piVar14 = local_24;
          }
          local_24 = piVar14;
          if (iVar5 == 0) goto code_r0x00016acb;
        }
        uVar8 = uVar8 + 4;
      } while (uVar8 <= local_44);
    }
    local_24 = (int *)*piVar14;
    piVar14 = local_24;
  } while (local_24 != (int *)0x0);
  goto code_r0x00016b66;
code_r0x00016acb:
  uVar1 = 0;
  goto code_r0x000167c5;
  while (uVar8 = uVar8 + 4, piVar14 = local_48, uVar8 <= local_44) {
code_r0x00016b00:
    *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
    *(int ***)(puVar9 + iVar12 + -0x10) = local_30;
    *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b14;
    iVar5 = FUN_00016c70();
    if (iVar5 != 0) {
      piVar14 = (int *)*piVar14;
      if (piVar14 != (int *)0x0) goto code_r0x00016b00;
      ppiVar4 = local_30;
      if ((local_38 != uVar8) && (ppiVar4 = (int **)0x0, *(int *)(uVar8 - 4) == 0x2f)) {
        ppiVar4 = (int **)(uint)(((uint)param_6 & 5) == 5);
      }
      *(int ***)(puVar9 + iVar12 + -0xc) = ppiVar6;
      *(int ***)(puVar9 + iVar12 + -0x10) = ppiVar4;
      *(undefined **)(puVar9 + iVar12 + -0x14) = &UNK_00016b53;
      iVar5 = FUN_00016c70();
      if (iVar5 == 0) goto code_r0x00016acb;
    }
  }
code_r0x00016b66:
  uVar1 = 1;
  puVar10 = puVar9 + iVar12;
code_r0x000167c5:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)(puVar10 + -4) = 0x16c2c;
    FUN_0001a150();
  }
  return uVar1;
}

