
WORD_LIST * list_string(char *string,char *separators,wchar_t quoted)

{
  int *piVar1;
  byte bVar2;
  long lVar3;
  char *pcVar4;
  WORD_DESC *pWVar5;
  char *pcVar6;
  size_t sVar7;
  ushort **ppuVar8;
  ulong uVar9;
  char cVar10;
  byte bVar11;
  int iVar12;
  byte *pbVar13;
  long lVar14;
  long in_FS_OFFSET;
  bool bVar15;
  bool bVar16;
  bool bVar17;
  byte bVar18;
  wchar_t local_84;
  WORD_LIST *local_80;
  size_t local_78;
  wchar_t local_6c;
  wchar_t sindex;
  mbstate_t_conflict state;
  
  bVar18 = 0;
  lVar3 = *(long *)(in_FS_OFFSET + 0x28);
  if (string == (char *)0x0) {
    local_80 = (WORD_LIST *)0x0;
    goto LAB_00161e45;
  }
  bVar11 = *string;
  if (bVar11 == 0) {
    local_80 = (WORD_LIST *)0x0;
    goto LAB_00161e45;
  }
  bVar15 = false;
  if ((((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&
     (separators[2] == '\n')) {
    bVar15 = separators[3] == '\0';
  }
  if (ifs_value == (char *)0x0) {
    local_6c = L'\0';
  }
  else {
    cVar10 = *ifs_value;
    if (cVar10 == '\0') {
      local_6c = L'\0';
    }
    else {
      local_6c = L'\0';
      pcVar4 = ifs_value;
      do {
        if (cVar10 == '\x01') {
          local_6c = local_6c | 0x10;
        }
        else if (cVar10 == '\x7f') {
          local_6c = local_6c | 0x20;
        }
        pcVar4 = pcVar4 + 1;
      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));
    }
  }
  bVar16 = separators == (char *)0x0;
  if ((quoted == L'\0') || (bVar16)) {
    bVar2 = *separators;
    if (bVar2 != 0) {
      cVar10 = separators[1];
      do {
        if (cVar10 == '\0') {
          if (bVar2 == bVar11) goto LAB_00161b10;
LAB_00161b43:
          if (bVar11 == 0) {
            local_80 = (WORD_LIST *)0x0;
            goto LAB_00161e45;
          }
          local_78 = 0;
          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;
          goto LAB_00161b59;
        }
        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;
LAB_00161b10:
        ppuVar8 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;
        string = (char *)((byte *)string + 1);
        bVar11 = *string;
      } while (bVar11 != 0);
      local_80 = (WORD_LIST *)0x0;
      goto LAB_00161e45;
    }
LAB_00161b59:
    local_78 = 0;
    if (*string != 0) goto LAB_00161a9f;
  }
  else {
    if (*separators == '\0') goto LAB_00161b59;
LAB_00161a9f:
    local_78 = 1;
    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {
      uVar9 = 0xffffffffffffffff;
      pbVar13 = (byte *)string;
      do {
        if (uVar9 == 0) break;
        uVar9 = uVar9 - 1;
        bVar11 = *pbVar13;
        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;
      } while (bVar11 != 0);
      local_78 = ~uVar9 - 1;
    }
  }
LAB_00161b6c:
  sindex = L'\0';
  local_80 = (WORD_LIST *)0x0;
LAB_00161f45:
  do {
    if ((((byte *)string)[sindex] == 0) ||
       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),
       pcVar4 == (char *)0x0)) goto LAB_00161e26;
    if (*pcVar4 != '\x7f') {
      if (*pcVar4 != '\0') {
LAB_00161b92:
        remove_quoted_nulls(pcVar4);
        pWVar5 = make_word(pcVar4);
        local_80 = make_word_list(pWVar5,local_80);
        piVar1 = &local_80->word->flags;
        *piVar1 = *piVar1 & 0xfffbffff;
        if ((quoted & 3U) != 0) {
          piVar1 = &local_80->word->flags;
          *piVar1 = *piVar1 | 2;
        }
        goto LAB_00161fb4;
      }
      if (!bVar15) {
        ppuVar8 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {
          pWVar5 = alloc_word_desc();
          pcVar6 = (char *)xmalloc(3);
          *pcVar6 = '\x7f';
          pcVar6[1] = '\0';
          pWVar5->word = pcVar6;
          pWVar5->flags = pWVar5->flags | 0x40002;
          local_80 = make_word_list(pWVar5,local_80);
        }
        goto LAB_00161fb4;
      }
      free(pcVar4);
      lVar14 = (long)sindex;
      pbVar13 = (byte *)string + lVar14;
      bVar18 = *pbVar13;
      if (bVar18 != 0) goto LAB_00161f29;
      goto LAB_00161f45;
    }
    if (pcVar4[1] != '\0') goto LAB_00161b92;
    pWVar5 = alloc_word_desc();
    pcVar6 = (char *)xmalloc(3);
    *pcVar6 = '\x7f';
    pcVar6[1] = '\0';
    pWVar5->word = pcVar6;
    pWVar5->flags = pWVar5->flags | 0x40002;
    local_80 = make_word_list(pWVar5,local_80);
LAB_00161fb4:
    free(pcVar4);
    local_84 = sindex;
    lVar14 = (long)sindex;
    pbVar13 = (byte *)string + lVar14;
    bVar18 = *pbVar13;
  } while (bVar18 == 0);
  if ((bVar15) || (bVar16)) {
LAB_00161f29:
    local_84 = sindex;
    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {
LAB_00161e8a:
      bVar17 = true;
    }
    else {
      if (bVar18 == 0) goto LAB_00161f45;
      bVar17 = false;
    }
  }
  else {
    ppuVar8 = __ctype_b_loc();
    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;
    bVar17 = false;
  }
  state.__count = L'\0';
  state.__value = (anon_union_4_2_91654ee9_for___value)0x0;
  if (locale_mb_cur_max < 2) {
    sindex = local_84 + L'\x01';
    goto LAB_00161c7f;
  }
  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {
    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {
      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);
      if (0xfffffffffffffffd < sVar7) {
        sindex = sindex + L'\x01';
        goto LAB_00161c7f;
      }
      if (sVar7 == 0) {
        sindex = sindex + L'\x01';
        goto LAB_00161c7f;
      }
    }
  }
  else {
    sVar7 = 1;
  }
  sindex = sindex + (int)sVar7;
LAB_00161c7f:
  lVar14 = (long)sindex;
  bVar18 = ((byte *)string)[lVar14];
  while (bVar18 != 0) {
    iVar12 = (int)lVar14;
    if (bVar16 || bVar15) {
      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;
LAB_00161d08:
      if ((bVar18 != 0) && (bVar17)) {
        bVar11 = *separators;
        bVar2 = bVar11;
joined_r0x00161d23:
        if (bVar2 != 0) {
          if (separators[1] == '\0') {
            bVar17 = bVar18 == bVar11;
          }
          else {
            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';
          }
          if (bVar17) {
            if (bVar16 || bVar15) {
              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;
            }
            else {
              ppuVar8 = __ctype_b_loc();
              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);
            }
            if (bVar17 != false) {
              sindex = iVar12 + L'\x01';
              bVar18 = ((byte *)string)[sindex];
              if (bVar18 != 0) {
                lVar14 = (long)(iVar12 + 2);
                goto LAB_00161e10;
              }
            }
          }
        }
      }
      break;
    }
    ppuVar8 = __ctype_b_loc();
    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;
LAB_00161ca6:
    bVar11 = *separators;
    if (bVar11 == 0) break;
    if (separators[1] == '\0') {
      if (bVar11 != bVar18) {
LAB_00161d2f:
        bVar2 = bVar18;
        if (bVar17) goto joined_r0x00161d23;
        break;
      }
    }
    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;
    sindex = iVar12 + L'\x01';
    lVar14 = lVar14 + 1;
    bVar18 = ((byte *)string)[lVar14];
  }
  goto LAB_00161f45;
  while( true ) {
    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;
    sindex = (wchar_t)lVar14;
    bVar18 = ((byte *)string)[lVar14];
    lVar14 = lVar14 + 1;
    if (bVar18 == 0) break;
LAB_00161e10:
    if (bVar16 || bVar15) {
      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;
    }
    else {
      ppuVar8 = __ctype_b_loc();
      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;
    }
  }
  goto LAB_00161f45;
LAB_00161e26:
  if ((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)) {
    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);
  }
LAB_00161e45:
  if (lVar3 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return local_80;
}



long * list_string(byte *param_1,byte *param_2,uint param_3)

{
  byte bVar1;
  byte bVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined1 *puVar6;
  size_t sVar7;
  ushort **ppuVar8;
  ulong uVar9;
  char cVar10;
  byte bVar11;
  int iVar12;
  byte *pbVar13;
  long lVar14;
  long in_FS_OFFSET;
  bool bVar15;
  bool bVar16;
  bool bVar17;
  byte bVar18;
  int local_84;
  long *local_80;
  long local_78;
  uint local_6c;
  int local_4c;
  mbstate_t local_48;
  long local_40;
  
  bVar18 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == (byte *)0x0) {
    local_80 = (long *)0x0;
    goto LAB_00161e45;
  }
  bVar11 = *param_1;
  if (bVar11 == 0) {
    local_80 = (long *)0x0;
    goto LAB_00161e45;
  }
  bVar15 = false;
  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))
  {
    bVar15 = param_2[3] == 0;
  }
  if (ifs_value == (char *)0x0) {
    local_6c = 0;
  }
  else {
    cVar10 = *ifs_value;
    if (cVar10 == '\0') {
      local_6c = 0;
    }
    else {
      local_6c = 0;
      pcVar3 = ifs_value;
      do {
        if (cVar10 == '\x01') {
          local_6c = local_6c | 0x10;
        }
        else if (cVar10 == '\x7f') {
          local_6c = local_6c | 0x20;
        }
        pcVar3 = pcVar3 + 1;
      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));
    }
  }
  bVar16 = param_2 == (byte *)0x0;
  if ((param_3 == 0) || (bVar16)) {
    bVar1 = *param_2;
    if (bVar1 != 0) {
      bVar2 = param_2[1];
      do {
        if (bVar2 == 0) {
          if (bVar1 == bVar11) goto LAB_00161b10;
LAB_00161b43:
          if (bVar11 == 0) {
            local_80 = (long *)0x0;
            goto LAB_00161e45;
          }
          local_78 = 0;
          if (param_1 == (byte *)0x0) goto LAB_00161b6c;
          goto LAB_00161b59;
        }
        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;
LAB_00161b10:
        ppuVar8 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;
        param_1 = param_1 + 1;
        bVar11 = *param_1;
      } while (bVar11 != 0);
      local_80 = (long *)0x0;
      goto LAB_00161e45;
    }
LAB_00161b59:
    local_78 = 0;
    if (*param_1 != 0) goto LAB_00161a9f;
  }
  else {
    if (*param_2 == 0) goto LAB_00161b59;
LAB_00161a9f:
    local_78 = 1;
    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {
      uVar9 = 0xffffffffffffffff;
      pbVar13 = param_1;
      do {
        if (uVar9 == 0) break;
        uVar9 = uVar9 - 1;
        bVar11 = *pbVar13;
        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;
      } while (bVar11 != 0);
      local_78 = ~uVar9 - 1;
    }
  }
LAB_00161b6c:
  local_4c = 0;
  local_80 = (long *)0x0;
LAB_00161f45:
  do {
    if ((param_1[local_4c] == 0) ||
       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),
       pcVar3 == (char *)0x0)) goto LAB_00161e26;
    if (*pcVar3 != '\x7f') {
      if (*pcVar3 != '\0') {
LAB_00161b92:
        remove_quoted_nulls(pcVar3);
        uVar4 = make_word(pcVar3);
        local_80 = (long *)make_word_list(uVar4,local_80);
        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;
        if ((param_3 & 3) != 0) {
          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;
        }
        goto LAB_00161fb4;
      }
      if (!bVar15) {
        ppuVar8 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {
          puVar5 = (undefined8 *)alloc_word_desc();
          puVar6 = (undefined1 *)xmalloc(3);
          *puVar6 = 0x7f;
          puVar6[1] = 0;
          *puVar5 = puVar6;
          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;
          local_80 = (long *)make_word_list(puVar5,local_80);
        }
        goto LAB_00161fb4;
      }
      free(pcVar3);
      lVar14 = (long)local_4c;
      pbVar13 = param_1 + lVar14;
      bVar18 = *pbVar13;
      if (bVar18 != 0) goto LAB_00161f29;
      goto LAB_00161f45;
    }
    if (pcVar3[1] != '\0') goto LAB_00161b92;
    puVar5 = (undefined8 *)alloc_word_desc();
    puVar6 = (undefined1 *)xmalloc(3);
    *puVar6 = 0x7f;
    puVar6[1] = 0;
    *puVar5 = puVar6;
    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;
    local_80 = (long *)make_word_list(puVar5,local_80);
LAB_00161fb4:
    free(pcVar3);
    local_84 = local_4c;
    lVar14 = (long)local_4c;
    pbVar13 = param_1 + lVar14;
    bVar18 = *pbVar13;
  } while (bVar18 == 0);
  if ((bVar15) || (bVar16)) {
LAB_00161f29:
    local_84 = local_4c;
    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {
LAB_00161e8a:
      bVar17 = true;
    }
    else {
      if (bVar18 == 0) goto LAB_00161f45;
      bVar17 = false;
    }
  }
  else {
    ppuVar8 = __ctype_b_loc();
    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;
    bVar17 = false;
  }
  local_48.__count = 0;
  local_48.__value = (_union_27)0x0;
  if (locale_mb_cur_max < 2) {
    local_4c = local_84 + 1;
    goto LAB_00161c7f;
  }
  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {
    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {
      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);
      if (0xfffffffffffffffd < sVar7) {
        local_4c = local_4c + 1;
        goto LAB_00161c7f;
      }
      if (sVar7 == 0) {
        local_4c = local_4c + 1;
        goto LAB_00161c7f;
      }
    }
  }
  else {
    sVar7 = 1;
  }
  local_4c = local_4c + (int)sVar7;
LAB_00161c7f:
  lVar14 = (long)local_4c;
  bVar18 = param_1[lVar14];
  while (bVar18 != 0) {
    iVar12 = (int)lVar14;
    if (bVar16 || bVar15) {
      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;
LAB_00161d08:
      if ((bVar18 != 0) && (bVar17)) {
        bVar11 = *param_2;
        bVar1 = bVar11;
joined_r0x00161d23:
        if (bVar1 != 0) {
          if (param_2[1] == 0) {
            bVar17 = bVar18 == bVar11;
          }
          else {
            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';
          }
          if (bVar17) {
            if (bVar16 || bVar15) {
              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;
            }
            else {
              ppuVar8 = __ctype_b_loc();
              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);
            }
            if (bVar17 != false) {
              local_4c = iVar12 + 1;
              bVar18 = param_1[local_4c];
              if (bVar18 != 0) {
                lVar14 = (long)(iVar12 + 2);
                goto LAB_00161e10;
              }
            }
          }
        }
      }
      break;
    }
    ppuVar8 = __ctype_b_loc();
    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;
LAB_00161ca6:
    bVar11 = *param_2;
    if (bVar11 == 0) break;
    if (param_2[1] == 0) {
      if (bVar11 != bVar18) {
LAB_00161d2f:
        bVar1 = bVar18;
        if (bVar17) goto joined_r0x00161d23;
        break;
      }
    }
    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;
    local_4c = iVar12 + 1;
    lVar14 = lVar14 + 1;
    bVar18 = param_1[lVar14];
  }
  goto LAB_00161f45;
  while( true ) {
    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;
    local_4c = (int)lVar14;
    bVar18 = param_1[lVar14];
    lVar14 = lVar14 + 1;
    if (bVar18 == 0) break;
LAB_00161e10:
    if (bVar16 || bVar15) {
      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;
    }
    else {
      ppuVar8 = __ctype_b_loc();
      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;
    }
  }
  goto LAB_00161f45;
LAB_00161e26:
  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {
    local_80 = (long *)list_reverse();
  }
LAB_00161e45:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return local_80;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x58
MOV R15,RDI
MOV dword ptr [RSP + 0x2c],EDX
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x48],RAX
XOR EAX,EAX
TEST RDI,RDI
JZ 0x00161e6d
MOV R13,RSI
MOVZX EBX,byte ptr [RDI]
TEST BL,BL
JZ 0x00161e74
MOV R14D,0x0
TEST RSI,RSI
JZ 0x00161a08
CMP byte ptr [RSI],0x20
JZ 0x00161a22
MOV RAX,qword ptr [0x0021bd30]
TEST RAX,RAX
JZ 0x00161a64
MOVZX EDX,byte ptr [RAX]
TEST DL,DL
JZ 0x00161a6e
MOV ECX,0x0
JMP 0x00161a4c
CMP byte ptr [RSI + 0x1],0x9
JNZ 0x00161a08
CMP byte ptr [RSI + 0x2],0xa
JNZ 0x00161a08
CMP byte ptr [RSI + 0x3],0x0
SETZ R14B
MOVZX R14D,R14B
JMP 0x00161a08
OR ECX,0x10
ADD RAX,0x1
JZ 0x00161a78
MOVZX EDX,byte ptr [RAX]
TEST DL,DL
JZ 0x00161a5e
CMP DL,0x1
JZ 0x00161a3c
MOV ESI,ECX
OR ESI,0x20
CMP DL,0x7f
CMOVZ ECX,ESI
JMP 0x00161a3f
MOV dword ptr [RSP + 0x1c],ECX
JMP 0x00161a7c
MOV dword ptr [RSP + 0x1c],0x0
JMP 0x00161a7c
MOV dword ptr [RSP + 0x1c],0x0
JMP 0x00161a7c
MOV dword ptr [RSP + 0x1c],ECX
TEST R13,R13
SETZ byte ptr [RSP + 0x3]
MOVZX EAX,byte ptr [RSP + 0x3]
CMP dword ptr [RSP + 0x2c],0x0
JZ 0x00161afa
TEST AL,AL
JNZ 0x00161afa
CMP byte ptr [R13],0x0
JZ 0x00161b59
MOV qword ptr [RSP + 0x10],0x1
CMP byte ptr [R15 + 0x1],0x0
JZ 0x00161b6c
MOV qword ptr [RSP + 0x10],0x2
CMP byte ptr [R15 + 0x2],0x0
JZ 0x00161b6c
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R15
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [RSP + 0x10],RAX
JMP 0x00161b6c
MOV qword ptr [RSP + 0x8],0x0
JMP 0x00161e45
MOVZX R12D,byte ptr [R13]
TEST R12B,R12B
JZ 0x00161b59
MOVZX EBP,byte ptr [R13 + 0x1]
JMP 0x00161b2e
CMP R12B,BL
JNZ 0x00161b43
CALL 0x0012dd50
MOVZX EDX,BL
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x20
JZ 0x00161b43
ADD R15,0x1
MOVZX EBX,byte ptr [R15]
TEST BL,BL
JZ 0x00161aec
TEST BPL,BPL
JZ 0x00161b0b
MOVZX EAX,BL
LEA RDI,[0x21bc20]
CMP byte ptr [RDI + RAX*0x1],0x0
JNZ 0x00161b10
TEST BL,BL
JZ 0x00161e7f
MOV qword ptr [RSP + 0x10],0x0
TEST R15,R15
JZ 0x00161b6c
MOV qword ptr [RSP + 0x10],0x0
CMP byte ptr [R15],0x0
JNZ 0x00161a9f
MOV dword ptr [RSP + 0x3c],0x0
MOV qword ptr [RSP + 0x8],0x0
LEA RAX,[RSP + 0x3c]
MOV qword ptr [RSP + 0x20],RAX
JMP 0x00161f45
CMP byte ptr [RBX + 0x1],0x0
JZ 0x00161bda
MOV RDI,RBX
CALL 0x00161828
MOV RDI,RBX
CALL 0x0013d8d7
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,RAX
CALL 0x0013d92c
MOV RCX,RAX
MOV qword ptr [RSP + 0x8],RAX
MOV RAX,qword ptr [RAX + 0x8]
AND dword ptr [RAX + 0x8],0xfffbffff
TEST byte ptr [RSP + 0x2c],0x3
JZ 0x00161fb4
MOV RAX,qword ptr [RCX + 0x8]
OR dword ptr [RAX + 0x8],0x2
JMP 0x00161fb4
CALL 0x0013d6f0
MOV RBP,RAX
MOV EDI,0x3
CALL 0x00188151
MOV byte ptr [RAX],0x7f
MOV byte ptr [RAX + 0x1],0x0
MOV qword ptr [RBP],RAX
OR dword ptr [RBP + 0x8],0x40002
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,RBP
CALL 0x0013d92c
MOV qword ptr [RSP + 0x8],RAX
JMP 0x00161fb4
CALL 0x0013d6f0
MOV RBP,RAX
MOV EDI,0x3
CALL 0x00188151
MOV byte ptr [RAX],0x7f
MOV byte ptr [RAX + 0x1],0x0
MOV qword ptr [RBP],RAX
OR dword ptr [RBP + 0x8],0x40002
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,RBP
CALL 0x0013d92c
MOV qword ptr [RSP + 0x8],RAX
JMP 0x00161fb4
MOV dword ptr [RSP + 0x28],0x0
JMP 0x00161e92
TEST RAX,RAX
JNZ 0x00161c6e
ADD dword ptr [RSP + 0x3c],0x1
JMP 0x00161c7f
MOV EAX,0x1
ADD dword ptr [RSP + 0x3c],EAX
JMP 0x00161c7f
MOV EBP,dword ptr [RSP + 0x4]
ADD EBP,0x1
MOV dword ptr [RSP + 0x3c],EBP
MOVSXD RBX,dword ptr [RSP + 0x3c]
MOVZX EBP,byte ptr [R15 + RBX*0x1]
TEST BPL,BPL
JNZ 0x00161ce6
JMP 0x00161f45
CALL 0x0012dd50
MOVZX EDX,BPL
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x20
JZ 0x00161d08
MOVZX EAX,byte ptr [R13]
TEST AL,AL
JZ 0x00161f45
CMP byte ptr [R13 + 0x1],0x0
JZ 0x00161d2a
MOVZX EDX,BPL
LEA RSI,[0x21bc20]
CMP byte ptr [RSI + RDX*0x1],0x0
JZ 0x00161d2f
ADD R12D,0x1
MOV dword ptr [RSP + 0x3c],R12D
ADD RBX,0x1
MOVZX EBP,byte ptr [R15 + RBX*0x1]
TEST BPL,BPL
JZ 0x00161f45
MOV R12D,EBX
MOV dword ptr [RSP + 0x18],EBX
MOVZX EAX,byte ptr [RSP + 0x3]
OR AL,R14B
MOV byte ptr [RSP + 0x4],AL
JZ 0x00161c93
LEA EAX,[RBP + -0x9]
CMP AL,0x1
JBE 0x00161ca6
CMP BPL,0x20
JZ 0x00161ca6
TEST BPL,BPL
JZ 0x00161f45
CMP dword ptr [RSP + 0x28],0x0
JZ 0x00161f45
MOVZX EAX,byte ptr [R13]
TEST AL,AL
JNZ 0x00161d43
JMP 0x00161f45
CMP AL,BPL
JZ 0x00161ccb
CMP dword ptr [RSP + 0x28],0x0
JZ 0x00161f45
TEST BPL,BPL
JZ 0x00161f45
CMP byte ptr [R13 + 0x1],0x0
JZ 0x00161dac
MOVZX EAX,BPL
LEA RCX,[0x21bc20]
CMP byte ptr [RCX + RAX*0x1],0x0
SETNZ AL
TEST AL,AL
JZ 0x00161f45
CMP byte ptr [RSP + 0x4],0x0
JZ 0x00161db4
LEA EAX,[RBP + -0x9]
CMP AL,0x1
SETA AL
CMP BPL,0x20
SETNZ DL
AND EAX,EDX
TEST AL,AL
JZ 0x00161f45
MOV ECX,dword ptr [RSP + 0x18]
LEA EAX,[RCX + 0x1]
MOV dword ptr [RSP + 0x3c],EAX
CDQE
MOVZX EBX,byte ptr [R15 + RAX*0x1]
TEST BL,BL
JZ 0x00161f45
ADD ECX,0x2
MOVSXD RBP,ECX
MOVZX R12D,byte ptr [RSP + 0x4]
JMP 0x00161e10
CMP BPL,AL
SETZ AL
JMP 0x00161d5c
CALL 0x0012dd50
MOVZX EBP,BPL
MOV RAX,qword ptr [RAX]
MOVZX EAX,word ptr [RAX + RBP*0x2]
SHR AX,0xd
XOR EAX,0x1
AND EAX,0x1
JMP 0x00161d7c
CALL 0x0012dd50
MOVZX EDX,BL
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x20
JZ 0x00161f45
MOVZX EBX,BL
LEA RAX,[0x21bc20]
CMP byte ptr [RAX + RBX*0x1],0x0
JZ 0x00161f45
MOV dword ptr [RSP + 0x3c],EBP
ADD RBP,0x1
MOVZX EBX,byte ptr [R15 + RBP*0x1 + -0x1]
TEST BL,BL
JZ 0x00161f45
TEST R12B,R12B
JZ 0x00161dd0
LEA EAX,[RBX + -0x9]
CMP AL,0x1
JBE 0x00161de6
CMP BL,0x20
JZ 0x00161de6
JMP 0x00161f45
MOV RDI,qword ptr [RSP + 0x8]
TEST RDI,RDI
JZ 0x00161e45
CMP qword ptr [RDI],0x0
JZ 0x00161e45
MOV EAX,0x0
CALL 0x001815c6
MOV qword ptr [RSP + 0x8],RAX
MOV RAX,qword ptr [RSP + 0x8]
MOV RCX,qword ptr [RSP + 0x48]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x0016200e
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV qword ptr [RSP + 0x8],RDI
JMP 0x00161e45
MOV qword ptr [RSP + 0x8],0x0
JMP 0x00161e45
MOV qword ptr [RSP + 0x8],0x0
JMP 0x00161e45
MOV dword ptr [RSP + 0x28],0x1
MOV qword ptr [RSP + 0x40],0x0
CMP dword ptr [0x0021c460],0x1
JLE 0x00161c74
MOV EAX,EBX
SHR AL,0x5
AND EAX,0x7
LEA RDI,[0x1e9880]
MOV EAX,dword ptr [RDI + RAX*0x4]
MOV ECX,EBX
SHR EAX,CL
TEST AL,0x1
JNZ 0x00161c69
CMP dword ptr [0x0021c468],0x0
JZ 0x00161edc
MOV EAX,0x1
TEST BL,BL
JNS 0x00161c6e
LEA RCX,[RSP + 0x40]
MOV RDX,qword ptr [RSP + 0x10]
SUB RDX,R12
MOV RSI,RBP
MOV EDI,0x0
CALL 0x0012d3d0
CMP RAX,-0x2
JC 0x00161c5d
ADD dword ptr [RSP + 0x3c],0x1
JMP 0x00161c7f
MOV RDI,RBX
CALL 0x0012d080
MOV EAX,dword ptr [RSP + 0x3c]
MOV dword ptr [RSP + 0x4],EAX
MOVSXD R12,EAX
LEA RBP,[R15 + R12*0x1]
MOVZX EBX,byte ptr [RBP]
TEST BL,BL
JZ 0x00161f45
LEA EAX,[RBX + -0x9]
CMP AL,0x1
JBE 0x00161e8a
CMP BL,0x20
JZ 0x00161e8a
TEST BL,BL
JNZ 0x00161c50
MOVSXD RAX,dword ptr [RSP + 0x3c]
CMP byte ptr [R15 + RAX*0x1],0x0
JZ 0x00161e26
MOV R8D,dword ptr [RSP + 0x1c]
MOV RCX,R13
MOV RDX,qword ptr [RSP + 0x20]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,R15
CALL 0x0015b8ee
MOV RBX,RAX
TEST RAX,RAX
JZ 0x00161e26
MOVZX EAX,byte ptr [RAX]
CMP AL,0x7f
JZ 0x00161b8c
TEST AL,AL
JNZ 0x00161b92
TEST R14D,R14D
JNZ 0x00161f0a
CALL 0x0012dd50
MOVSXD RDX,dword ptr [RSP + 0x3c]
MOVZX EDX,byte ptr [R15 + RDX*0x1]
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x20
JZ 0x00161c15
MOV RDI,RBX
CALL 0x0012d080
MOV EAX,dword ptr [RSP + 0x3c]
MOV dword ptr [RSP + 0x4],EAX
MOVSXD R12,EAX
LEA RBP,[R15 + R12*0x1]
MOVZX EBX,byte ptr [RBP]
TEST BL,BL
JZ 0x00161f45
TEST R14D,R14D
JNZ 0x00161f29
CMP byte ptr [RSP + 0x3],0x0
JNZ 0x00161f29
CALL 0x0012dd50
MOVZX EDX,BL
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x20
JNZ 0x00161e8a
MOV dword ptr [RSP + 0x28],0x0
JMP 0x00161e92
CALL 0x0012d3b0
(translation_unit "long * list_string(byte *param_1,byte *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_80;\n}\n\n" (function_definition "long * list_string(byte *param_1,byte *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_80;\n}" (sized_type_specifier "long" long) (pointer_declarator "* list_string(byte *param_1,byte *param_2,uint param_3)" * (function_declarator "list_string(byte *param_1,byte *param_2,uint param_3)" identifier (parameter_list "(byte *param_1,byte *param_2,uint param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_80;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "ushort **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "long *local_80;" (sized_type_specifier "long" long) (pointer_declarator "*local_80" * identifier) ;) (declaration "long local_78;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "mbstate_t local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" { (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (expression_statement "bVar11 = *param_1;" (assignment_expression "bVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" { (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (if_statement "if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }" if (parenthesized_expression "((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))" ( (binary_expression "(((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10)" (parenthesized_expression "(((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9))" ( (binary_expression "((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)" (parenthesized_expression "((param_2 != (byte *)0x0) && (*param_2 == 0x20))" ( (binary_expression "(param_2 != (byte *)0x0) && (*param_2 == 0x20)" (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*param_2 == 0x20)" ( (binary_expression "*param_2 == 0x20" (pointer_expression "*param_2" * identifier) == number_literal) ))) )) && (parenthesized_expression "(param_2[1] == 9)" ( (binary_expression "param_2[1] == 9" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_2[2] == 10)" ( (binary_expression "param_2[2] == 10" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    bVar15 = param_2[3] == 0;\n  }" { (expression_statement "bVar15 = param_2[3] == 0;" (assignment_expression "bVar15 = param_2[3] == 0" identifier = (binary_expression "param_2[3] == 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) == number_literal)) ;) })) (if_statement "if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" if (parenthesized_expression "(ifs_value == (char *)0x0)" ( (binary_expression "ifs_value == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_6c = 0;\n  }" { (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" else (compound_statement "{\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" { (expression_statement "cVar10 = *ifs_value;" (assignment_expression "cVar10 = *ifs_value" identifier = (pointer_expression "*ifs_value" * identifier)) ;) (if_statement "if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_6c = 0;\n    }" { (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" else (compound_statement "{\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" { (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = ifs_value;" (assignment_expression "pcVar3 = ifs_value" identifier = identifier) ;) (do_statement "do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));" do (compound_statement "{\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      }" { (if_statement "if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" if (parenthesized_expression "(cVar10 == '\x01')" ( (binary_expression "cVar10 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          local_6c = local_6c | 0x10;\n        }" { (expression_statement "local_6c = local_6c | 0x10;" (assignment_expression "local_6c = local_6c | 0x10" identifier = (binary_expression "local_6c | 0x10" identifier | number_literal)) ;) }) (else_clause "else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" else (if_statement "if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" if (parenthesized_expression "(cVar10 == '\x7f')" ( (binary_expression "cVar10 == '\x7f'" identifier == (char_literal "'\x7f'" ' escape_sequence ')) )) (compound_statement "{\n          local_6c = local_6c | 0x20;\n        }" { (expression_statement "local_6c = local_6c | 0x20;" (assignment_expression "local_6c = local_6c | 0x20" identifier = (binary_expression "local_6c | 0x20" identifier | number_literal)) ;) })))) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(cVar10 = *pcVar3, cVar10 != '\0')" ( (comma_expression "cVar10 = *pcVar3, cVar10 != '\0'" (assignment_expression "cVar10 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) , (binary_expression "cVar10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) ;) }))) }))) (expression_statement "bVar16 = param_2 == (byte *)0x0;" (assignment_expression "bVar16 = param_2 == (byte *)0x0" identifier = (binary_expression "param_2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" if (parenthesized_expression "((param_3 == 0) || (bVar16))" ( (binary_expression "(param_3 == 0) || (bVar16)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar16)" ( identifier ))) )) (compound_statement "{\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }" { (expression_statement "bVar2 = param_2[1];" (assignment_expression "bVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (do_statement "do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      }" { (if_statement "if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" { (if_statement "if (bVar1 == bVar11) goto LAB_00161b10;" if (parenthesized_expression "(bVar1 == bVar11)" ( (binary_expression "bVar1 == bVar11" identifier == identifier) )) (goto_statement "goto LAB_00161b10;" goto statement_identifier ;)) (labeled_statement "LAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" statement_identifier : (if_statement "if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" { (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) }))) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) goto LAB_00161b6c;" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00161b6c;" goto statement_identifier ;)) (goto_statement "goto LAB_00161b59;" goto statement_identifier ;) })) (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar11)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar11" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b43;" goto statement_identifier ;)) (labeled_statement "LAB_00161b10:\n        ppuVar8 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar11 * 2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00161b43;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *param_1;" (assignment_expression "bVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (labeled_statement "LAB_00161b59:\n    local_78 = 0;" statement_identifier : (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;)) (if_statement "if (*param_1 != 0) goto LAB_00161a9f;" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (goto_statement "goto LAB_00161a9f;" goto statement_identifier ;)) }) (else_clause "else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" else (compound_statement "{\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" { (if_statement "if (*param_2 == 0) goto LAB_00161b59;" if (parenthesized_expression "(*param_2 == 0)" ( (binary_expression "*param_2 == 0" (pointer_expression "*param_2" * identifier) == number_literal) )) (goto_statement "goto LAB_00161b59;" goto statement_identifier ;)) (labeled_statement "LAB_00161a9f:\n    local_78 = 1;" statement_identifier : (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;)) (if_statement "if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" if (parenthesized_expression "((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0))" ( (binary_expression "(param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)" (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_78 = 2, param_1[2] != 0)" ( (comma_expression "local_78 = 2, param_1[2] != 0" (assignment_expression "local_78 = 2" identifier = number_literal) , (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" { (expression_statement "uVar9 = 0xffffffffffffffff;" (assignment_expression "uVar9 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar13 = param_1;" (assignment_expression "pbVar13 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar9 == 0) break;" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar18 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_78 = ~uVar9 - 1;" (assignment_expression "local_78 = ~uVar9 - 1" identifier = (binary_expression "~uVar9 - 1" (unary_expression "~uVar9" ~ identifier) - number_literal)) ;) })) }))) (labeled_statement "LAB_00161b6c:\n  local_4c = 0;" statement_identifier : (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;)) (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" statement_identifier : (do_statement "do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" do (compound_statement "{\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  }" { (if_statement "if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;" if (parenthesized_expression "((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0))" ( (binary_expression "(param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)" (parenthesized_expression "(param_1[local_4c] == 0)" ( (binary_expression "param_1[local_4c] == 0" (subscript_expression "param_1[local_4c]" identifier [ identifier ]) == number_literal) )) || (parenthesized_expression "(pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" identifier = (cast_expression "(char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" identifier (argument_list "(param_1,local_78,&local_4c,param_2,local_6c)" ( identifier , identifier , (pointer_expression "&local_4c" & identifier) , identifier , identifier ))))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00161e26;" goto statement_identifier ;)) (if_statement "if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" if (parenthesized_expression "(*pcVar3 != '\x7f')" ( (binary_expression "*pcVar3 != '\x7f'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\x7f'" ' escape_sequence ')) )) (compound_statement "{\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" { (if_statement "if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }" if (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }" { (labeled_statement "LAB_00161b92:\n        remove_quoted_nulls(pcVar3);" statement_identifier : (expression_statement "remove_quoted_nulls(pcVar3);" (call_expression "remove_quoted_nulls(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) (expression_statement "uVar4 = make_word(pcVar3);" (assignment_expression "uVar4 = make_word(pcVar3)" identifier = (call_expression "make_word(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "local_80 = (long *)make_word_list(uVar4,local_80);" (assignment_expression "local_80 = (long *)make_word_list(uVar4,local_80)" identifier = (cast_expression "(long *)make_word_list(uVar4,local_80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "make_word_list(uVar4,local_80)" identifier (argument_list "(uVar4,local_80)" ( identifier , identifier ))))) ;) (expression_statement "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;" (assignment_expression "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "*(uint *)(local_80[1] + 8) & 0xfffbffff" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) & number_literal)) ;) (if_statement "if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }" if (parenthesized_expression "((param_3 & 3) != 0)" ( (binary_expression "(param_3 & 3) != 0" (parenthesized_expression "(param_3 & 3)" ( (binary_expression "param_3 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }" { (expression_statement "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;" (assignment_expression "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "*(uint *)(local_80[1] + 8) | 2" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) | number_literal)) ;) })) (goto_statement "goto LAB_00161fb4;" goto statement_identifier ;) })) (if_statement "if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)param_1[local_4c] * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)param_1[local_4c] * 2" (cast_expression "(ulong)param_1[local_4c]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[local_4c]" identifier [ identifier ])) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }" { (expression_statement "puVar5 = (undefined8 *)alloc_word_desc();" (assignment_expression "puVar5 = (undefined8 *)alloc_word_desc()" identifier = (cast_expression "(undefined8 *)alloc_word_desc()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "alloc_word_desc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar6 = (undefined1 *)xmalloc(3);" (assignment_expression "puVar6 = (undefined1 *)xmalloc(3)" identifier = (cast_expression "(undefined1 *)xmalloc(3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(3)" identifier (argument_list "(3)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0x7f;" (assignment_expression "*puVar6 = 0x7f" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;" (assignment_expression "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_80 = (long *)make_word_list(puVar5,local_80);" (assignment_expression "local_80 = (long *)make_word_list(puVar5,local_80)" identifier = (cast_expression "(long *)make_word_list(puVar5,local_80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "make_word_list(puVar5,local_80)" identifier (argument_list "(puVar5,local_80)" ( identifier , identifier ))))) ;) })) (goto_statement "goto LAB_00161fb4;" goto statement_identifier ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" identifier = (cast_expression "(long)local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" identifier = (binary_expression "param_1 + lVar14" identifier + identifier)) ;) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (if_statement "if (bVar18 != 0) goto LAB_00161f29;" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00161f29;" goto statement_identifier ;)) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) })) (if_statement "if (pcVar3[1] != '\0') goto LAB_00161b92;" if (parenthesized_expression "(pcVar3[1] != '\0')" ( (binary_expression "pcVar3[1] != '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b92;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)alloc_word_desc();" (assignment_expression "puVar5 = (undefined8 *)alloc_word_desc()" identifier = (cast_expression "(undefined8 *)alloc_word_desc()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "alloc_word_desc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar6 = (undefined1 *)xmalloc(3);" (assignment_expression "puVar6 = (undefined1 *)xmalloc(3)" identifier = (cast_expression "(undefined1 *)xmalloc(3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(3)" identifier (argument_list "(3)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0x7f;" (assignment_expression "*puVar6 = 0x7f" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;" (assignment_expression "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_80 = (long *)make_word_list(puVar5,local_80);" (assignment_expression "local_80 = (long *)make_word_list(puVar5,local_80)" identifier = (cast_expression "(long *)make_word_list(puVar5,local_80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "make_word_list(puVar5,local_80)" identifier (argument_list "(puVar5,local_80)" ( identifier , identifier ))))) ;) (labeled_statement "LAB_00161fb4:\n    free(pcVar3);" statement_identifier : (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" identifier = identifier) ;) (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" identifier = (cast_expression "(long)local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" identifier = (binary_expression "param_1 + lVar14" identifier + identifier)) ;) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) }) while (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) ;)) (if_statement "if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" if (parenthesized_expression "((bVar15) || (bVar16))" ( (binary_expression "(bVar15) || (bVar16)" (parenthesized_expression "(bVar15)" ( identifier )) || (parenthesized_expression "(bVar16)" ( identifier ))) )) (compound_statement "{\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }" { (labeled_statement "LAB_00161f29:\n    local_84 = local_4c;" statement_identifier : (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" identifier = identifier) ;)) (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" if (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" ( (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" ( (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar18 == 0x20)" ( (binary_expression "bVar18 == 0x20" identifier == number_literal) ))) )) (compound_statement "{\nLAB_00161e8a:\n      bVar17 = true;\n    }" { (labeled_statement "LAB_00161e8a:\n      bVar17 = true;" statement_identifier : (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;)) }) (else_clause "else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" else (compound_statement "{\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" { (if_statement "if (bVar18 == 0) goto LAB_00161f45;" if (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;)) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }))) }) (else_clause "else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" else (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00161e8a;" goto statement_identifier ;)) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }))) (expression_statement "local_48.__count = 0;" (assignment_expression "local_48.__count = 0" (field_expression "local_48.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_48.__value = (_union_27)0x0;" (assignment_expression "local_48.__value = (_union_27)0x0" (field_expression "local_48.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (if_statement "if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }" { (expression_statement "local_4c = local_84 + 1;" (assignment_expression "local_4c = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar18 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar18 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar18 >> 5) * 4" (call_expression "(ulong)(bVar18 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar18 >> 5)" ( (binary_expression "bVar18 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar18 & 0x1f)" ( (binary_expression "bVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }" { (if_statement "if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }" if (parenthesized_expression "((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar7 = 1, (char)bVar18 < '\0')" ( (comma_expression "sVar7 = 1, (char)bVar18 < '\0'" (assignment_expression "sVar7 = 1" identifier = number_literal) , (binary_expression "(char)bVar18 < '\0'" (cast_expression "(char)bVar18" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }" { (expression_statement "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);" (assignment_expression "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" identifier (argument_list "((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "local_78 - lVar14" identifier - identifier) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" if (parenthesized_expression "(0xfffffffffffffffd < sVar7)" ( (binary_expression "0xfffffffffffffffd < sVar7" number_literal < identifier) )) (compound_statement "{\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" { (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) (if_statement "if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" if (parenthesized_expression "(sVar7 == 0)" ( (binary_expression "sVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" { (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) })) }) (else_clause "else {\n    sVar7 = 1;\n  }" else (compound_statement "{\n    sVar7 = 1;\n  }" { (expression_statement "sVar7 = 1;" (assignment_expression "sVar7 = 1" identifier = number_literal) ;) }))) (expression_statement "local_4c = local_4c + (int)sVar7;" (assignment_expression "local_4c = local_4c + (int)sVar7" identifier = (binary_expression "local_4c + (int)sVar7" identifier + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00161c7f:\n  lVar14 = (long)local_4c;" statement_identifier : (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" identifier = (cast_expression "(long)local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" identifier = (subscript_expression "param_1[lVar14]" identifier [ identifier ])) ;) (while_statement "while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }" while (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }" { (expression_statement "iVar12 = (int)lVar14;" (assignment_expression "iVar12 = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" { (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;" if (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" ( (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" ( (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar18 == 0x20)" ( (binary_expression "bVar18 == 0x20" identifier == number_literal) ))) )) (goto_statement "goto LAB_00161ca6;" goto statement_identifier ;)) (labeled_statement "LAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" statement_identifier : (if_statement "if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "((bVar18 != 0) && (bVar17))" ( (binary_expression "(bVar18 != 0) && (bVar17)" (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar17)" ( identifier ))) )) (compound_statement "{\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" { (expression_statement "bVar11 = *param_2;" (assignment_expression "bVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "bVar1 = bVar11;" (assignment_expression "bVar1 = bVar11" identifier = identifier) ;) (labeled_statement "joined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" statement_identifier : (if_statement "if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" { (if_statement "if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" if (parenthesized_expression "(param_2[1] == 0)" ( (binary_expression "param_2[1] == 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            bVar17 = bVar18 == bVar11;\n          }" { (expression_statement "bVar17 = bVar18 == bVar11;" (assignment_expression "bVar17 = bVar18 == bVar11" identifier = (binary_expression "bVar18 == bVar11" identifier == identifier)) ;) }) (else_clause "else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" else (compound_statement "{\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" { (expression_statement "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';" (assignment_expression "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" identifier = (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence '))) ;) }))) (if_statement "if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" { (if_statement "if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }" { (expression_statement "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;" (assignment_expression "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20" identifier = (binary_expression "1 < (byte)(bVar18 - 9) && bVar18 != 0x20" (binary_expression "1 < (byte)(bVar18 - 9)" number_literal < (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) )))) && (binary_expression "bVar18 != 0x20" identifier != number_literal))) ;) }) (else_clause "else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" else (compound_statement "{\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);" (assignment_expression "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" identifier = (cast_expression "(bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" ( (binary_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1)" ( (binary_expression "(byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1" (call_expression "(byte)((*ppuVar8)[bVar18] >> 0xd)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar8)[bVar18] >> 0xd)" ( (binary_expression "(*ppuVar8)[bVar18] >> 0xd" (subscript_expression "(*ppuVar8)[bVar18]" (parenthesized_expression "(*ppuVar8)" ( (pointer_expression "*ppuVar8" * identifier) )) [ identifier ]) >> number_literal) ))) ^ number_literal) )) & number_literal) )))) ;) }))) (if_statement "if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" if (parenthesized_expression "(bVar17 != false)" ( (binary_expression "bVar17 != false" identifier != false) )) (compound_statement "{\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" { (expression_statement "local_4c = iVar12 + 1;" (assignment_expression "local_4c = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "bVar18 = param_1[local_4c];" (assignment_expression "bVar18 = param_1[local_4c]" identifier = (subscript_expression "param_1[local_4c]" identifier [ identifier ])) ;) (if_statement "if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (compound_statement "{\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" { (expression_statement "lVar14 = (long)(iVar12 + 2);" (assignment_expression "lVar14 = (long)(iVar12 + 2)" identifier = (cast_expression "(long)(iVar12 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar12 + 2)" ( (binary_expression "iVar12 + 2" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00161e10;" goto statement_identifier ;) })) })) })) }))) }))) (break_statement "break;" break ;) })) (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00161d08;" goto statement_identifier ;)) (labeled_statement "LAB_00161ca6:\n    bVar11 = *param_2;" statement_identifier : (expression_statement "bVar11 = *param_2;" (assignment_expression "bVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (if_statement "if (bVar11 == 0) break;" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" if (parenthesized_expression "(param_2[1] == 0)" ( (binary_expression "param_2[1] == 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }" { (if_statement "if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" if (parenthesized_expression "(bVar11 != bVar18)" ( (binary_expression "bVar11 != bVar18" identifier != identifier) )) (compound_statement "{\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" { (labeled_statement "LAB_00161d2f:\n        bVar1 = bVar18;" statement_identifier : (expression_statement "bVar1 = bVar18;" (assignment_expression "bVar1 = bVar18" identifier = identifier) ;)) (if_statement "if (bVar17) goto joined_r0x00161d23;" if (parenthesized_expression "(bVar17)" ( identifier )) (goto_statement "goto joined_r0x00161d23;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }) (else_clause "else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" else (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161d2f;" goto statement_identifier ;)))) (expression_statement "local_4c = iVar12 + 1;" (assignment_expression "local_4c = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" identifier = (subscript_expression "param_1[lVar14]" identifier [ identifier ])) ;) })) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) (while_statement "while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" { (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "local_4c = (int)lVar14;" (assignment_expression "local_4c = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" identifier = (subscript_expression "param_1[lVar14]" identifier [ identifier ])) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (if_statement "if (bVar18 == 0) break;" if (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" statement_identifier : (if_statement "if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }" { (if_statement "if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;" if (parenthesized_expression "((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20))" ( (binary_expression "(1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)" (parenthesized_expression "(1 < (byte)(bVar18 - 9))" ( (binary_expression "1 < (byte)(bVar18 - 9)" number_literal < (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) )))) )) && (parenthesized_expression "(bVar18 != 0x20)" ( (binary_expression "bVar18 != 0x20" identifier != number_literal) ))) )) (break_statement "break;" break ;)) }) (else_clause "else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" else (compound_statement "{\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) })))) })) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) (labeled_statement "LAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }" statement_identifier : (if_statement "if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }" if (parenthesized_expression "((local_80 != (long *)0x0) && (*local_80 != 0))" ( (binary_expression "(local_80 != (long *)0x0) && (*local_80 != 0)" (parenthesized_expression "(local_80 != (long *)0x0)" ( (binary_expression "local_80 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_80 != 0)" ( (binary_expression "*local_80 != 0" (pointer_expression "*local_80" * identifier) != number_literal) ))) )) (compound_statement "{\n    local_80 = (long *)list_reverse();\n  }" { (expression_statement "local_80 = (long *)list_reverse();" (assignment_expression "local_80 = (long *)list_reverse()" identifier = (cast_expression "(long *)list_reverse()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "list_reverse()" identifier (argument_list "()" ( ))))) ;) }))) (labeled_statement "LAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_80;" return identifier ;) })))
(translation_unit "WORD_LIST * list_string(char *string,char *separators,wchar_t quoted)\n\n{\n  int *piVar1;\n  byte bVar2;\n  long lVar3;\n  char *pcVar4;\n  WORD_DESC *pWVar5;\n  char *pcVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  wchar_t local_84;\n  WORD_LIST *local_80;\n  size_t local_78;\n  wchar_t local_6c;\n  wchar_t sindex;\n  mbstate_t_conflict state;\n  \n  bVar18 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  if (string == (char *)0x0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *string;\n  if (bVar11 == 0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&\n     (separators[2] == '\n')) {\n    bVar15 = separators[3] == '\0';\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = L'\0';\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }\n  }\n  bVar16 = separators == (char *)0x0;\n  if ((quoted == L'\0') || (bVar16)) {\n    bVar2 = *separators;\n    if (bVar2 != 0) {\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*string != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*separators == '\0') goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  sindex = L'\0';\n  local_80 = (WORD_LIST *)0x0;\nLAB_00161f45:\n  do {\n    if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar4[1] != '\0') goto LAB_00161b92;\n    pWVar5 = alloc_word_desc();\n    pcVar6 = (char *)xmalloc(3);\n    *pcVar6 = '\x7f';\n    pcVar6[1] = '\0';\n    pWVar5->word = pcVar6;\n    pWVar5->flags = pWVar5->flags | 0x40002;\n    local_80 = make_word_list(pWVar5,local_80);\nLAB_00161fb4:\n    free(pcVar4);\n    local_84 = sindex;\n    lVar14 = (long)sindex;\n    pbVar13 = (byte *)string + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = sindex;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  state.__count = L'\0';\n  state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n  if (locale_mb_cur_max < 2) {\n    sindex = local_84 + L'\x01';\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  sindex = sindex + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)sindex;\n  bVar18 = ((byte *)string)[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *separators;\n    if (bVar11 == 0) break;\n    if (separators[1] == '\0') {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    sindex = iVar12 + L'\x01';\n    lVar14 = lVar14 + 1;\n    bVar18 = ((byte *)string)[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    sindex = (wchar_t)lVar14;\n    bVar18 = ((byte *)string)[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)) {\n    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);\n  }\nLAB_00161e45:\n  if (lVar3 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_80;\n}\n\n" (function_definition "WORD_LIST * list_string(char *string,char *separators,wchar_t quoted)\n\n{\n  int *piVar1;\n  byte bVar2;\n  long lVar3;\n  char *pcVar4;\n  WORD_DESC *pWVar5;\n  char *pcVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  wchar_t local_84;\n  WORD_LIST *local_80;\n  size_t local_78;\n  wchar_t local_6c;\n  wchar_t sindex;\n  mbstate_t_conflict state;\n  \n  bVar18 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  if (string == (char *)0x0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *string;\n  if (bVar11 == 0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&\n     (separators[2] == '\n')) {\n    bVar15 = separators[3] == '\0';\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = L'\0';\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }\n  }\n  bVar16 = separators == (char *)0x0;\n  if ((quoted == L'\0') || (bVar16)) {\n    bVar2 = *separators;\n    if (bVar2 != 0) {\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*string != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*separators == '\0') goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  sindex = L'\0';\n  local_80 = (WORD_LIST *)0x0;\nLAB_00161f45:\n  do {\n    if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar4[1] != '\0') goto LAB_00161b92;\n    pWVar5 = alloc_word_desc();\n    pcVar6 = (char *)xmalloc(3);\n    *pcVar6 = '\x7f';\n    pcVar6[1] = '\0';\n    pWVar5->word = pcVar6;\n    pWVar5->flags = pWVar5->flags | 0x40002;\n    local_80 = make_word_list(pWVar5,local_80);\nLAB_00161fb4:\n    free(pcVar4);\n    local_84 = sindex;\n    lVar14 = (long)sindex;\n    pbVar13 = (byte *)string + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = sindex;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  state.__count = L'\0';\n  state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n  if (locale_mb_cur_max < 2) {\n    sindex = local_84 + L'\x01';\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  sindex = sindex + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)sindex;\n  bVar18 = ((byte *)string)[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *separators;\n    if (bVar11 == 0) break;\n    if (separators[1] == '\0') {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    sindex = iVar12 + L'\x01';\n    lVar14 = lVar14 + 1;\n    bVar18 = ((byte *)string)[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    sindex = (wchar_t)lVar14;\n    bVar18 = ((byte *)string)[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)) {\n    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);\n  }\nLAB_00161e45:\n  if (lVar3 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_80;\n}" type_identifier (pointer_declarator "* list_string(char *string,char *separators,wchar_t quoted)" * (function_declarator "list_string(char *string,char *separators,wchar_t quoted)" identifier (parameter_list "(char *string,char *separators,wchar_t quoted)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "char *separators" primitive_type (pointer_declarator "*separators" * identifier)) , (parameter_declaration "wchar_t quoted" type_identifier identifier) )))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  long lVar3;\n  char *pcVar4;\n  WORD_DESC *pWVar5;\n  char *pcVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  wchar_t local_84;\n  WORD_LIST *local_80;\n  size_t local_78;\n  wchar_t local_6c;\n  wchar_t sindex;\n  mbstate_t_conflict state;\n  \n  bVar18 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  if (string == (char *)0x0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *string;\n  if (bVar11 == 0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&\n     (separators[2] == '\n')) {\n    bVar15 = separators[3] == '\0';\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = L'\0';\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }\n  }\n  bVar16 = separators == (char *)0x0;\n  if ((quoted == L'\0') || (bVar16)) {\n    bVar2 = *separators;\n    if (bVar2 != 0) {\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*string != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*separators == '\0') goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  sindex = L'\0';\n  local_80 = (WORD_LIST *)0x0;\nLAB_00161f45:\n  do {\n    if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar4[1] != '\0') goto LAB_00161b92;\n    pWVar5 = alloc_word_desc();\n    pcVar6 = (char *)xmalloc(3);\n    *pcVar6 = '\x7f';\n    pcVar6[1] = '\0';\n    pWVar5->word = pcVar6;\n    pWVar5->flags = pWVar5->flags | 0x40002;\n    local_80 = make_word_list(pWVar5,local_80);\nLAB_00161fb4:\n    free(pcVar4);\n    local_84 = sindex;\n    lVar14 = (long)sindex;\n    pbVar13 = (byte *)string + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = sindex;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  state.__count = L'\0';\n  state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n  if (locale_mb_cur_max < 2) {\n    sindex = local_84 + L'\x01';\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  sindex = sindex + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)sindex;\n  bVar18 = ((byte *)string)[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *separators;\n    if (bVar11 == 0) break;\n    if (separators[1] == '\0') {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    sindex = iVar12 + L'\x01';\n    lVar14 = lVar14 + 1;\n    bVar18 = ((byte *)string)[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    sindex = (wchar_t)lVar14;\n    bVar18 = ((byte *)string)[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)) {\n    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);\n  }\nLAB_00161e45:\n  if (lVar3 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return local_80;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "WORD_DESC *pWVar5;" type_identifier (pointer_declarator "*pWVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "ushort **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "wchar_t local_84;" type_identifier identifier ;) (declaration "WORD_LIST *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "size_t local_78;" primitive_type identifier ;) (declaration "wchar_t local_6c;" type_identifier identifier ;) (declaration "wchar_t sindex;" type_identifier identifier ;) (declaration "mbstate_t_conflict state;" type_identifier identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "lVar3 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar3 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (string == (char *)0x0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }" if (parenthesized_expression "(string == (char *)0x0)" ( (binary_expression "string == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }" { (expression_statement "local_80 = (WORD_LIST *)0x0;" (assignment_expression "local_80 = (WORD_LIST *)0x0" identifier = (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (expression_statement "bVar11 = *string;" (assignment_expression "bVar11 = *string" identifier = (pointer_expression "*string" * identifier)) ;) (if_statement "if (bVar11 == 0) {\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    local_80 = (WORD_LIST *)0x0;\n    goto LAB_00161e45;\n  }" { (expression_statement "local_80 = (WORD_LIST *)0x0;" (assignment_expression "local_80 = (WORD_LIST *)0x0" identifier = (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (if_statement "if ((((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&\n     (separators[2] == '\n')) {\n    bVar15 = separators[3] == '\0';\n  }" if (parenthesized_expression "((((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&\n     (separators[2] == '\n'))" ( (binary_expression "(((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')) &&\n     (separators[2] == '\n')" (parenthesized_expression "(((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t'))" ( (binary_expression "((separators != (char *)0x0) && (*separators == ' ')) && (separators[1] == '\t')" (parenthesized_expression "((separators != (char *)0x0) && (*separators == ' '))" ( (binary_expression "(separators != (char *)0x0) && (*separators == ' ')" (parenthesized_expression "(separators != (char *)0x0)" ( (binary_expression "separators != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*separators == ' ')" ( (binary_expression "*separators == ' '" (pointer_expression "*separators" * identifier) == (char_literal "' '" ' character ')) ))) )) && (parenthesized_expression "(separators[1] == '\t')" ( (binary_expression "separators[1] == '\t'" (subscript_expression "separators[1]" identifier [ number_literal ]) == (char_literal "'\t'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(separators[2] == '\n')" ( (binary_expression "separators[2] == '\n'" (subscript_expression "separators[2]" identifier [ number_literal ]) == (char_literal "'\n'" ' escape_sequence ')) ))) )) (compound_statement "{\n    bVar15 = separators[3] == '\0';\n  }" { (expression_statement "bVar15 = separators[3] == '\0';" (assignment_expression "bVar15 = separators[3] == '\0'" identifier = (binary_expression "separators[3] == '\0'" (subscript_expression "separators[3]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence '))) ;) })) (if_statement "if (ifs_value == (char *)0x0) {\n    local_6c = L'\0';\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }\n  }" if (parenthesized_expression "(ifs_value == (char *)0x0)" ( (binary_expression "ifs_value == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_6c = L'\0';\n  }" { (expression_statement "local_6c = L'\0';" (assignment_expression "local_6c = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) }) (else_clause "else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }\n  }" else (compound_statement "{\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }\n  }" { (expression_statement "cVar10 = *ifs_value;" (assignment_expression "cVar10 = *ifs_value" identifier = (pointer_expression "*ifs_value" * identifier)) ;) (if_statement "if (cVar10 == '\0') {\n      local_6c = L'\0';\n    }\n    else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_6c = L'\0';\n    }" { (expression_statement "local_6c = L'\0';" (assignment_expression "local_6c = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) }) (else_clause "else {\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }" else (compound_statement "{\n      local_6c = L'\0';\n      pcVar4 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));\n    }" { (expression_statement "local_6c = L'\0';" (assignment_expression "local_6c = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "pcVar4 = ifs_value;" (assignment_expression "pcVar4 = ifs_value" identifier = identifier) ;) (do_statement "do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while ((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'));" do (compound_statement "{\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar4 = pcVar4 + 1;\n      }" { (if_statement "if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" if (parenthesized_expression "(cVar10 == '\x01')" ( (binary_expression "cVar10 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          local_6c = local_6c | 0x10;\n        }" { (expression_statement "local_6c = local_6c | 0x10;" (assignment_expression "local_6c = local_6c | 0x10" identifier = (binary_expression "local_6c | 0x10" identifier | number_literal)) ;) }) (else_clause "else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" else (if_statement "if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" if (parenthesized_expression "(cVar10 == '\x7f')" ( (binary_expression "cVar10 == '\x7f'" identifier == (char_literal "'\x7f'" ' escape_sequence ')) )) (compound_statement "{\n          local_6c = local_6c | 0x20;\n        }" { (expression_statement "local_6c = local_6c | 0x20;" (assignment_expression "local_6c = local_6c | 0x20" identifier = (binary_expression "local_6c | 0x20" identifier | number_literal)) ;) })))) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0'))" ( (binary_expression "(pcVar4 != (char *)0x0) && (cVar10 = *pcVar4, cVar10 != '\0')" (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(cVar10 = *pcVar4, cVar10 != '\0')" ( (comma_expression "cVar10 = *pcVar4, cVar10 != '\0'" (assignment_expression "cVar10 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) , (binary_expression "cVar10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) ;) }))) }))) (expression_statement "bVar16 = separators == (char *)0x0;" (assignment_expression "bVar16 = separators == (char *)0x0" identifier = (binary_expression "separators == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if ((quoted == L'\0') || (bVar16)) {\n    bVar2 = *separators;\n    if (bVar2 != 0) {\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*string != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*separators == '\0') goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" if (parenthesized_expression "((quoted == L'\0') || (bVar16))" ( (binary_expression "(quoted == L'\0') || (bVar16)" (parenthesized_expression "(quoted == L'\0')" ( (binary_expression "quoted == L'\0'" identifier == (char_literal "L'\0'" L' escape_sequence ')) )) || (parenthesized_expression "(bVar16)" ( identifier ))) )) (compound_statement "{\n    bVar2 = *separators;\n    if (bVar2 != 0) {\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*string != 0) goto LAB_00161a9f;\n  }" { (expression_statement "bVar2 = *separators;" (assignment_expression "bVar2 = *separators" identifier = (pointer_expression "*separators" * identifier)) ;) (if_statement "if (bVar2 != 0) {\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      cVar10 = separators[1];\n      do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);\n      local_80 = (WORD_LIST *)0x0;\n      goto LAB_00161e45;\n    }" { (expression_statement "cVar10 = separators[1];" (assignment_expression "cVar10 = separators[1]" identifier = (subscript_expression "separators[1]" identifier [ number_literal ])) ;) (do_statement "do {\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        string = (char *)((byte *)string + 1);\n        bVar11 = *string;\n      }" { (if_statement "if (cVar10 == '\0') {\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (bVar2 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" { (if_statement "if (bVar2 == bVar11) goto LAB_00161b10;" if (parenthesized_expression "(bVar2 == bVar11)" ( (binary_expression "bVar2 == bVar11" identifier == identifier) )) (goto_statement "goto LAB_00161b10;" goto statement_identifier ;)) (labeled_statement "LAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }" statement_identifier : (if_statement "if (bVar11 == 0) {\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n            local_80 = (WORD_LIST *)0x0;\n            goto LAB_00161e45;\n          }" { (expression_statement "local_80 = (WORD_LIST *)0x0;" (assignment_expression "local_80 = (WORD_LIST *)0x0" identifier = (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) }))) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (if_statement "if ((byte *)string == (byte *)0x0) goto LAB_00161b6c;" if (parenthesized_expression "((byte *)string == (byte *)0x0)" ( (binary_expression "(byte *)string == (byte *)0x0" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00161b6c;" goto statement_identifier ;)) (goto_statement "goto LAB_00161b59;" goto statement_identifier ;) })) (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar11)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar11" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b43;" goto statement_identifier ;)) (labeled_statement "LAB_00161b10:\n        ppuVar8 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar11 * 2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00161b43;" goto statement_identifier ;)) (expression_statement "string = (char *)((byte *)string + 1);" (assignment_expression "string = (char *)((byte *)string + 1)" identifier = (cast_expression "(char *)((byte *)string + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((byte *)string + 1)" ( (binary_expression "(byte *)string + 1" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "bVar11 = *string;" (assignment_expression "bVar11 = *string" identifier = (pointer_expression "*string" * identifier)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_80 = (WORD_LIST *)0x0;" (assignment_expression "local_80 = (WORD_LIST *)0x0" identifier = (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (labeled_statement "LAB_00161b59:\n    local_78 = 0;" statement_identifier : (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;)) (if_statement "if (*string != 0) goto LAB_00161a9f;" if (parenthesized_expression "(*string != 0)" ( (binary_expression "*string != 0" (pointer_expression "*string" * identifier) != number_literal) )) (goto_statement "goto LAB_00161a9f;" goto statement_identifier ;)) }) (else_clause "else {\n    if (*separators == '\0') goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" else (compound_statement "{\n    if (*separators == '\0') goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" { (if_statement "if (*separators == '\0') goto LAB_00161b59;" if (parenthesized_expression "(*separators == '\0')" ( (binary_expression "*separators == '\0'" (pointer_expression "*separators" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b59;" goto statement_identifier ;)) (labeled_statement "LAB_00161a9f:\n    local_78 = 1;" statement_identifier : (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;)) (if_statement "if ((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" if (parenthesized_expression "((((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0))" ( (binary_expression "(((byte *)string)[1] != 0) && (local_78 = 2, ((byte *)string)[2] != 0)" (parenthesized_expression "(((byte *)string)[1] != 0)" ( (binary_expression "((byte *)string)[1] != 0" (subscript_expression "((byte *)string)[1]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_78 = 2, ((byte *)string)[2] != 0)" ( (comma_expression "local_78 = 2, ((byte *)string)[2] != 0" (assignment_expression "local_78 = 2" identifier = number_literal) , (binary_expression "((byte *)string)[2] != 0" (subscript_expression "((byte *)string)[2]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = (byte *)string;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" { (expression_statement "uVar9 = 0xffffffffffffffff;" (assignment_expression "uVar9 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar13 = (byte *)string;" (assignment_expression "pbVar13 = (byte *)string" identifier = (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar9 == 0) break;" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar18 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_78 = ~uVar9 - 1;" (assignment_expression "local_78 = ~uVar9 - 1" identifier = (binary_expression "~uVar9 - 1" (unary_expression "~uVar9" ~ identifier) - number_literal)) ;) })) }))) (labeled_statement "LAB_00161b6c:\n  sindex = L'\0';" statement_identifier : (expression_statement "sindex = L'\0';" (assignment_expression "sindex = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;)) (expression_statement "local_80 = (WORD_LIST *)0x0;" (assignment_expression "local_80 = (WORD_LIST *)0x0" identifier = (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00161f45:\n  do {\n    if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar4[1] != '\0') goto LAB_00161b92;\n    pWVar5 = alloc_word_desc();\n    pcVar6 = (char *)xmalloc(3);\n    *pcVar6 = '\x7f';\n    pcVar6[1] = '\0';\n    pWVar5->word = pcVar6;\n    pWVar5->flags = pWVar5->flags | 0x40002;\n    local_80 = make_word_list(pWVar5,local_80);\nLAB_00161fb4:\n    free(pcVar4);\n    local_84 = sindex;\n    lVar14 = (long)sindex;\n    pbVar13 = (byte *)string + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" statement_identifier : (do_statement "do {\n    if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar4[1] != '\0') goto LAB_00161b92;\n    pWVar5 = alloc_word_desc();\n    pcVar6 = (char *)xmalloc(3);\n    *pcVar6 = '\x7f';\n    pcVar6[1] = '\0';\n    pWVar5->word = pcVar6;\n    pWVar5->flags = pWVar5->flags | 0x40002;\n    local_80 = make_word_list(pWVar5,local_80);\nLAB_00161fb4:\n    free(pcVar4);\n    local_84 = sindex;\n    lVar14 = (long)sindex;\n    pbVar13 = (byte *)string + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" do (compound_statement "{\n    if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar4[1] != '\0') goto LAB_00161b92;\n    pWVar5 = alloc_word_desc();\n    pcVar6 = (char *)xmalloc(3);\n    *pcVar6 = '\x7f';\n    pcVar6[1] = '\0';\n    pWVar5->word = pcVar6;\n    pWVar5->flags = pWVar5->flags | 0x40002;\n    local_80 = make_word_list(pWVar5,local_80);\nLAB_00161fb4:\n    free(pcVar4);\n    local_84 = sindex;\n    lVar14 = (long)sindex;\n    pbVar13 = (byte *)string + lVar14;\n    bVar18 = *pbVar13;\n  }" { (if_statement "if ((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)) goto LAB_00161e26;" if (parenthesized_expression "((((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0))" ( (binary_expression "(((byte *)string)[sindex] == 0) ||\n       (pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)" (parenthesized_expression "(((byte *)string)[sindex] == 0)" ( (binary_expression "((byte *)string)[sindex] == 0" (subscript_expression "((byte *)string)[sindex]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ identifier ]) == number_literal) )) || (parenthesized_expression "(pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0)" ( (comma_expression "pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c),\n       pcVar4 == (char *)0x0" (assignment_expression "pcVar4 = string_extract_verbatim(string,local_78,&sindex,separators,local_6c)" identifier = (call_expression "string_extract_verbatim(string,local_78,&sindex,separators,local_6c)" identifier (argument_list "(string,local_78,&sindex,separators,local_6c)" ( identifier , identifier , (pointer_expression "&sindex" & identifier) , identifier , identifier )))) , (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00161e26;" goto statement_identifier ;)) (if_statement "if (*pcVar4 != '\x7f') {\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" if (parenthesized_expression "(*pcVar4 != '\x7f')" ( (binary_expression "*pcVar4 != '\x7f'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\x7f'" ' escape_sequence ')) )) (compound_statement "{\n      if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar4);\n      lVar14 = (long)sindex;\n      pbVar13 = (byte *)string + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" { (if_statement "if (*pcVar4 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }" if (parenthesized_expression "(*pcVar4 != '\0')" ( (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00161b92:\n        remove_quoted_nulls(pcVar4);\n        pWVar5 = make_word(pcVar4);\n        local_80 = make_word_list(pWVar5,local_80);\n        piVar1 = &local_80->word->flags;\n        *piVar1 = *piVar1 & 0xfffbffff;\n        if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }\n        goto LAB_00161fb4;\n      }" { (labeled_statement "LAB_00161b92:\n        remove_quoted_nulls(pcVar4);" statement_identifier : (expression_statement "remove_quoted_nulls(pcVar4);" (call_expression "remove_quoted_nulls(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;)) (expression_statement "pWVar5 = make_word(pcVar4);" (assignment_expression "pWVar5 = make_word(pcVar4)" identifier = (call_expression "make_word(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (expression_statement "local_80 = make_word_list(pWVar5,local_80);" (assignment_expression "local_80 = make_word_list(pWVar5,local_80)" identifier = (call_expression "make_word_list(pWVar5,local_80)" identifier (argument_list "(pWVar5,local_80)" ( identifier , identifier )))) ;) (expression_statement "piVar1 = &local_80->word->flags;" (assignment_expression "piVar1 = &local_80->word->flags" identifier = (pointer_expression "&local_80->word->flags" & (field_expression "local_80->word->flags" (field_expression "local_80->word" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 & 0xfffbffff;" (assignment_expression "*piVar1 = *piVar1 & 0xfffbffff" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 & 0xfffbffff" (pointer_expression "*piVar1" * identifier) & number_literal)) ;) (if_statement "if ((quoted & 3U) != 0) {\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }" if (parenthesized_expression "((quoted & 3U) != 0)" ( (binary_expression "(quoted & 3U) != 0" (parenthesized_expression "(quoted & 3U)" ( (binary_expression "quoted & 3U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          piVar1 = &local_80->word->flags;\n          *piVar1 = *piVar1 | 2;\n        }" { (expression_statement "piVar1 = &local_80->word->flags;" (assignment_expression "piVar1 = &local_80->word->flags" identifier = (pointer_expression "&local_80->word->flags" & (field_expression "local_80->word->flags" (field_expression "local_80->word" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 | 2;" (assignment_expression "*piVar1 = *piVar1 | 2" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 | 2" (pointer_expression "*piVar1" * identifier) | number_literal)) ;) })) (goto_statement "goto LAB_00161fb4;" goto statement_identifier ;) })) (if_statement "if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0) {\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)((byte *)string)[sindex] * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)((byte *)string)[sindex] * 2" (subscript_expression "(ulong)((byte *)string)[sindex]" (call_expression "(ulong)((byte *)string)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) [ identifier ]) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          pWVar5 = alloc_word_desc();\n          pcVar6 = (char *)xmalloc(3);\n          *pcVar6 = '\x7f';\n          pcVar6[1] = '\0';\n          pWVar5->word = pcVar6;\n          pWVar5->flags = pWVar5->flags | 0x40002;\n          local_80 = make_word_list(pWVar5,local_80);\n        }" { (expression_statement "pWVar5 = alloc_word_desc();" (assignment_expression "pWVar5 = alloc_word_desc()" identifier = (call_expression "alloc_word_desc()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(3);" (assignment_expression "pcVar6 = (char *)xmalloc(3)" identifier = (cast_expression "(char *)xmalloc(3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(3)" identifier (argument_list "(3)" ( number_literal ))))) ;) (expression_statement "*pcVar6 = '\x7f';" (assignment_expression "*pcVar6 = '\x7f'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\x7f'" ' escape_sequence ')) ;) (expression_statement "pcVar6[1] = '\0';" (assignment_expression "pcVar6[1] = '\0'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pWVar5->word = pcVar6;" (assignment_expression "pWVar5->word = pcVar6" (field_expression "pWVar5->word" identifier -> field_identifier) = identifier) ;) (expression_statement "pWVar5->flags = pWVar5->flags | 0x40002;" (assignment_expression "pWVar5->flags = pWVar5->flags | 0x40002" (field_expression "pWVar5->flags" identifier -> field_identifier) = (binary_expression "pWVar5->flags | 0x40002" (field_expression "pWVar5->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "local_80 = make_word_list(pWVar5,local_80);" (assignment_expression "local_80 = make_word_list(pWVar5,local_80)" identifier = (call_expression "make_word_list(pWVar5,local_80)" identifier (argument_list "(pWVar5,local_80)" ( identifier , identifier )))) ;) })) (goto_statement "goto LAB_00161fb4;" goto statement_identifier ;) })) (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) (expression_statement "lVar14 = (long)sindex;" (assignment_expression "lVar14 = (long)sindex" identifier = (cast_expression "(long)sindex" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = (byte *)string + lVar14;" (assignment_expression "pbVar13 = (byte *)string + lVar14" identifier = (binary_expression "(byte *)string + lVar14" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + identifier)) ;) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (if_statement "if (bVar18 != 0) goto LAB_00161f29;" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00161f29;" goto statement_identifier ;)) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) })) (if_statement "if (pcVar4[1] != '\0') goto LAB_00161b92;" if (parenthesized_expression "(pcVar4[1] != '\0')" ( (binary_expression "pcVar4[1] != '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b92;" goto statement_identifier ;)) (expression_statement "pWVar5 = alloc_word_desc();" (assignment_expression "pWVar5 = alloc_word_desc()" identifier = (call_expression "alloc_word_desc()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(3);" (assignment_expression "pcVar6 = (char *)xmalloc(3)" identifier = (cast_expression "(char *)xmalloc(3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(3)" identifier (argument_list "(3)" ( number_literal ))))) ;) (expression_statement "*pcVar6 = '\x7f';" (assignment_expression "*pcVar6 = '\x7f'" (pointer_expression "*pcVar6" * identifier) = (char_literal "'\x7f'" ' escape_sequence ')) ;) (expression_statement "pcVar6[1] = '\0';" (assignment_expression "pcVar6[1] = '\0'" (subscript_expression "pcVar6[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pWVar5->word = pcVar6;" (assignment_expression "pWVar5->word = pcVar6" (field_expression "pWVar5->word" identifier -> field_identifier) = identifier) ;) (expression_statement "pWVar5->flags = pWVar5->flags | 0x40002;" (assignment_expression "pWVar5->flags = pWVar5->flags | 0x40002" (field_expression "pWVar5->flags" identifier -> field_identifier) = (binary_expression "pWVar5->flags | 0x40002" (field_expression "pWVar5->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "local_80 = make_word_list(pWVar5,local_80);" (assignment_expression "local_80 = make_word_list(pWVar5,local_80)" identifier = (call_expression "make_word_list(pWVar5,local_80)" identifier (argument_list "(pWVar5,local_80)" ( identifier , identifier )))) ;) (labeled_statement "LAB_00161fb4:\n    free(pcVar4);" statement_identifier : (expression_statement "free(pcVar4);" (call_expression "free(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;)) (expression_statement "local_84 = sindex;" (assignment_expression "local_84 = sindex" identifier = identifier) ;) (expression_statement "lVar14 = (long)sindex;" (assignment_expression "lVar14 = (long)sindex" identifier = (cast_expression "(long)sindex" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = (byte *)string + lVar14;" (assignment_expression "pbVar13 = (byte *)string + lVar14" identifier = (binary_expression "(byte *)string + lVar14" (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) + identifier)) ;) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) }) while (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) ;)) (if_statement "if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = sindex;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" if (parenthesized_expression "((bVar15) || (bVar16))" ( (binary_expression "(bVar15) || (bVar16)" (parenthesized_expression "(bVar15)" ( identifier )) || (parenthesized_expression "(bVar16)" ( identifier ))) )) (compound_statement "{\nLAB_00161f29:\n    local_84 = sindex;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }" { (labeled_statement "LAB_00161f29:\n    local_84 = sindex;" statement_identifier : (expression_statement "local_84 = sindex;" (assignment_expression "local_84 = sindex" identifier = identifier) ;)) (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" if (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" ( (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" ( (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar18 == 0x20)" ( (binary_expression "bVar18 == 0x20" identifier == number_literal) ))) )) (compound_statement "{\nLAB_00161e8a:\n      bVar17 = true;\n    }" { (labeled_statement "LAB_00161e8a:\n      bVar17 = true;" statement_identifier : (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;)) }) (else_clause "else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" else (compound_statement "{\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" { (if_statement "if (bVar18 == 0) goto LAB_00161f45;" if (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;)) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }))) }) (else_clause "else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" else (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00161e8a;" goto statement_identifier ;)) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }))) (expression_statement "state.__count = L'\0';" (assignment_expression "state.__count = L'\0'" (field_expression "state.__count" identifier . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "state.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "state.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "state.__value" identifier . field_identifier) = (cast_expression "(anon_union_4_2_91654ee9_for___value)0x0" ( (type_descriptor "anon_union_4_2_91654ee9_for___value" type_identifier) ) number_literal)) ;) (if_statement "if (locale_mb_cur_max < 2) {\n    sindex = local_84 + L'\x01';\n    goto LAB_00161c7f;\n  }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n    sindex = local_84 + L'\x01';\n    goto LAB_00161c7f;\n  }" { (expression_statement "sindex = local_84 + L'\x01';" (assignment_expression "sindex = local_84 + L'\x01'" identifier = (binary_expression "local_84 + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar18 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar18 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar18 >> 5) * 4" (call_expression "(ulong)(bVar18 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar18 >> 5)" ( (binary_expression "bVar18 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar18 & 0x1f)" ( (binary_expression "bVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }\n  }" { (if_statement "if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }" if (parenthesized_expression "((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar7 = 1, (char)bVar18 < '\0')" ( (comma_expression "sVar7 = 1, (char)bVar18 < '\0'" (assignment_expression "sVar7 = 1" identifier = number_literal) , (binary_expression "(char)bVar18 < '\0'" (cast_expression "(char)bVar18" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);\n      if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }\n    }" { (expression_statement "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state);" (assignment_expression "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,(mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "local_78 - lVar14" identifier - identifier) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (0xfffffffffffffffd < sVar7) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }" if (parenthesized_expression "(0xfffffffffffffffd < sVar7)" ( (binary_expression "0xfffffffffffffffd < sVar7" number_literal < identifier) )) (compound_statement "{\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }" { (expression_statement "sindex = sindex + L'\x01';" (assignment_expression "sindex = sindex + L'\x01'" identifier = (binary_expression "sindex + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) (if_statement "if (sVar7 == 0) {\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }" if (parenthesized_expression "(sVar7 == 0)" ( (binary_expression "sVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        sindex = sindex + L'\x01';\n        goto LAB_00161c7f;\n      }" { (expression_statement "sindex = sindex + L'\x01';" (assignment_expression "sindex = sindex + L'\x01'" identifier = (binary_expression "sindex + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) })) }) (else_clause "else {\n    sVar7 = 1;\n  }" else (compound_statement "{\n    sVar7 = 1;\n  }" { (expression_statement "sVar7 = 1;" (assignment_expression "sVar7 = 1" identifier = number_literal) ;) }))) (expression_statement "sindex = sindex + (int)sVar7;" (assignment_expression "sindex = sindex + (int)sVar7" identifier = (binary_expression "sindex + (int)sVar7" identifier + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00161c7f:\n  lVar14 = (long)sindex;" statement_identifier : (expression_statement "lVar14 = (long)sindex;" (assignment_expression "lVar14 = (long)sindex" identifier = (cast_expression "(long)sindex" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (expression_statement "bVar18 = ((byte *)string)[lVar14];" (assignment_expression "bVar18 = ((byte *)string)[lVar14]" identifier = (subscript_expression "((byte *)string)[lVar14]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ identifier ])) ;) (while_statement "while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *separators;\n    if (bVar11 == 0) break;\n    if (separators[1] == '\0') {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    sindex = iVar12 + L'\x01';\n    lVar14 = lVar14 + 1;\n    bVar18 = ((byte *)string)[lVar14];\n  }" while (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *separators;\n    if (bVar11 == 0) break;\n    if (separators[1] == '\0') {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    sindex = iVar12 + L'\x01';\n    lVar14 = lVar14 + 1;\n    bVar18 = ((byte *)string)[lVar14];\n  }" { (expression_statement "iVar12 = (int)lVar14;" (assignment_expression "iVar12 = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" { (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;" if (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" ( (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" ( (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar18 == 0x20)" ( (binary_expression "bVar18 == 0x20" identifier == number_literal) ))) )) (goto_statement "goto LAB_00161ca6;" goto statement_identifier ;)) (labeled_statement "LAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" statement_identifier : (if_statement "if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "((bVar18 != 0) && (bVar17))" ( (binary_expression "(bVar18 != 0) && (bVar17)" (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar17)" ( identifier ))) )) (compound_statement "{\n        bVar11 = *separators;\n        bVar2 = bVar11;\njoined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" { (expression_statement "bVar11 = *separators;" (assignment_expression "bVar11 = *separators" identifier = (pointer_expression "*separators" * identifier)) ;) (expression_statement "bVar2 = bVar11;" (assignment_expression "bVar2 = bVar11" identifier = identifier) ;) (labeled_statement "joined_r0x00161d23:\n        if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" statement_identifier : (if_statement "if (bVar2 != 0) {\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" { (if_statement "if (separators[1] == '\0') {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" if (parenthesized_expression "(separators[1] == '\0')" ( (binary_expression "separators[1] == '\0'" (subscript_expression "separators[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bVar17 = bVar18 == bVar11;\n          }" { (expression_statement "bVar17 = bVar18 == bVar11;" (assignment_expression "bVar17 = bVar18 == bVar11" identifier = (binary_expression "bVar18 == bVar11" identifier == identifier)) ;) }) (else_clause "else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" else (compound_statement "{\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" { (expression_statement "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';" (assignment_expression "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" identifier = (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence '))) ;) }))) (if_statement "if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" { (if_statement "if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }" { (expression_statement "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;" (assignment_expression "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20" identifier = (binary_expression "1 < (byte)(bVar18 - 9) && bVar18 != 0x20" (binary_expression "1 < (byte)(bVar18 - 9)" number_literal < (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) )))) && (binary_expression "bVar18 != 0x20" identifier != number_literal))) ;) }) (else_clause "else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" else (compound_statement "{\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);" (assignment_expression "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" identifier = (cast_expression "(bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" ( (binary_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1)" ( (binary_expression "(byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1" (call_expression "(byte)((*ppuVar8)[bVar18] >> 0xd)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar8)[bVar18] >> 0xd)" ( (binary_expression "(*ppuVar8)[bVar18] >> 0xd" (subscript_expression "(*ppuVar8)[bVar18]" (parenthesized_expression "(*ppuVar8)" ( (pointer_expression "*ppuVar8" * identifier) )) [ identifier ]) >> number_literal) ))) ^ number_literal) )) & number_literal) )))) ;) }))) (if_statement "if (bVar17 != false) {\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" if (parenthesized_expression "(bVar17 != false)" ( (binary_expression "bVar17 != false" identifier != false) )) (compound_statement "{\n              sindex = iVar12 + L'\x01';\n              bVar18 = ((byte *)string)[sindex];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" { (expression_statement "sindex = iVar12 + L'\x01';" (assignment_expression "sindex = iVar12 + L'\x01'" identifier = (binary_expression "iVar12 + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) (expression_statement "bVar18 = ((byte *)string)[sindex];" (assignment_expression "bVar18 = ((byte *)string)[sindex]" identifier = (subscript_expression "((byte *)string)[sindex]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ identifier ])) ;) (if_statement "if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (compound_statement "{\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" { (expression_statement "lVar14 = (long)(iVar12 + 2);" (assignment_expression "lVar14 = (long)(iVar12 + 2)" identifier = (cast_expression "(long)(iVar12 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar12 + 2)" ( (binary_expression "iVar12 + 2" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00161e10;" goto statement_identifier ;) })) })) })) }))) }))) (break_statement "break;" break ;) })) (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00161d08;" goto statement_identifier ;)) (labeled_statement "LAB_00161ca6:\n    bVar11 = *separators;" statement_identifier : (expression_statement "bVar11 = *separators;" (assignment_expression "bVar11 = *separators" identifier = (pointer_expression "*separators" * identifier)) ;)) (if_statement "if (bVar11 == 0) break;" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (separators[1] == '\0') {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" if (parenthesized_expression "(separators[1] == '\0')" ( (binary_expression "separators[1] == '\0'" (subscript_expression "separators[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }" { (if_statement "if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" if (parenthesized_expression "(bVar11 != bVar18)" ( (binary_expression "bVar11 != bVar18" identifier != identifier) )) (compound_statement "{\nLAB_00161d2f:\n        bVar2 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" { (labeled_statement "LAB_00161d2f:\n        bVar2 = bVar18;" statement_identifier : (expression_statement "bVar2 = bVar18;" (assignment_expression "bVar2 = bVar18" identifier = identifier) ;)) (if_statement "if (bVar17) goto joined_r0x00161d23;" if (parenthesized_expression "(bVar17)" ( identifier )) (goto_statement "goto joined_r0x00161d23;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }) (else_clause "else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" else (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161d2f;" goto statement_identifier ;)))) (expression_statement "sindex = iVar12 + L'\x01';" (assignment_expression "sindex = iVar12 + L'\x01'" identifier = (binary_expression "iVar12 + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (expression_statement "bVar18 = ((byte *)string)[lVar14];" (assignment_expression "bVar18 = ((byte *)string)[lVar14]" identifier = (subscript_expression "((byte *)string)[lVar14]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ identifier ])) ;) })) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) (while_statement "while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    sindex = (wchar_t)lVar14;\n    bVar18 = ((byte *)string)[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    sindex = (wchar_t)lVar14;\n    bVar18 = ((byte *)string)[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" { (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "sindex = (wchar_t)lVar14;" (assignment_expression "sindex = (wchar_t)lVar14" identifier = (cast_expression "(wchar_t)lVar14" ( (type_descriptor "wchar_t" type_identifier) ) identifier)) ;) (expression_statement "bVar18 = ((byte *)string)[lVar14];" (assignment_expression "bVar18 = ((byte *)string)[lVar14]" identifier = (subscript_expression "((byte *)string)[lVar14]" (parenthesized_expression "((byte *)string)" ( (cast_expression "(byte *)string" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) [ identifier ])) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (if_statement "if (bVar18 == 0) break;" if (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" statement_identifier : (if_statement "if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }" { (if_statement "if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;" if (parenthesized_expression "((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20))" ( (binary_expression "(1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)" (parenthesized_expression "(1 < (byte)(bVar18 - 9))" ( (binary_expression "1 < (byte)(bVar18 - 9)" number_literal < (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) )))) )) && (parenthesized_expression "(bVar18 != 0x20)" ( (binary_expression "bVar18 != 0x20" identifier != number_literal) ))) )) (break_statement "break;" break ;)) }) (else_clause "else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" else (compound_statement "{\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) })))) })) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) (labeled_statement "LAB_00161e26:\n  if ((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)) {\n    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);\n  }" statement_identifier : (if_statement "if ((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)) {\n    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);\n  }" if (parenthesized_expression "((local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0))" ( (binary_expression "(local_80 != (WORD_LIST *)0x0) && (local_80->next != (word_list *)0x0)" (parenthesized_expression "(local_80 != (WORD_LIST *)0x0)" ( (binary_expression "local_80 != (WORD_LIST *)0x0" identifier != (cast_expression "(WORD_LIST *)0x0" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_80->next != (word_list *)0x0)" ( (binary_expression "local_80->next != (word_list *)0x0" (field_expression "local_80->next" identifier -> field_identifier) != (cast_expression "(word_list *)0x0" ( (type_descriptor "word_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);\n  }" { (expression_statement "local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80);" (assignment_expression "local_80 = (WORD_LIST *)list_reverse((GENERIC_LIST *)local_80)" identifier = (cast_expression "(WORD_LIST *)list_reverse((GENERIC_LIST *)local_80)" ( (type_descriptor "WORD_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "list_reverse((GENERIC_LIST *)local_80)" identifier (argument_list "((GENERIC_LIST *)local_80)" ( (cast_expression "(GENERIC_LIST *)local_80" ( (type_descriptor "GENERIC_LIST *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) }))) (labeled_statement "LAB_00161e45:\n  if (lVar3 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lVar3 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar3 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar3 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_80;" return identifier ;) })))
(translation_unit "long * list_string(byte *param_1,byte *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_80;\n}\n\n" (function_definition "long * list_string(byte *param_1,byte *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_80;\n}" (sized_type_specifier "long" long) (pointer_declarator "* list_string(byte *param_1,byte *param_2,uint param_3)" * (function_declarator "list_string(byte *param_1,byte *param_2,uint param_3)" identifier (parameter_list "(byte *param_1,byte *param_2,uint param_3)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_80;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "ushort **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "long *local_80;" (sized_type_specifier "long" long) (pointer_declarator "*local_80" * identifier) ;) (declaration "long local_78;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "mbstate_t local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" { (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (expression_statement "bVar11 = *param_1;" (assignment_expression "bVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" { (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (if_statement "if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }" if (parenthesized_expression "((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))" ( (binary_expression "(((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10)" (parenthesized_expression "(((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9))" ( (binary_expression "((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)" (parenthesized_expression "((param_2 != (byte *)0x0) && (*param_2 == 0x20))" ( (binary_expression "(param_2 != (byte *)0x0) && (*param_2 == 0x20)" (parenthesized_expression "(param_2 != (byte *)0x0)" ( (binary_expression "param_2 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*param_2 == 0x20)" ( (binary_expression "*param_2 == 0x20" (pointer_expression "*param_2" * identifier) == number_literal) ))) )) && (parenthesized_expression "(param_2[1] == 9)" ( (binary_expression "param_2[1] == 9" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "(param_2[2] == 10)" ( (binary_expression "param_2[2] == 10" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    bVar15 = param_2[3] == 0;\n  }" { (expression_statement "bVar15 = param_2[3] == 0;" (assignment_expression "bVar15 = param_2[3] == 0" identifier = (binary_expression "param_2[3] == 0" (subscript_expression "param_2[3]" identifier [ number_literal ]) == number_literal)) ;) })) (if_statement "if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" if (parenthesized_expression "(ifs_value == (char *)0x0)" ( (binary_expression "ifs_value == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_6c = 0;\n  }" { (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" else (compound_statement "{\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" { (expression_statement "cVar10 = *ifs_value;" (assignment_expression "cVar10 = *ifs_value" identifier = (pointer_expression "*ifs_value" * identifier)) ;) (if_statement "if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" if (parenthesized_expression "(cVar10 == '\0')" ( (binary_expression "cVar10 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_6c = 0;\n    }" { (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" else (compound_statement "{\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" { (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = ifs_value;" (assignment_expression "pcVar3 = ifs_value" identifier = identifier) ;) (do_statement "do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));" do (compound_statement "{\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      }" { (if_statement "if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" if (parenthesized_expression "(cVar10 == '\x01')" ( (binary_expression "cVar10 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n          local_6c = local_6c | 0x10;\n        }" { (expression_statement "local_6c = local_6c | 0x10;" (assignment_expression "local_6c = local_6c | 0x10" identifier = (binary_expression "local_6c | 0x10" identifier | number_literal)) ;) }) (else_clause "else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" else (if_statement "if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" if (parenthesized_expression "(cVar10 == '\x7f')" ( (binary_expression "cVar10 == '\x7f'" identifier == (char_literal "'\x7f'" ' escape_sequence ')) )) (compound_statement "{\n          local_6c = local_6c | 0x20;\n        }" { (expression_statement "local_6c = local_6c | 0x20;" (assignment_expression "local_6c = local_6c | 0x20" identifier = (binary_expression "local_6c | 0x20" identifier | number_literal)) ;) })))) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(cVar10 = *pcVar3, cVar10 != '\0')" ( (comma_expression "cVar10 = *pcVar3, cVar10 != '\0'" (assignment_expression "cVar10 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) , (binary_expression "cVar10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) ))) )) ;) }))) }))) (expression_statement "bVar16 = param_2 == (byte *)0x0;" (assignment_expression "bVar16 = param_2 == (byte *)0x0" identifier = (binary_expression "param_2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" if (parenthesized_expression "((param_3 == 0) || (bVar16))" ( (binary_expression "(param_3 == 0) || (bVar16)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar16)" ( identifier ))) )) (compound_statement "{\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }" { (expression_statement "bVar2 = param_2[1];" (assignment_expression "bVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (do_statement "do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      }" { (if_statement "if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" { (if_statement "if (bVar1 == bVar11) goto LAB_00161b10;" if (parenthesized_expression "(bVar1 == bVar11)" ( (binary_expression "bVar1 == bVar11" identifier == identifier) )) (goto_statement "goto LAB_00161b10;" goto statement_identifier ;)) (labeled_statement "LAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" statement_identifier : (if_statement "if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" { (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) }))) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) goto LAB_00161b6c;" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00161b6c;" goto statement_identifier ;)) (goto_statement "goto LAB_00161b59;" goto statement_identifier ;) })) (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar11)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar11" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b43;" goto statement_identifier ;)) (labeled_statement "LAB_00161b10:\n        ppuVar8 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar11 * 2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00161b43;" goto statement_identifier ;)) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *param_1;" (assignment_expression "bVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00161e45;" goto statement_identifier ;) })) (labeled_statement "LAB_00161b59:\n    local_78 = 0;" statement_identifier : (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;)) (if_statement "if (*param_1 != 0) goto LAB_00161a9f;" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (goto_statement "goto LAB_00161a9f;" goto statement_identifier ;)) }) (else_clause "else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" else (compound_statement "{\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" { (if_statement "if (*param_2 == 0) goto LAB_00161b59;" if (parenthesized_expression "(*param_2 == 0)" ( (binary_expression "*param_2 == 0" (pointer_expression "*param_2" * identifier) == number_literal) )) (goto_statement "goto LAB_00161b59;" goto statement_identifier ;)) (labeled_statement "LAB_00161a9f:\n    local_78 = 1;" statement_identifier : (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" identifier = number_literal) ;)) (if_statement "if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" if (parenthesized_expression "((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0))" ( (binary_expression "(param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)" (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_78 = 2, param_1[2] != 0)" ( (comma_expression "local_78 = 2, param_1[2] != 0" (assignment_expression "local_78 = 2" identifier = number_literal) , (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" { (expression_statement "uVar9 = 0xffffffffffffffff;" (assignment_expression "uVar9 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar13 = param_1;" (assignment_expression "pbVar13 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar9 == 0) break;" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pbVar13 + (ulong)bVar18 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_78 = ~uVar9 - 1;" (assignment_expression "local_78 = ~uVar9 - 1" identifier = (binary_expression "~uVar9 - 1" (unary_expression "~uVar9" ~ identifier) - number_literal)) ;) })) }))) (labeled_statement "LAB_00161b6c:\n  local_4c = 0;" statement_identifier : (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;)) (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" statement_identifier : (do_statement "do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" do (compound_statement "{\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  }" { (if_statement "if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;" if (parenthesized_expression "((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0))" ( (binary_expression "(param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)" (parenthesized_expression "(param_1[local_4c] == 0)" ( (binary_expression "param_1[local_4c] == 0" (subscript_expression "param_1[local_4c]" identifier [ identifier ]) == number_literal) )) || (parenthesized_expression "(pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" identifier = (cast_expression "(char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" identifier (argument_list "(param_1,local_78,&local_4c,param_2,local_6c)" ( identifier , identifier , (pointer_expression "&local_4c" & identifier) , identifier , identifier ))))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00161e26;" goto statement_identifier ;)) (if_statement "if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" if (parenthesized_expression "(*pcVar3 != '\x7f')" ( (binary_expression "*pcVar3 != '\x7f'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\x7f'" ' escape_sequence ')) )) (compound_statement "{\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" { (if_statement "if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }" if (parenthesized_expression "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }" { (labeled_statement "LAB_00161b92:\n        remove_quoted_nulls(pcVar3);" statement_identifier : (expression_statement "remove_quoted_nulls(pcVar3);" (call_expression "remove_quoted_nulls(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) (expression_statement "uVar4 = make_word(pcVar3);" (assignment_expression "uVar4 = make_word(pcVar3)" identifier = (call_expression "make_word(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "local_80 = (long *)make_word_list(uVar4,local_80);" (assignment_expression "local_80 = (long *)make_word_list(uVar4,local_80)" identifier = (cast_expression "(long *)make_word_list(uVar4,local_80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "make_word_list(uVar4,local_80)" identifier (argument_list "(uVar4,local_80)" ( identifier , identifier ))))) ;) (expression_statement "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;" (assignment_expression "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "*(uint *)(local_80[1] + 8) & 0xfffbffff" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) & number_literal)) ;) (if_statement "if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }" if (parenthesized_expression "((param_3 & 3) != 0)" ( (binary_expression "(param_3 & 3) != 0" (parenthesized_expression "(param_3 & 3)" ( (binary_expression "param_3 & 3" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }" { (expression_statement "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;" (assignment_expression "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "*(uint *)(local_80[1] + 8) | 2" (pointer_expression "*(uint *)(local_80[1] + 8)" * (cast_expression "(uint *)(local_80[1] + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80[1] + 8)" ( (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" identifier [ number_literal ]) + number_literal) )))) | number_literal)) ;) })) (goto_statement "goto LAB_00161fb4;" goto statement_identifier ;) })) (if_statement "if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)param_1[local_4c] * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)param_1[local_4c] * 2" (cast_expression "(ulong)param_1[local_4c]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[local_4c]" identifier [ identifier ])) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }" { (expression_statement "puVar5 = (undefined8 *)alloc_word_desc();" (assignment_expression "puVar5 = (undefined8 *)alloc_word_desc()" identifier = (cast_expression "(undefined8 *)alloc_word_desc()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "alloc_word_desc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar6 = (undefined1 *)xmalloc(3);" (assignment_expression "puVar6 = (undefined1 *)xmalloc(3)" identifier = (cast_expression "(undefined1 *)xmalloc(3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(3)" identifier (argument_list "(3)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0x7f;" (assignment_expression "*puVar6 = 0x7f" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;" (assignment_expression "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_80 = (long *)make_word_list(puVar5,local_80);" (assignment_expression "local_80 = (long *)make_word_list(puVar5,local_80)" identifier = (cast_expression "(long *)make_word_list(puVar5,local_80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "make_word_list(puVar5,local_80)" identifier (argument_list "(puVar5,local_80)" ( identifier , identifier ))))) ;) })) (goto_statement "goto LAB_00161fb4;" goto statement_identifier ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" identifier = (cast_expression "(long)local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" identifier = (binary_expression "param_1 + lVar14" identifier + identifier)) ;) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (if_statement "if (bVar18 != 0) goto LAB_00161f29;" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00161f29;" goto statement_identifier ;)) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) })) (if_statement "if (pcVar3[1] != '\0') goto LAB_00161b92;" if (parenthesized_expression "(pcVar3[1] != '\0')" ( (binary_expression "pcVar3[1] != '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161b92;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)alloc_word_desc();" (assignment_expression "puVar5 = (undefined8 *)alloc_word_desc()" identifier = (cast_expression "(undefined8 *)alloc_word_desc()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "alloc_word_desc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar6 = (undefined1 *)xmalloc(3);" (assignment_expression "puVar6 = (undefined1 *)xmalloc(3)" identifier = (cast_expression "(undefined1 *)xmalloc(3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(3)" identifier (argument_list "(3)" ( number_literal ))))) ;) (expression_statement "*puVar6 = 0x7f;" (assignment_expression "*puVar6 = 0x7f" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;" (assignment_expression "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" * (cast_expression "(uint *)(puVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_80 = (long *)make_word_list(puVar5,local_80);" (assignment_expression "local_80 = (long *)make_word_list(puVar5,local_80)" identifier = (cast_expression "(long *)make_word_list(puVar5,local_80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "make_word_list(puVar5,local_80)" identifier (argument_list "(puVar5,local_80)" ( identifier , identifier ))))) ;) (labeled_statement "LAB_00161fb4:\n    free(pcVar3);" statement_identifier : (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" identifier = identifier) ;) (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" identifier = (cast_expression "(long)local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" identifier = (binary_expression "param_1 + lVar14" identifier + identifier)) ;) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) }) while (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) ;)) (if_statement "if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" if (parenthesized_expression "((bVar15) || (bVar16))" ( (binary_expression "(bVar15) || (bVar16)" (parenthesized_expression "(bVar15)" ( identifier )) || (parenthesized_expression "(bVar16)" ( identifier ))) )) (compound_statement "{\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }" { (labeled_statement "LAB_00161f29:\n    local_84 = local_4c;" statement_identifier : (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" identifier = identifier) ;)) (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" if (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" ( (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" ( (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar18 == 0x20)" ( (binary_expression "bVar18 == 0x20" identifier == number_literal) ))) )) (compound_statement "{\nLAB_00161e8a:\n      bVar17 = true;\n    }" { (labeled_statement "LAB_00161e8a:\n      bVar17 = true;" statement_identifier : (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" identifier = true) ;)) }) (else_clause "else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" else (compound_statement "{\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" { (if_statement "if (bVar18 == 0) goto LAB_00161f45;" if (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;)) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }))) }) (else_clause "else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" else (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00161e8a;" goto statement_identifier ;)) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" identifier = false) ;) }))) (expression_statement "local_48.__count = 0;" (assignment_expression "local_48.__count = 0" (field_expression "local_48.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_48.__value = (_union_27)0x0;" (assignment_expression "local_48.__value = (_union_27)0x0" (field_expression "local_48.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (if_statement "if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }" { (expression_statement "local_4c = local_84 + 1;" (assignment_expression "local_4c = local_84 + 1" identifier = (binary_expression "local_84 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar18 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar18 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar18 >> 5) * 4" (call_expression "(ulong)(bVar18 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar18 >> 5)" ( (binary_expression "bVar18 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar18 & 0x1f)" ( (binary_expression "bVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }" { (if_statement "if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }" if (parenthesized_expression "((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "(sVar7 = 1, (char)bVar18 < '\0')" ( (comma_expression "sVar7 = 1, (char)bVar18 < '\0'" (assignment_expression "sVar7 = 1" identifier = number_literal) , (binary_expression "(char)bVar18 < '\0'" (cast_expression "(char)bVar18" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }" { (expression_statement "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);" (assignment_expression "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" identifier (argument_list "((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "local_78 - lVar14" identifier - identifier) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" if (parenthesized_expression "(0xfffffffffffffffd < sVar7)" ( (binary_expression "0xfffffffffffffffd < sVar7" number_literal < identifier) )) (compound_statement "{\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" { (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) (if_statement "if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" if (parenthesized_expression "(sVar7 == 0)" ( (binary_expression "sVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" { (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00161c7f;" goto statement_identifier ;) })) })) }) (else_clause "else {\n    sVar7 = 1;\n  }" else (compound_statement "{\n    sVar7 = 1;\n  }" { (expression_statement "sVar7 = 1;" (assignment_expression "sVar7 = 1" identifier = number_literal) ;) }))) (expression_statement "local_4c = local_4c + (int)sVar7;" (assignment_expression "local_4c = local_4c + (int)sVar7" identifier = (binary_expression "local_4c + (int)sVar7" identifier + (cast_expression "(int)sVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (labeled_statement "LAB_00161c7f:\n  lVar14 = (long)local_4c;" statement_identifier : (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" identifier = (cast_expression "(long)local_4c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;)) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" identifier = (subscript_expression "param_1[lVar14]" identifier [ identifier ])) ;) (while_statement "while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }" while (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }" { (expression_statement "iVar12 = (int)lVar14;" (assignment_expression "iVar12 = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" { (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;" if (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" ( (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" ( (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) ))) < number_literal) )) || (parenthesized_expression "(bVar18 == 0x20)" ( (binary_expression "bVar18 == 0x20" identifier == number_literal) ))) )) (goto_statement "goto LAB_00161ca6;" goto statement_identifier ;)) (labeled_statement "LAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" statement_identifier : (if_statement "if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "((bVar18 != 0) && (bVar17))" ( (binary_expression "(bVar18 != 0) && (bVar17)" (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar17)" ( identifier ))) )) (compound_statement "{\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" { (expression_statement "bVar11 = *param_2;" (assignment_expression "bVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "bVar1 = bVar11;" (assignment_expression "bVar1 = bVar11" identifier = identifier) ;) (labeled_statement "joined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" statement_identifier : (if_statement "if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" { (if_statement "if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" if (parenthesized_expression "(param_2[1] == 0)" ( (binary_expression "param_2[1] == 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            bVar17 = bVar18 == bVar11;\n          }" { (expression_statement "bVar17 = bVar18 == bVar11;" (assignment_expression "bVar17 = bVar18 == bVar11" identifier = (binary_expression "bVar18 == bVar11" identifier == identifier)) ;) }) (else_clause "else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" else (compound_statement "{\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" { (expression_statement "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';" (assignment_expression "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" identifier = (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) != (char_literal "'\0'" ' escape_sequence '))) ;) }))) (if_statement "if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" { (if_statement "if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }" { (expression_statement "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;" (assignment_expression "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20" identifier = (binary_expression "1 < (byte)(bVar18 - 9) && bVar18 != 0x20" (binary_expression "1 < (byte)(bVar18 - 9)" number_literal < (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) )))) && (binary_expression "bVar18 != 0x20" identifier != number_literal))) ;) }) (else_clause "else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" else (compound_statement "{\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);" (assignment_expression "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" identifier = (cast_expression "(bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" ( (binary_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1)" ( (binary_expression "(byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1" (call_expression "(byte)((*ppuVar8)[bVar18] >> 0xd)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar8)[bVar18] >> 0xd)" ( (binary_expression "(*ppuVar8)[bVar18] >> 0xd" (subscript_expression "(*ppuVar8)[bVar18]" (parenthesized_expression "(*ppuVar8)" ( (pointer_expression "*ppuVar8" * identifier) )) [ identifier ]) >> number_literal) ))) ^ number_literal) )) & number_literal) )))) ;) }))) (if_statement "if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" if (parenthesized_expression "(bVar17 != false)" ( (binary_expression "bVar17 != false" identifier != false) )) (compound_statement "{\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" { (expression_statement "local_4c = iVar12 + 1;" (assignment_expression "local_4c = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "bVar18 = param_1[local_4c];" (assignment_expression "bVar18 = param_1[local_4c]" identifier = (subscript_expression "param_1[local_4c]" identifier [ identifier ])) ;) (if_statement "if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" if (parenthesized_expression "(bVar18 != 0)" ( (binary_expression "bVar18 != 0" identifier != number_literal) )) (compound_statement "{\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" { (expression_statement "lVar14 = (long)(iVar12 + 2);" (assignment_expression "lVar14 = (long)(iVar12 + 2)" identifier = (cast_expression "(long)(iVar12 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar12 + 2)" ( (binary_expression "iVar12 + 2" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00161e10;" goto statement_identifier ;) })) })) })) }))) }))) (break_statement "break;" break ;) })) (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00161d08;" goto statement_identifier ;)) (labeled_statement "LAB_00161ca6:\n    bVar11 = *param_2;" statement_identifier : (expression_statement "bVar11 = *param_2;" (assignment_expression "bVar11 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (if_statement "if (bVar11 == 0) break;" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (if_statement "if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" if (parenthesized_expression "(param_2[1] == 0)" ( (binary_expression "param_2[1] == 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }" { (if_statement "if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" if (parenthesized_expression "(bVar11 != bVar18)" ( (binary_expression "bVar11 != bVar18" identifier != identifier) )) (compound_statement "{\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" { (labeled_statement "LAB_00161d2f:\n        bVar1 = bVar18;" statement_identifier : (expression_statement "bVar1 = bVar18;" (assignment_expression "bVar1 = bVar18" identifier = identifier) ;)) (if_statement "if (bVar17) goto joined_r0x00161d23;" if (parenthesized_expression "(bVar17)" ( identifier )) (goto_statement "goto joined_r0x00161d23;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }) (else_clause "else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" else (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00161d2f;" goto statement_identifier ;)))) (expression_statement "local_4c = iVar12 + 1;" (assignment_expression "local_4c = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" identifier = (subscript_expression "param_1[lVar14]" identifier [ identifier ])) ;) })) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) (while_statement "while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" { (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;" if (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" ( (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" * (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" ( (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ifs_cmap" & identifier)) + (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier)) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "local_4c = (int)lVar14;" (assignment_expression "local_4c = (int)lVar14" identifier = (cast_expression "(int)lVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" identifier = (subscript_expression "param_1[lVar14]" identifier [ identifier ])) ;) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) (if_statement "if (bVar18 == 0) break;" if (parenthesized_expression "(bVar18 == 0)" ( (binary_expression "bVar18 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" statement_identifier : (if_statement "if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" if (parenthesized_expression "(bVar16 || bVar15)" ( (binary_expression "bVar16 || bVar15" identifier || identifier) )) (compound_statement "{\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }" { (if_statement "if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;" if (parenthesized_expression "((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20))" ( (binary_expression "(1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)" (parenthesized_expression "(1 < (byte)(bVar18 - 9))" ( (binary_expression "1 < (byte)(bVar18 - 9)" number_literal < (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar18 - 9)" ( (binary_expression "bVar18 - 9" identifier - number_literal) )))) )) && (parenthesized_expression "(bVar18 != 0x20)" ( (binary_expression "bVar18 != 0x20" identifier != number_literal) ))) )) (break_statement "break;" break ;)) }) (else_clause "else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" else (compound_statement "{\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" { (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;" if (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" ( (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" ( (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar8" * identifier)) + (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) })))) })) (goto_statement "goto LAB_00161f45;" goto statement_identifier ;) (labeled_statement "LAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }" statement_identifier : (if_statement "if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }" if (parenthesized_expression "((local_80 != (long *)0x0) && (*local_80 != 0))" ( (binary_expression "(local_80 != (long *)0x0) && (*local_80 != 0)" (parenthesized_expression "(local_80 != (long *)0x0)" ( (binary_expression "local_80 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*local_80 != 0)" ( (binary_expression "*local_80 != 0" (pointer_expression "*local_80" * identifier) != number_literal) ))) )) (compound_statement "{\n    local_80 = (long *)list_reverse();\n  }" { (expression_statement "local_80 = (long *)list_reverse();" (assignment_expression "local_80 = (long *)list_reverse()" identifier = (cast_expression "(long *)list_reverse()" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "list_reverse()" identifier (argument_list "()" ( ))))) ;) }))) (labeled_statement "LAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_80;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT != (char_literal ' escape_sequence '))) ))) )) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , IDENT , IDENT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) | LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])) * LIT)) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( IDENT ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (binary_expression IDENT - IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT || IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( IDENT ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) != (char_literal ' escape_sequence '))) ;) }))) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT || IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) && (binary_expression IDENT != LIT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ]) >> LIT) ))) ^ LIT) )) & LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != BOOL) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) })) })) }))) }))) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto 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 = (subscript_expression IDENT [ IDENT ])) ;) })) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT || IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) & LIT) )) == LIT) )) (break_statement break ;)) })))) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "long * list_string(byte *param_1,byte *param_2,uint param_3)\n\n{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_80;\n}" (sized_type_specifier "long" (long "long")) (pointer_declarator "* list_string(byte *param_1,byte *param_2,uint param_3)" (* "*") (function_declarator "list_string(byte *param_1,byte *param_2,uint param_3)" (identifier "list_string") (parameter_list "(byte *param_1,byte *param_2,uint param_3)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")")))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  char *pcVar3;\n  undefined8 uVar4;\n  undefined8 *puVar5;\n  undefined1 *puVar6;\n  size_t sVar7;\n  ushort **ppuVar8;\n  ulong uVar9;\n  char cVar10;\n  byte bVar11;\n  int iVar12;\n  byte *pbVar13;\n  long lVar14;\n  long in_FS_OFFSET;\n  bool bVar15;\n  bool bVar16;\n  bool bVar17;\n  byte bVar18;\n  int local_84;\n  long *local_80;\n  long local_78;\n  uint local_6c;\n  int local_4c;\n  mbstate_t local_48;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar11 = *param_1;\n  if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }\n  bVar15 = false;\n  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }\n  if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }\n  bVar16 = param_2 == (byte *)0x0;\n  if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }\nLAB_00161b6c:\n  local_4c = 0;\n  local_80 = (long *)0x0;\nLAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);\n  if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }\n  local_48.__count = 0;\n  local_48.__value = (_union_27)0x0;\n  if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }\n  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }\n  local_4c = local_4c + (int)sVar7;\nLAB_00161c7f:\n  lVar14 = (long)local_4c;\n  bVar18 = param_1[lVar14];\n  while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }\n  goto LAB_00161f45;\n  while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }\n  goto LAB_00161f45;\nLAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }\nLAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return local_80;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "size_t sVar7;" (primitive_type "size_t") (identifier "sVar7") (; ";")) (declaration "ushort **ppuVar8;" (type_identifier "ushort") (pointer_declarator "**ppuVar8" (* "*") (pointer_declarator "*ppuVar8" (* "*") (identifier "ppuVar8"))) (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "char cVar10;" (primitive_type "char") (identifier "cVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "byte bVar18;" (type_identifier "byte") (identifier "bVar18") (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "long *local_80;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "long local_78;" (sized_type_specifier "long" (long "long")) (identifier "local_78") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "mbstate_t local_48;" (type_identifier "mbstate_t") (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" (identifier "bVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" ({ "{") (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" (identifier "local_80") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00161e45;" (goto "goto") (statement_identifier "LAB_00161e45") (; ";")) (} "}"))) (expression_statement "bVar11 = *param_1;" (assignment_expression "bVar11 = *param_1" (identifier "bVar11") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (bVar11 == 0) {\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" (if "if") (parenthesized_expression "(bVar11 == 0)" (( "(") (binary_expression "bVar11 == 0" (identifier "bVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_80 = (long *)0x0;\n    goto LAB_00161e45;\n  }" ({ "{") (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" (identifier "local_80") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00161e45;" (goto "goto") (statement_identifier "LAB_00161e45") (; ";")) (} "}"))) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (if_statement "if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))\n  {\n    bVar15 = param_2[3] == 0;\n  }" (if "if") (parenthesized_expression "((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))" (( "(") (binary_expression "(((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10)" (parenthesized_expression "(((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9))" (( "(") (binary_expression "((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)" (parenthesized_expression "((param_2 != (byte *)0x0) && (*param_2 == 0x20))" (( "(") (binary_expression "(param_2 != (byte *)0x0) && (*param_2 == 0x20)" (parenthesized_expression "(param_2 != (byte *)0x0)" (( "(") (binary_expression "param_2 != (byte *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*param_2 == 0x20)" (( "(") (binary_expression "*param_2 == 0x20" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "0x20")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_2[1] == 9)" (( "(") (binary_expression "param_2[1] == 9" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "9")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_2[2] == 10)" (( "(") (binary_expression "param_2[2] == 10" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n    bVar15 = param_2[3] == 0;\n  }" ({ "{") (expression_statement "bVar15 = param_2[3] == 0;" (assignment_expression "bVar15 = param_2[3] == 0" (identifier "bVar15") (= "=") (binary_expression "param_2[3] == 0" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0"))) (; ";")) (} "}"))) (if_statement "if (ifs_value == (char *)0x0) {\n    local_6c = 0;\n  }\n  else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" (if "if") (parenthesized_expression "(ifs_value == (char *)0x0)" (( "(") (binary_expression "ifs_value == (char *)0x0" (identifier "ifs_value") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_6c = 0;\n  }" ({ "{") (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" (else "else") (compound_statement "{\n    cVar10 = *ifs_value;\n    if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }\n  }" ({ "{") (expression_statement "cVar10 = *ifs_value;" (assignment_expression "cVar10 = *ifs_value" (identifier "cVar10") (= "=") (pointer_expression "*ifs_value" (* "*") (identifier "ifs_value"))) (; ";")) (if_statement "if (cVar10 == '\0') {\n      local_6c = 0;\n    }\n    else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" (if "if") (parenthesized_expression "(cVar10 == '\0')" (( "(") (binary_expression "cVar10 == '\0'" (identifier "cVar10") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_6c = 0;\n    }" ({ "{") (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" (else "else") (compound_statement "{\n      local_6c = 0;\n      pcVar3 = ifs_value;\n      do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));\n    }" ({ "{") (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar3 = ifs_value;" (assignment_expression "pcVar3 = ifs_value" (identifier "pcVar3") (= "=") (identifier "ifs_value")) (; ";")) (do_statement "do {\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));" (do "do") (compound_statement "{\n        if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }\n        pcVar3 = pcVar3 + 1;\n      }" ({ "{") (if_statement "if (cVar10 == '\x01') {\n          local_6c = local_6c | 0x10;\n        }\n        else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" (if "if") (parenthesized_expression "(cVar10 == '\x01')" (( "(") (binary_expression "cVar10 == '\x01'" (identifier "cVar10") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n          local_6c = local_6c | 0x10;\n        }" ({ "{") (expression_statement "local_6c = local_6c | 0x10;" (assignment_expression "local_6c = local_6c | 0x10" (identifier "local_6c") (= "=") (binary_expression "local_6c | 0x10" (identifier "local_6c") (| "|") (number_literal "0x10"))) (; ";")) (} "}")) (else_clause "else if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" (else "else") (if_statement "if (cVar10 == '\x7f') {\n          local_6c = local_6c | 0x20;\n        }" (if "if") (parenthesized_expression "(cVar10 == '\x7f')" (( "(") (binary_expression "cVar10 == '\x7f'" (identifier "cVar10") (== "==") (char_literal "'\x7f'" (' "'") (escape_sequence "\x7f") (' "'"))) () ")")) (compound_statement "{\n          local_6c = local_6c | 0x20;\n        }" ({ "{") (expression_statement "local_6c = local_6c | 0x20;" (assignment_expression "local_6c = local_6c | 0x20" (identifier "local_6c") (= "=") (binary_expression "local_6c | 0x20" (identifier "local_6c") (| "|") (number_literal "0x20"))) (; ";")) (} "}"))))) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" (identifier "pcVar3") (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'))" (( "(") (binary_expression "(pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(cVar10 = *pcVar3, cVar10 != '\0')" (( "(") (comma_expression "cVar10 = *pcVar3, cVar10 != '\0'" (assignment_expression "cVar10 = *pcVar3" (identifier "cVar10") (= "=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (, ",") (binary_expression "cVar10 != '\0'" (identifier "cVar10") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (; ";")) (} "}")))) (} "}")))) (expression_statement "bVar16 = param_2 == (byte *)0x0;" (assignment_expression "bVar16 = param_2 == (byte *)0x0" (identifier "bVar16") (= "=") (binary_expression "param_2 == (byte *)0x0" (identifier "param_2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if ((param_3 == 0) || (bVar16)) {\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }\n  else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" (if "if") (parenthesized_expression "((param_3 == 0) || (bVar16))" (( "(") (binary_expression "(param_3 == 0) || (bVar16)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")"))) () ")")) (compound_statement "{\n    bVar1 = *param_2;\n    if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }\nLAB_00161b59:\n    local_78 = 0;\n    if (*param_1 != 0) goto LAB_00161a9f;\n  }" ({ "{") (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" (identifier "bVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (bVar1 != 0) {\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar2 = param_2[1];\n      do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);\n      local_80 = (long *)0x0;\n      goto LAB_00161e45;\n    }" ({ "{") (expression_statement "bVar2 = param_2[1];" (assignment_expression "bVar2 = param_2[1]" (identifier "bVar2") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      } while (bVar11 != 0);" (do "do") (compound_statement "{\n        if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }\n        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;\nLAB_00161b10:\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;\n        param_1 = param_1 + 1;\n        bVar11 = *param_1;\n      }" ({ "{") (if_statement "if (bVar2 == 0) {\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" (if "if") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (bVar1 == bVar11) goto LAB_00161b10;\nLAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }\n          local_78 = 0;\n          if (param_1 == (byte *)0x0) goto LAB_00161b6c;\n          goto LAB_00161b59;\n        }" ({ "{") (if_statement "if (bVar1 == bVar11) goto LAB_00161b10;" (if "if") (parenthesized_expression "(bVar1 == bVar11)" (( "(") (binary_expression "bVar1 == bVar11" (identifier "bVar1") (== "==") (identifier "bVar11")) () ")")) (goto_statement "goto LAB_00161b10;" (goto "goto") (statement_identifier "LAB_00161b10") (; ";"))) (labeled_statement "LAB_00161b43:\n          if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" (statement_identifier "LAB_00161b43") (: ":") (if_statement "if (bVar11 == 0) {\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" (if "if") (parenthesized_expression "(bVar11 == 0)" (( "(") (binary_expression "bVar11 == 0" (identifier "bVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            local_80 = (long *)0x0;\n            goto LAB_00161e45;\n          }" ({ "{") (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" (identifier "local_80") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00161e45;" (goto "goto") (statement_identifier "LAB_00161e45") (; ";")) (} "}")))) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == (byte *)0x0) goto LAB_00161b6c;" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00161b6c;" (goto "goto") (statement_identifier "LAB_00161b6c") (; ";"))) (goto_statement "goto LAB_00161b59;" (goto "goto") (statement_identifier "LAB_00161b59") (; ";")) (} "}"))) (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;" (if "if") (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0')" (( "(") (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar11)" (* "*") (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar11)" (( "(") (binary_expression "(long)&ifs_cmap + (ulong)bVar11" (cast_expression "(long)&ifs_cmap" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&ifs_cmap" (& "&") (identifier "ifs_cmap"))) (+ "+") (cast_expression "(ulong)bVar11" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar11"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00161b43;" (goto "goto") (statement_identifier "LAB_00161b43") (; ";"))) (labeled_statement "LAB_00161b10:\n        ppuVar8 = __ctype_b_loc();" (statement_identifier "LAB_00161b10") (: ":") (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;" (if "if") (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar11 * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar11 * 2" (cast_expression "(long)*ppuVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8"))) (+ "+") (binary_expression "(ulong)bVar11 * 2" (cast_expression "(ulong)bVar11" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar11")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161b43;" (goto "goto") (statement_identifier "LAB_00161b43") (; ";"))) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar11 = *param_1;" (assignment_expression "bVar11 = *param_1" (identifier "bVar11") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" (identifier "local_80") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00161e45;" (goto "goto") (statement_identifier "LAB_00161e45") (; ";")) (} "}"))) (labeled_statement "LAB_00161b59:\n    local_78 = 0;" (statement_identifier "LAB_00161b59") (: ":") (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (*param_1 != 0) goto LAB_00161a9f;" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161a9f;" (goto "goto") (statement_identifier "LAB_00161a9f") (; ";"))) (} "}")) (else_clause "else {\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" (else "else") (compound_statement "{\n    if (*param_2 == 0) goto LAB_00161b59;\nLAB_00161a9f:\n    local_78 = 1;\n    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }\n  }" ({ "{") (if_statement "if (*param_2 == 0) goto LAB_00161b59;" (if "if") (parenthesized_expression "(*param_2 == 0)" (( "(") (binary_expression "*param_2 == 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161b59;" (goto "goto") (statement_identifier "LAB_00161b59") (; ";"))) (labeled_statement "LAB_00161a9f:\n    local_78 = 1;" (statement_identifier "LAB_00161a9f") (: ":") (expression_statement "local_78 = 1;" (assignment_expression "local_78 = 1" (identifier "local_78") (= "=") (number_literal "1")) (; ";"))) (if_statement "if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" (if "if") (parenthesized_expression "((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0))" (( "(") (binary_expression "(param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)" (parenthesized_expression "(param_1[1] != 0)" (( "(") (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_78 = 2, param_1[2] != 0)" (( "(") (comma_expression "local_78 = 2, param_1[2] != 0" (assignment_expression "local_78 = 2" (identifier "local_78") (= "=") (number_literal "2")) (, ",") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar9 = 0xffffffffffffffff;\n      pbVar13 = param_1;\n      do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);\n      local_78 = ~uVar9 - 1;\n    }" ({ "{") (expression_statement "uVar9 = 0xffffffffffffffff;" (assignment_expression "uVar9 = 0xffffffffffffffff" (identifier "uVar9") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar13 = param_1;" (assignment_expression "pbVar13 = param_1" (identifier "pbVar13") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      } while (bVar11 != 0);" (do "do") (compound_statement "{\n        if (uVar9 == 0) break;\n        uVar9 = uVar9 - 1;\n        bVar11 = *pbVar13;\n        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar9 == 0) break;" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar11 = *pbVar13;" (assignment_expression "bVar11 = *pbVar13" (identifier "bVar11") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + (ulong)bVar18 * -2 + 1" (binary_expression "pbVar13 + (ulong)bVar18 * -2" (identifier "pbVar13") (+ "+") (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_78 = ~uVar9 - 1;" (assignment_expression "local_78 = ~uVar9 - 1" (identifier "local_78") (= "=") (binary_expression "~uVar9 - 1" (unary_expression "~uVar9" (~ "~") (identifier "uVar9")) (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00161b6c:\n  local_4c = 0;" (statement_identifier "LAB_00161b6c") (: ":") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_80 = (long *)0x0;" (assignment_expression "local_80 = (long *)0x0" (identifier "local_80") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_00161f45:\n  do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" (statement_identifier "LAB_00161f45") (: ":") (do_statement "do {\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  } while (bVar18 == 0);" (do "do") (compound_statement "{\n    if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;\n    if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }\n    if (pcVar3[1] != '\0') goto LAB_00161b92;\n    puVar5 = (undefined8 *)alloc_word_desc();\n    puVar6 = (undefined1 *)xmalloc(3);\n    *puVar6 = 0x7f;\n    puVar6[1] = 0;\n    *puVar5 = puVar6;\n    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n    local_80 = (long *)make_word_list(puVar5,local_80);\nLAB_00161fb4:\n    free(pcVar3);\n    local_84 = local_4c;\n    lVar14 = (long)local_4c;\n    pbVar13 = param_1 + lVar14;\n    bVar18 = *pbVar13;\n  }" ({ "{") (if_statement "if ((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)) goto LAB_00161e26;" (if "if") (parenthesized_expression "((param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0))" (( "(") (binary_expression "(param_1[local_4c] == 0) ||\n       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)" (parenthesized_expression "(param_1[local_4c] == 0)" (( "(") (binary_expression "param_1[local_4c] == 0" (subscript_expression "param_1[local_4c]" (identifier "param_1") ([ "[") (identifier "local_4c") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),\n       pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c)" (identifier "FUN_0015b8ee") (argument_list "(param_1,local_78,&local_4c,param_2,local_6c)" (( "(") (identifier "param_1") (, ",") (identifier "local_78") (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "param_2") (, ",") (identifier "local_6c") () ")"))))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_00161e26;" (goto "goto") (statement_identifier "LAB_00161e26") (; ";"))) (if_statement "if (*pcVar3 != '\x7f') {\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" (if "if") (parenthesized_expression "(*pcVar3 != '\x7f')" (( "(") (binary_expression "*pcVar3 != '\x7f'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'\x7f'" (' "'") (escape_sequence "\x7f") (' "'"))) () ")")) (compound_statement "{\n      if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }\n      if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }\n      free(pcVar3);\n      lVar14 = (long)local_4c;\n      pbVar13 = param_1 + lVar14;\n      bVar18 = *pbVar13;\n      if (bVar18 != 0) goto LAB_00161f29;\n      goto LAB_00161f45;\n    }" ({ "{") (if_statement "if (*pcVar3 != '\0') {\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }" (if "if") (parenthesized_expression "(*pcVar3 != '\0')" (( "(") (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00161b92:\n        remove_quoted_nulls(pcVar3);\n        uVar4 = make_word(pcVar3);\n        local_80 = (long *)make_word_list(uVar4,local_80);\n        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;\n        if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }\n        goto LAB_00161fb4;\n      }" ({ "{") (labeled_statement "LAB_00161b92:\n        remove_quoted_nulls(pcVar3);" (statement_identifier "LAB_00161b92") (: ":") (expression_statement "remove_quoted_nulls(pcVar3);" (call_expression "remove_quoted_nulls(pcVar3)" (identifier "remove_quoted_nulls") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";"))) (expression_statement "uVar4 = make_word(pcVar3);" (assignment_expression "uVar4 = make_word(pcVar3)" (identifier "uVar4") (= "=") (call_expression "make_word(pcVar3)" (identifier "make_word") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "local_80 = (long *)make_word_list(uVar4,local_80);" (assignment_expression "local_80 = (long *)make_word_list(uVar4,local_80)" (identifier "local_80") (= "=") (cast_expression "(long *)make_word_list(uVar4,local_80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "make_word_list(uVar4,local_80)" (identifier "make_word_list") (argument_list "(uVar4,local_80)" (( "(") (identifier "uVar4") (, ",") (identifier "local_80") () ")"))))) (; ";")) (expression_statement "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;" (assignment_expression "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff" (pointer_expression "*(uint *)(local_80[1] + 8)" (* "*") (cast_expression "(uint *)(local_80[1] + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80[1] + 8)" (( "(") (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" (identifier "local_80") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(uint *)(local_80[1] + 8) & 0xfffbffff" (pointer_expression "*(uint *)(local_80[1] + 8)" (* "*") (cast_expression "(uint *)(local_80[1] + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80[1] + 8)" (( "(") (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" (identifier "local_80") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "0xfffbffff"))) (; ";")) (if_statement "if ((param_3 & 3) != 0) {\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }" (if "if") (parenthesized_expression "((param_3 & 3) != 0)" (( "(") (binary_expression "(param_3 & 3) != 0" (parenthesized_expression "(param_3 & 3)" (( "(") (binary_expression "param_3 & 3" (identifier "param_3") (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;\n        }" ({ "{") (expression_statement "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;" (assignment_expression "*(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2" (pointer_expression "*(uint *)(local_80[1] + 8)" (* "*") (cast_expression "(uint *)(local_80[1] + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80[1] + 8)" (( "(") (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" (identifier "local_80") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(uint *)(local_80[1] + 8) | 2" (pointer_expression "*(uint *)(local_80[1] + 8)" (* "*") (cast_expression "(uint *)(local_80[1] + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80[1] + 8)" (( "(") (binary_expression "local_80[1] + 8" (subscript_expression "local_80[1]" (identifier "local_80") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8")) () ")")))) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00161fb4;" (goto "goto") (statement_identifier "LAB_00161fb4") (; ";")) (} "}"))) (if_statement "if (!bVar15) {\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n        ppuVar8 = __ctype_b_loc();\n        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }\n        goto LAB_00161fb4;\n      }" ({ "{") (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }" (if "if") (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)param_1[local_4c] * 2" (cast_expression "(long)*ppuVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8"))) (+ "+") (binary_expression "(ulong)param_1[local_4c] * 2" (cast_expression "(ulong)param_1[local_4c]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[local_4c]" (identifier "param_1") ([ "[") (identifier "local_4c") (] "]"))) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar5 = (undefined8 *)alloc_word_desc();\n          puVar6 = (undefined1 *)xmalloc(3);\n          *puVar6 = 0x7f;\n          puVar6[1] = 0;\n          *puVar5 = puVar6;\n          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;\n          local_80 = (long *)make_word_list(puVar5,local_80);\n        }" ({ "{") (expression_statement "puVar5 = (undefined8 *)alloc_word_desc();" (assignment_expression "puVar5 = (undefined8 *)alloc_word_desc()" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)alloc_word_desc()" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "alloc_word_desc()" (identifier "alloc_word_desc") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined1 *)xmalloc(3);" (assignment_expression "puVar6 = (undefined1 *)xmalloc(3)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)xmalloc(3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(3)" (identifier "xmalloc") (argument_list "(3)" (( "(") (number_literal "3") () ")"))))) (; ";")) (expression_statement "*puVar6 = 0x7f;" (assignment_expression "*puVar6 = 0x7f" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0x7f")) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;" (assignment_expression "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" (* "*") (cast_expression "(uint *)(puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" (* "*") (cast_expression "(uint *)(puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (| "|") (number_literal "0x40002"))) (; ";")) (expression_statement "local_80 = (long *)make_word_list(puVar5,local_80);" (assignment_expression "local_80 = (long *)make_word_list(puVar5,local_80)" (identifier "local_80") (= "=") (cast_expression "(long *)make_word_list(puVar5,local_80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "make_word_list(puVar5,local_80)" (identifier "make_word_list") (argument_list "(puVar5,local_80)" (( "(") (identifier "puVar5") (, ",") (identifier "local_80") () ")"))))) (; ";")) (} "}"))) (goto_statement "goto LAB_00161fb4;" (goto "goto") (statement_identifier "LAB_00161fb4") (; ";")) (} "}"))) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" (identifier "lVar14") (= "=") (cast_expression "(long)local_4c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_4c"))) (; ";")) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" (identifier "pbVar13") (= "=") (binary_expression "param_1 + lVar14" (identifier "param_1") (+ "+") (identifier "lVar14"))) (; ";")) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" (identifier "bVar18") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (if_statement "if (bVar18 != 0) goto LAB_00161f29;" (if "if") (parenthesized_expression "(bVar18 != 0)" (( "(") (binary_expression "bVar18 != 0" (identifier "bVar18") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161f29;" (goto "goto") (statement_identifier "LAB_00161f29") (; ";"))) (goto_statement "goto LAB_00161f45;" (goto "goto") (statement_identifier "LAB_00161f45") (; ";")) (} "}"))) (if_statement "if (pcVar3[1] != '\0') goto LAB_00161b92;" (if "if") (parenthesized_expression "(pcVar3[1] != '\0')" (( "(") (binary_expression "pcVar3[1] != '\0'" (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00161b92;" (goto "goto") (statement_identifier "LAB_00161b92") (; ";"))) (expression_statement "puVar5 = (undefined8 *)alloc_word_desc();" (assignment_expression "puVar5 = (undefined8 *)alloc_word_desc()" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)alloc_word_desc()" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "alloc_word_desc()" (identifier "alloc_word_desc") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined1 *)xmalloc(3);" (assignment_expression "puVar6 = (undefined1 *)xmalloc(3)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)xmalloc(3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(3)" (identifier "xmalloc") (argument_list "(3)" (( "(") (number_literal "3") () ")"))))) (; ";")) (expression_statement "*puVar6 = 0x7f;" (assignment_expression "*puVar6 = 0x7f" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "0x7f")) (; ";")) (expression_statement "puVar6[1] = 0;" (assignment_expression "puVar6[1] = 0" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar5 = puVar6;" (assignment_expression "*puVar5 = puVar6" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;" (assignment_expression "*(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" (* "*") (cast_expression "(uint *)(puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(uint *)(puVar5 + 1) | 0x40002" (pointer_expression "*(uint *)(puVar5 + 1)" (* "*") (cast_expression "(uint *)(puVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")")))) (| "|") (number_literal "0x40002"))) (; ";")) (expression_statement "local_80 = (long *)make_word_list(puVar5,local_80);" (assignment_expression "local_80 = (long *)make_word_list(puVar5,local_80)" (identifier "local_80") (= "=") (cast_expression "(long *)make_word_list(puVar5,local_80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "make_word_list(puVar5,local_80)" (identifier "make_word_list") (argument_list "(puVar5,local_80)" (( "(") (identifier "puVar5") (, ",") (identifier "local_80") () ")"))))) (; ";")) (labeled_statement "LAB_00161fb4:\n    free(pcVar3);" (statement_identifier "LAB_00161fb4") (: ":") (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";"))) (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" (identifier "local_84") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" (identifier "lVar14") (= "=") (cast_expression "(long)local_4c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_4c"))) (; ";")) (expression_statement "pbVar13 = param_1 + lVar14;" (assignment_expression "pbVar13 = param_1 + lVar14" (identifier "pbVar13") (= "=") (binary_expression "param_1 + lVar14" (identifier "param_1") (+ "+") (identifier "lVar14"))) (; ";")) (expression_statement "bVar18 = *pbVar13;" (assignment_expression "bVar18 = *pbVar13" (identifier "bVar18") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18 == 0)" (( "(") (binary_expression "bVar18 == 0" (identifier "bVar18") (== "==") (number_literal "0")) () ")")) (; ";"))) (if_statement "if ((bVar15) || (bVar16)) {\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }\n  else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" (if "if") (parenthesized_expression "((bVar15) || (bVar16))" (( "(") (binary_expression "(bVar15) || (bVar16)" (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (|| "||") (parenthesized_expression "(bVar16)" (( "(") (identifier "bVar16") () ")"))) () ")")) (compound_statement "{\nLAB_00161f29:\n    local_84 = local_4c;\n    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }\n  }" ({ "{") (labeled_statement "LAB_00161f29:\n    local_84 = local_4c;" (statement_identifier "LAB_00161f29") (: ":") (expression_statement "local_84 = local_4c;" (assignment_expression "local_84 = local_4c" (identifier "local_84") (= "=") (identifier "local_4c")) (; ";"))) (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {\nLAB_00161e8a:\n      bVar17 = true;\n    }\n    else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" (if "if") (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" (( "(") (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" (( "(") (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar18 - 9)" (( "(") (binary_expression "bVar18 - 9" (identifier "bVar18") (- "-") (number_literal "9")) () ")"))) (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(bVar18 == 0x20)" (( "(") (binary_expression "bVar18 == 0x20" (identifier "bVar18") (== "==") (number_literal "0x20")) () ")"))) () ")")) (compound_statement "{\nLAB_00161e8a:\n      bVar17 = true;\n    }" ({ "{") (labeled_statement "LAB_00161e8a:\n      bVar17 = true;" (statement_identifier "LAB_00161e8a") (: ":") (expression_statement "bVar17 = true;" (assignment_expression "bVar17 = true" (identifier "bVar17") (= "=") (true "true")) (; ";"))) (} "}")) (else_clause "else {\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" (else "else") (compound_statement "{\n      if (bVar18 == 0) goto LAB_00161f45;\n      bVar17 = false;\n    }" ({ "{") (if_statement "if (bVar18 == 0) goto LAB_00161f45;" (if "if") (parenthesized_expression "(bVar18 == 0)" (( "(") (binary_expression "bVar18 == 0" (identifier "bVar18") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161f45;" (goto "goto") (statement_identifier "LAB_00161f45") (; ";"))) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" (else "else") (compound_statement "{\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;\n    bVar17 = false;\n  }" ({ "{") (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;" (if "if") (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8"))) (+ "+") (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161e8a;" (goto "goto") (statement_identifier "LAB_00161e8a") (; ";"))) (expression_statement "bVar17 = false;" (assignment_expression "bVar17 = false" (identifier "bVar17") (= "=") (false "false")) (; ";")) (} "}")))) (expression_statement "local_48.__count = 0;" (assignment_expression "local_48.__count = 0" (field_expression "local_48.__count" (identifier "local_48") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48.__value = (_union_27)0x0;" (assignment_expression "local_48.__value = (_union_27)0x0" (field_expression "local_48.__value" (identifier "local_48") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (locale_mb_cur_max < 2) {\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }" (if "if") (parenthesized_expression "(locale_mb_cur_max < 2)" (( "(") (binary_expression "locale_mb_cur_max < 2" (identifier "locale_mb_cur_max") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    local_4c = local_84 + 1;\n    goto LAB_00161c7f;\n  }" ({ "{") (expression_statement "local_4c = local_84 + 1;" (assignment_expression "local_4c = local_84 + 1" (identifier "local_4c") (= "=") (binary_expression "local_84 + 1" (identifier "local_84") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00161c7f;" (goto "goto") (statement_identifier "LAB_00161c7f") (; ";")) (} "}"))) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }\n  else {\n    sVar7 = 1;\n  }" (if "if") (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" (* "*") (cast_expression "(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(is_basic_table + (ulong)(bVar18 >> 5) * 4)" (( "(") (binary_expression "is_basic_table + (ulong)(bVar18 >> 5) * 4" (identifier "is_basic_table") (+ "+") (binary_expression "(ulong)(bVar18 >> 5) * 4" (call_expression "(ulong)(bVar18 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar18 >> 5)" (( "(") (binary_expression "bVar18 >> 5" (identifier "bVar18") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar18 & 0x1f)" (( "(") (binary_expression "bVar18 & 0x1f" (identifier "bVar18") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }\n  }" ({ "{") (if_statement "if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }" (if "if") (parenthesized_expression "((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0'))" (( "(") (binary_expression "(locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" (( "(") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(sVar7 = 1, (char)bVar18 < '\0')" (( "(") (comma_expression "sVar7 = 1, (char)bVar18 < '\0'" (assignment_expression "sVar7 = 1" (identifier "sVar7") (= "=") (number_literal "1")) (, ",") (binary_expression "(char)bVar18 < '\0'" (cast_expression "(char)bVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar18")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);\n      if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n      if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }\n    }" ({ "{") (expression_statement "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);" (assignment_expression "sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" (identifier "sVar7") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (cast_expression "(char *)pbVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar13")) (, ",") (binary_expression "local_78 - lVar14" (identifier "local_78") (- "-") (identifier "lVar14")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (0xfffffffffffffffd < sVar7) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" (if "if") (parenthesized_expression "(0xfffffffffffffffd < sVar7)" (( "(") (binary_expression "0xfffffffffffffffd < sVar7" (number_literal "0xfffffffffffffffd") (< "<") (identifier "sVar7")) () ")")) (compound_statement "{\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" ({ "{") (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" (identifier "local_4c") (= "=") (binary_expression "local_4c + 1" (identifier "local_4c") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00161c7f;" (goto "goto") (statement_identifier "LAB_00161c7f") (; ";")) (} "}"))) (if_statement "if (sVar7 == 0) {\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" (if "if") (parenthesized_expression "(sVar7 == 0)" (( "(") (binary_expression "sVar7 == 0" (identifier "sVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_4c = local_4c + 1;\n        goto LAB_00161c7f;\n      }" ({ "{") (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" (identifier "local_4c") (= "=") (binary_expression "local_4c + 1" (identifier "local_4c") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00161c7f;" (goto "goto") (statement_identifier "LAB_00161c7f") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    sVar7 = 1;\n  }" (else "else") (compound_statement "{\n    sVar7 = 1;\n  }" ({ "{") (expression_statement "sVar7 = 1;" (assignment_expression "sVar7 = 1" (identifier "sVar7") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "local_4c = local_4c + (int)sVar7;" (assignment_expression "local_4c = local_4c + (int)sVar7" (identifier "local_4c") (= "=") (binary_expression "local_4c + (int)sVar7" (identifier "local_4c") (+ "+") (cast_expression "(int)sVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar7")))) (; ";")) (labeled_statement "LAB_00161c7f:\n  lVar14 = (long)local_4c;" (statement_identifier "LAB_00161c7f") (: ":") (expression_statement "lVar14 = (long)local_4c;" (assignment_expression "lVar14 = (long)local_4c" (identifier "lVar14") (= "=") (cast_expression "(long)local_4c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_4c"))) (; ";"))) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" (identifier "bVar18") (= "=") (subscript_expression "param_1[lVar14]" (identifier "param_1") ([ "[") (identifier "lVar14") (] "]"))) (; ";")) (while_statement "while (bVar18 != 0) {\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }" (while "while") (parenthesized_expression "(bVar18 != 0)" (( "(") (binary_expression "bVar18 != 0" (identifier "bVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar12 = (int)lVar14;\n    if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }\n    ppuVar8 = __ctype_b_loc();\n    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;\nLAB_00161ca6:\n    bVar11 = *param_2;\n    if (bVar11 == 0) break;\n    if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;\n    local_4c = iVar12 + 1;\n    lVar14 = lVar14 + 1;\n    bVar18 = param_1[lVar14];\n  }" ({ "{") (expression_statement "iVar12 = (int)lVar14;" (assignment_expression "iVar12 = (int)lVar14" (identifier "iVar12") (= "=") (cast_expression "(int)lVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar14"))) (; ";")) (if_statement "if (bVar16 || bVar15) {\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" (if "if") (parenthesized_expression "(bVar16 || bVar15)" (( "(") (binary_expression "bVar16 || bVar15" (identifier "bVar16") (|| "||") (identifier "bVar15")) () ")")) (compound_statement "{\n      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;\nLAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }\n      break;\n    }" ({ "{") (if_statement "if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;" (if "if") (parenthesized_expression "(((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20))" (( "(") (binary_expression "((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)" (parenthesized_expression "((byte)(bVar18 - 9) < 2)" (( "(") (binary_expression "(byte)(bVar18 - 9) < 2" (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar18 - 9)" (( "(") (binary_expression "bVar18 - 9" (identifier "bVar18") (- "-") (number_literal "9")) () ")"))) (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(bVar18 == 0x20)" (( "(") (binary_expression "bVar18 == 0x20" (identifier "bVar18") (== "==") (number_literal "0x20")) () ")"))) () ")")) (goto_statement "goto LAB_00161ca6;" (goto "goto") (statement_identifier "LAB_00161ca6") (; ";"))) (labeled_statement "LAB_00161d08:\n      if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" (statement_identifier "LAB_00161d08") (: ":") (if_statement "if ((bVar18 != 0) && (bVar17)) {\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "((bVar18 != 0) && (bVar17))" (( "(") (binary_expression "(bVar18 != 0) && (bVar17)" (parenthesized_expression "(bVar18 != 0)" (( "(") (binary_expression "bVar18 != 0" (identifier "bVar18") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")"))) () ")")) (compound_statement "{\n        bVar11 = *param_2;\n        bVar1 = bVar11;\njoined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "bVar11 = *param_2;" (assignment_expression "bVar11 = *param_2" (identifier "bVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "bVar1 = bVar11;" (assignment_expression "bVar1 = bVar11" (identifier "bVar1") (= "=") (identifier "bVar11")) (; ";")) (labeled_statement "joined_r0x00161d23:\n        if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" (statement_identifier "joined_r0x00161d23") (: ":") (if_statement "if (bVar1 != 0) {\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }\n          if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }\n        }" ({ "{") (if_statement "if (param_2[1] == 0) {\n            bVar17 = bVar18 == bVar11;\n          }\n          else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" (if "if") (parenthesized_expression "(param_2[1] == 0)" (( "(") (binary_expression "param_2[1] == 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            bVar17 = bVar18 == bVar11;\n          }" ({ "{") (expression_statement "bVar17 = bVar18 == bVar11;" (assignment_expression "bVar17 = bVar18 == bVar11" (identifier "bVar17") (= "=") (binary_expression "bVar18 == bVar11" (identifier "bVar18") (== "==") (identifier "bVar11"))) (; ";")) (} "}")) (else_clause "else {\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" (else "else") (compound_statement "{\n            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';\n          }" ({ "{") (expression_statement "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';" (assignment_expression "bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" (identifier "bVar17") (= "=") (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" (* "*") (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" (( "(") (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&ifs_cmap" (& "&") (identifier "ifs_cmap"))) (+ "+") (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18"))) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) (; ";")) (} "}")))) (if_statement "if (bVar17) {\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (compound_statement "{\n            if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }\n            if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }\n          }" ({ "{") (if_statement "if (bVar16 || bVar15) {\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }\n            else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" (if "if") (parenthesized_expression "(bVar16 || bVar15)" (( "(") (binary_expression "bVar16 || bVar15" (identifier "bVar16") (|| "||") (identifier "bVar15")) () ")")) (compound_statement "{\n              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;\n            }" ({ "{") (expression_statement "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;" (assignment_expression "bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20" (identifier "bVar17") (= "=") (binary_expression "1 < (byte)(bVar18 - 9) && bVar18 != 0x20" (binary_expression "1 < (byte)(bVar18 - 9)" (number_literal "1") (< "<") (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar18 - 9)" (( "(") (binary_expression "bVar18 - 9" (identifier "bVar18") (- "-") (number_literal "9")) () ")")))) (&& "&&") (binary_expression "bVar18 != 0x20" (identifier "bVar18") (!= "!=") (number_literal "0x20")))) (; ";")) (} "}")) (else_clause "else {\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" (else "else") (compound_statement "{\n              ppuVar8 = __ctype_b_loc();\n              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);\n            }" ({ "{") (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);" (assignment_expression "bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" (identifier "bVar17") (= "=") (cast_expression "(bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1)" (( "(") (binary_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1)" (( "(") (binary_expression "(byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1" (call_expression "(byte)((*ppuVar8)[bVar18] >> 0xd)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((*ppuVar8)[bVar18] >> 0xd)" (( "(") (binary_expression "(*ppuVar8)[bVar18] >> 0xd" (subscript_expression "(*ppuVar8)[bVar18]" (parenthesized_expression "(*ppuVar8)" (( "(") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8")) () ")")) ([ "[") (identifier "bVar18") (] "]")) (>> ">>") (number_literal "0xd")) () ")"))) (^ "^") (number_literal "1")) () ")")) (& "&") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (if_statement "if (bVar17 != false) {\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" (if "if") (parenthesized_expression "(bVar17 != false)" (( "(") (binary_expression "bVar17 != false" (identifier "bVar17") (!= "!=") (false "false")) () ")")) (compound_statement "{\n              local_4c = iVar12 + 1;\n              bVar18 = param_1[local_4c];\n              if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }\n            }" ({ "{") (expression_statement "local_4c = iVar12 + 1;" (assignment_expression "local_4c = iVar12 + 1" (identifier "local_4c") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar18 = param_1[local_4c];" (assignment_expression "bVar18 = param_1[local_4c]" (identifier "bVar18") (= "=") (subscript_expression "param_1[local_4c]" (identifier "param_1") ([ "[") (identifier "local_4c") (] "]"))) (; ";")) (if_statement "if (bVar18 != 0) {\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" (if "if") (parenthesized_expression "(bVar18 != 0)" (( "(") (binary_expression "bVar18 != 0" (identifier "bVar18") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                lVar14 = (long)(iVar12 + 2);\n                goto LAB_00161e10;\n              }" ({ "{") (expression_statement "lVar14 = (long)(iVar12 + 2);" (assignment_expression "lVar14 = (long)(iVar12 + 2)" (identifier "lVar14") (= "=") (cast_expression "(long)(iVar12 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar12 + 2)" (( "(") (binary_expression "iVar12 + 2" (identifier "iVar12") (+ "+") (number_literal "2")) () ")")))) (; ";")) (goto_statement "goto LAB_00161e10;" (goto "goto") (statement_identifier "LAB_00161e10") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")))) (} "}")))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;" (if "if") (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8"))) (+ "+") (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00161d08;" (goto "goto") (statement_identifier "LAB_00161d08") (; ";"))) (labeled_statement "LAB_00161ca6:\n    bVar11 = *param_2;" (statement_identifier "LAB_00161ca6") (: ":") (expression_statement "bVar11 = *param_2;" (assignment_expression "bVar11 = *param_2" (identifier "bVar11") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (if_statement "if (bVar11 == 0) break;" (if "if") (parenthesized_expression "(bVar11 == 0)" (( "(") (binary_expression "bVar11 == 0" (identifier "bVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (param_2[1] == 0) {\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }\n    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" (if "if") (parenthesized_expression "(param_2[1] == 0)" (( "(") (binary_expression "param_2[1] == 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }\n    }" ({ "{") (if_statement "if (bVar11 != bVar18) {\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" (if "if") (parenthesized_expression "(bVar11 != bVar18)" (( "(") (binary_expression "bVar11 != bVar18" (identifier "bVar11") (!= "!=") (identifier "bVar18")) () ")")) (compound_statement "{\nLAB_00161d2f:\n        bVar1 = bVar18;\n        if (bVar17) goto joined_r0x00161d23;\n        break;\n      }" ({ "{") (labeled_statement "LAB_00161d2f:\n        bVar1 = bVar18;" (statement_identifier "LAB_00161d2f") (: ":") (expression_statement "bVar1 = bVar18;" (assignment_expression "bVar1 = bVar18" (identifier "bVar1") (= "=") (identifier "bVar18")) (; ";"))) (if_statement "if (bVar17) goto joined_r0x00161d23;" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (goto_statement "goto joined_r0x00161d23;" (goto "goto") (statement_identifier "joined_r0x00161d23") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" (else "else") (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;" (if "if") (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" (( "(") (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" (* "*") (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" (( "(") (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&ifs_cmap" (& "&") (identifier "ifs_cmap"))) (+ "+") (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00161d2f;" (goto "goto") (statement_identifier "LAB_00161d2f") (; ";"))))) (expression_statement "local_4c = iVar12 + 1;" (assignment_expression "local_4c = iVar12 + 1" (identifier "local_4c") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" (identifier "bVar18") (= "=") (subscript_expression "param_1[lVar14]" (identifier "param_1") ([ "[") (identifier "lVar14") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00161f45;" (goto "goto") (statement_identifier "LAB_00161f45") (; ";")) (while_statement "while( true ) {\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;\n    local_4c = (int)lVar14;\n    bVar18 = param_1[lVar14];\n    lVar14 = lVar14 + 1;\n    if (bVar18 == 0) break;\nLAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }\n  }" ({ "{") (if_statement "if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;" (if "if") (parenthesized_expression "(*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0')" (( "(") (binary_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0'" (pointer_expression "*(char *)((long)&ifs_cmap + (ulong)bVar18)" (* "*") (cast_expression "(char *)((long)&ifs_cmap + (ulong)bVar18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&ifs_cmap + (ulong)bVar18)" (( "(") (binary_expression "(long)&ifs_cmap + (ulong)bVar18" (cast_expression "(long)&ifs_cmap" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&ifs_cmap" (& "&") (identifier "ifs_cmap"))) (+ "+") (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18"))) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_4c = (int)lVar14;" (assignment_expression "local_4c = (int)lVar14" (identifier "local_4c") (= "=") (cast_expression "(int)lVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar14"))) (; ";")) (expression_statement "bVar18 = param_1[lVar14];" (assignment_expression "bVar18 = param_1[lVar14]" (identifier "bVar18") (= "=") (subscript_expression "param_1[lVar14]" (identifier "param_1") ([ "[") (identifier "lVar14") (] "]"))) (; ";")) (expression_statement "lVar14 = lVar14 + 1;" (assignment_expression "lVar14 = lVar14 + 1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar18 == 0) break;" (if "if") (parenthesized_expression "(bVar18 == 0)" (( "(") (binary_expression "bVar18 == 0" (identifier "bVar18") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00161e10:\n    if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" (statement_identifier "LAB_00161e10") (: ":") (if_statement "if (bVar16 || bVar15) {\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }\n    else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" (if "if") (parenthesized_expression "(bVar16 || bVar15)" (( "(") (binary_expression "bVar16 || bVar15" (identifier "bVar16") (|| "||") (identifier "bVar15")) () ")")) (compound_statement "{\n      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;\n    }" ({ "{") (if_statement "if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;" (if "if") (parenthesized_expression "((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20))" (( "(") (binary_expression "(1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)" (parenthesized_expression "(1 < (byte)(bVar18 - 9))" (( "(") (binary_expression "1 < (byte)(bVar18 - 9)" (number_literal "1") (< "<") (call_expression "(byte)(bVar18 - 9)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar18 - 9)" (( "(") (binary_expression "bVar18 - 9" (identifier "bVar18") (- "-") (number_literal "9")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(bVar18 != 0x20)" (( "(") (binary_expression "bVar18 != 0x20" (identifier "bVar18") (!= "!=") (number_literal "0x20")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" (else "else") (compound_statement "{\n      ppuVar8 = __ctype_b_loc();\n      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;\n    }" ({ "{") (expression_statement "ppuVar8 = __ctype_b_loc();" (assignment_expression "ppuVar8 = __ctype_b_loc()" (identifier "ppuVar8") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;" (if "if") (parenthesized_expression "((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20)" (( "(") (binary_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20" (pointer_expression "*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar8 + (ulong)bVar18 * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2 + 1" (binary_expression "(long)*ppuVar8 + (ulong)bVar18 * 2" (cast_expression "(long)*ppuVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar8" (* "*") (identifier "ppuVar8"))) (+ "+") (binary_expression "(ulong)bVar18 * 2" (cast_expression "(ulong)bVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar18")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))))) (} "}"))) (goto_statement "goto LAB_00161f45;" (goto "goto") (statement_identifier "LAB_00161f45") (; ";")) (labeled_statement "LAB_00161e26:\n  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }" (statement_identifier "LAB_00161e26") (: ":") (if_statement "if ((local_80 != (long *)0x0) && (*local_80 != 0)) {\n    local_80 = (long *)list_reverse();\n  }" (if "if") (parenthesized_expression "((local_80 != (long *)0x0) && (*local_80 != 0))" (( "(") (binary_expression "(local_80 != (long *)0x0) && (*local_80 != 0)" (parenthesized_expression "(local_80 != (long *)0x0)" (( "(") (binary_expression "local_80 != (long *)0x0" (identifier "local_80") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*local_80 != 0)" (( "(") (binary_expression "*local_80 != 0" (pointer_expression "*local_80" (* "*") (identifier "local_80")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    local_80 = (long *)list_reverse();\n  }" ({ "{") (expression_statement "local_80 = (long *)list_reverse();" (assignment_expression "local_80 = (long *)list_reverse()" (identifier "local_80") (= "=") (cast_expression "(long *)list_reverse()" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "list_reverse()" (identifier "list_reverse") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}")))) (labeled_statement "LAB_00161e45:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_00161e45") (: ":") (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return local_80;" (return "return") (identifier "local_80") (; ";")) (} "}")))

type_1 * function_1(char *var_2,char *var_4,type_2 var_9)

{
  int *piVar1;
  type_3 var_10;
  long var_37;
  char *var_8;
  type_4 *pWVar5;
  char *pcVar6;
  size_t var_29;
  type_5 **ppuVar8;
  type_6 var_12;
  char var_6;
  type_3 var_3;
  int var_34;
  type_3 *var_13;
  long var_21;
  long var_1;
  bool var_32;
  bool var_31;
  bool var_33;
  type_3 var_22;
  type_2 var_24;
  type_1 *var_35;
  size_t var_28;
  type_2 var_7;
  type_2 var_30;
  type_7 state;
  
  var_22 = 0;
  var_37 = *(long *)(var_1 + 0x28);
  if (var_2 == (char *)0x0) {
    var_35 = (type_1 *)0x0;
    goto LAB_00161e45;
  }
  var_3 = *var_2;
  if (var_3 == 0) {
    var_35 = (type_1 *)0x0;
    goto LAB_00161e45;
  }
  var_32 = false;
  if ((((var_4 != (char *)0x0) && (*var_4 == ' ')) && (var_4[1] == '\t')) &&
     (var_4[2] == '\n')) {
    var_32 = var_4[3] == '\0';
  }
  if (var_5 == (char *)0x0) {
    var_7 = L'\0';
  }
  else {
    var_6 = *var_5;
    if (var_6 == '\0') {
      var_7 = L'\0';
    }
    else {
      var_7 = L'\0';
      var_8 = var_5;
      do {
        if (var_6 == '\x01') {
          var_7 = var_7 | 0x10;
        }
        else if (var_6 == '\x7f') {
          var_7 = var_7 | 0x20;
        }
        var_8 = var_8 + 1;
      } while ((var_8 != (char *)0x0) && (var_6 = *var_8, var_6 != '\0'));
    }
  }
  var_31 = var_4 == (char *)0x0;
  if ((var_9 == L'\0') || (var_31)) {
    var_10 = *var_4;
    if (var_10 != 0) {
      var_6 = var_4[1];
      do {
        if (var_6 == '\0') {
          if (var_10 == var_3) goto LAB_00161b10;
LAB_00161b43:
          if (var_3 == 0) {
            var_35 = (type_1 *)0x0;
            goto LAB_00161e45;
          }
          var_28 = 0;
          if ((type_3 *)var_2 == (type_3 *)0x0) goto LAB_00161b6c;
          goto LAB_00161b59;
        }
        if (*(char *)((long)&ifs_cmap + (type_6)var_3) == '\0') goto LAB_00161b43;
LAB_00161b10:
        ppuVar8 = var_11();
        if ((*(type_3 *)((long)*ppuVar8 + (type_6)var_3 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;
        var_2 = (char *)((type_3 *)var_2 + 1);
        var_3 = *var_2;
      } while (var_3 != 0);
      var_35 = (type_1 *)0x0;
      goto LAB_00161e45;
    }
LAB_00161b59:
    var_28 = 0;
    if (*var_2 != 0) goto LAB_00161a9f;
  }
  else {
    if (*var_4 == '\0') goto LAB_00161b59;
LAB_00161a9f:
    var_28 = 1;
    if ((((type_3 *)var_2)[1] != 0) && (var_28 = 2, ((type_3 *)var_2)[2] != 0)) {
      var_12 = 0xffffffffffffffff;
      var_13 = (type_3 *)var_2;
      do {
        if (var_12 == 0) break;
        var_12 = var_12 - 1;
        var_3 = *var_13;
        var_13 = var_13 + (type_6)var_22 * -2 + 1;
      } while (var_3 != 0);
      var_28 = ~var_12 - 1;
    }
  }
LAB_00161b6c:
  var_30 = L'\0';
  var_35 = (type_1 *)0x0;
LAB_00161f45:
  do {
    if ((((type_3 *)var_2)[var_30] == 0) ||
       (var_8 = var_14(var_2,var_28,&var_30,var_4,var_7),
       var_8 == (char *)0x0)) goto LAB_00161e26;
    if (*var_8 != '\x7f') {
      if (*var_8 != '\0') {
LAB_00161b92:
        var_15(var_8);
        pWVar5 = var_16(var_8);
        var_35 = var_17(pWVar5,var_35);
        piVar1 = &var_35->word->flags;
        *piVar1 = *piVar1 & 0xfffbffff;
        if ((var_9 & 3U) != 0) {
          piVar1 = &var_35->word->flags;
          *piVar1 = *piVar1 | 2;
        }
        goto LAB_00161fb4;
      }
      if (!var_32) {
        ppuVar8 = var_11();
        if ((*(type_3 *)((long)*ppuVar8 + (type_6)((type_3 *)var_2)[var_30] * 2 + 1) & 0x20) == 0) {
          pWVar5 = var_18();
          pcVar6 = (char *)var_19(3);
          *pcVar6 = '\x7f';
          pcVar6[1] = '\0';
          pWVar5->word = pcVar6;
          pWVar5->flags = pWVar5->flags | 0x40002;
          var_35 = var_17(pWVar5,var_35);
        }
        goto LAB_00161fb4;
      }
      var_20(var_8);
      var_21 = (long)var_30;
      var_13 = (type_3 *)var_2 + var_21;
      var_22 = *var_13;
      if (var_22 != 0) goto LAB_00161f29;
      goto LAB_00161f45;
    }
    if (var_8[1] != '\0') goto LAB_00161b92;
    pWVar5 = var_18();
    pcVar6 = (char *)var_19(3);
    *pcVar6 = '\x7f';
    pcVar6[1] = '\0';
    pWVar5->word = pcVar6;
    pWVar5->flags = pWVar5->flags | 0x40002;
    var_35 = var_17(pWVar5,var_35);
LAB_00161fb4:
    var_20(var_8);
    var_24 = var_30;
    var_21 = (long)var_30;
    var_13 = (type_3 *)var_2 + var_21;
    var_22 = *var_13;
  } while (var_22 == 0);
  if ((var_32) || (var_31)) {
LAB_00161f29:
    var_24 = var_30;
    if (((type_3)(var_22 - 9) < 2) || (var_22 == 0x20)) {
LAB_00161e8a:
      var_33 = true;
    }
    else {
      if (var_22 == 0) goto LAB_00161f45;
      var_33 = false;
    }
  }
  else {
    ppuVar8 = var_11();
    if ((*(type_3 *)((long)*ppuVar8 + (type_6)var_22 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;
    var_33 = false;
  }
  state.__count = L'\0';
  state.__value = (type_8)0x0;
  if (var_23 < 2) {
    var_30 = var_24 + L'\x01';
    goto LAB_00161c7f;
  }
  if ((*(type_9 *)(var_25 + (type_6)(var_22 >> 5) * 4) >> (var_22 & 0x1f) & 1) == 0) {
    if ((var_26 == 0) || (var_29 = 1, (char)var_22 < '\0')) {
      var_29 = var_27((type_2 *)0x0,(char *)var_13,var_28 - var_21,(type_10 *)&state);
      if (0xfffffffffffffffd < var_29) {
        var_30 = var_30 + L'\x01';
        goto LAB_00161c7f;
      }
      if (var_29 == 0) {
        var_30 = var_30 + L'\x01';
        goto LAB_00161c7f;
      }
    }
  }
  else {
    var_29 = 1;
  }
  var_30 = var_30 + (int)var_29;
LAB_00161c7f:
  var_21 = (long)var_30;
  var_22 = ((type_3 *)var_2)[var_21];
  while (var_22 != 0) {
    var_34 = (int)var_21;
    if (var_31 || var_32) {
      if (((type_3)(var_22 - 9) < 2) || (var_22 == 0x20)) goto LAB_00161ca6;
LAB_00161d08:
      if ((var_22 != 0) && (var_33)) {
        var_3 = *var_4;
        var_10 = var_3;
joined_r0x00161d23:
        if (var_10 != 0) {
          if (var_4[1] == '\0') {
            var_33 = var_22 == var_3;
          }
          else {
            var_33 = *(char *)((long)&ifs_cmap + (type_6)var_22) != '\0';
          }
          if (var_33) {
            if (var_31 || var_32) {
              var_33 = 1 < (type_3)(var_22 - 9) && var_22 != 0x20;
            }
            else {
              ppuVar8 = var_11();
              var_33 = (bool)(((type_3)((*ppuVar8)[var_22] >> 0xd) ^ 1) & 1);
            }
            if (var_33 != false) {
              var_30 = var_34 + L'\x01';
              var_22 = ((type_3 *)var_2)[var_30];
              if (var_22 != 0) {
                var_21 = (long)(var_34 + 2);
                goto LAB_00161e10;
              }
            }
          }
        }
      }
      break;
    }
    ppuVar8 = var_11();
    if ((*(type_3 *)((long)*ppuVar8 + (type_6)var_22 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;
LAB_00161ca6:
    var_3 = *var_4;
    if (var_3 == 0) break;
    if (var_4[1] == '\0') {
      if (var_3 != var_22) {
LAB_00161d2f:
        var_10 = var_22;
        if (var_33) goto joined_r0x00161d23;
        break;
      }
    }
    else if (*(char *)((long)&ifs_cmap + (type_6)var_22) == '\0') goto LAB_00161d2f;
    var_30 = var_34 + L'\x01';
    var_21 = var_21 + 1;
    var_22 = ((type_3 *)var_2)[var_21];
  }
  goto LAB_00161f45;
  while( true ) {
    if (*(char *)((long)&ifs_cmap + (type_6)var_22) == '\0') break;
    var_30 = (type_2)var_21;
    var_22 = ((type_3 *)var_2)[var_21];
    var_21 = var_21 + 1;
    if (var_22 == 0) break;
LAB_00161e10:
    if (var_31 || var_32) {
      if ((1 < (type_3)(var_22 - 9)) && (var_22 != 0x20)) break;
    }
    else {
      ppuVar8 = var_11();
      if ((*(type_3 *)((long)*ppuVar8 + (type_6)var_22 * 2 + 1) & 0x20) == 0) break;
    }
  }
  goto LAB_00161f45;
LAB_00161e26:
  if ((var_35 != (type_1 *)0x0) && (var_35->next != (type_11 *)0x0)) {
    var_35 = (type_1 *)var_36((type_12 *)var_35);
  }
LAB_00161e45:
  if (var_37 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_38();
  }
  return var_35;
}


(translation_unit (function_definition type: (sized_type_specifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (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))))) 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 (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (do_statement body: (compound_statement (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: (goto_statement label: (statement_identifier))) (labeled_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: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_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: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier))))) right: (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: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (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: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (labeled_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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (true))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (false)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (binary_expression left: (identifier) right: (identifier)) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (char_literal (escape_sequence)))))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (false))) 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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)))))))))))))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (break_statement)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (char_literal (escape_sequence)))) consequence: (goto_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: (subscript_expression argument: (identifier) index: (identifier)))))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (break_statement))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (break_statement)))))))) (goto_statement label: (statement_identifier)) (labeled_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: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))))

long * MASKED(byte *param_1,byte *param_2,uint param_3)

{
  byte bVar1;
  byte bVar2;
  char *pcVar3;
  undefined8 uVar4;
  undefined8 *puVar5;
  undefined1 *puVar6;
  size_t sVar7;
  ushort **ppuVar8;
  ulong uVar9;
  char cVar10;
  byte bVar11;
  int iVar12;
  byte *pbVar13;
  long lVar14;
  long in_FS_OFFSET;
  bool bVar15;
  bool bVar16;
  bool bVar17;
  byte bVar18;
  int local_84;
  long *local_80;
  long local_78;
  uint local_6c;
  int local_4c;
  mbstate_t local_48;
  long local_40;
  
  bVar18 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == (byte *)0x0) {
    local_80 = (long *)0x0;
    goto LAB_00161e45;
  }
  bVar11 = *param_1;
  if (bVar11 == 0) {
    local_80 = (long *)0x0;
    goto LAB_00161e45;
  }
  bVar15 = false;
  if ((((param_2 != (byte *)0x0) && (*param_2 == 0x20)) && (param_2[1] == 9)) && (param_2[2] == 10))
  {
    bVar15 = param_2[3] == 0;
  }
  if (ifs_value == (char *)0x0) {
    local_6c = 0;
  }
  else {
    cVar10 = *ifs_value;
    if (cVar10 == '\0') {
      local_6c = 0;
    }
    else {
      local_6c = 0;
      pcVar3 = ifs_value;
      do {
        if (cVar10 == '\x01') {
          local_6c = local_6c | 0x10;
        }
        else if (cVar10 == '\x7f') {
          local_6c = local_6c | 0x20;
        }
        pcVar3 = pcVar3 + 1;
      } while ((pcVar3 != (char *)0x0) && (cVar10 = *pcVar3, cVar10 != '\0'));
    }
  }
  bVar16 = param_2 == (byte *)0x0;
  if ((param_3 == 0) || (bVar16)) {
    bVar1 = *param_2;
    if (bVar1 != 0) {
      bVar2 = param_2[1];
      do {
        if (bVar2 == 0) {
          if (bVar1 == bVar11) goto LAB_00161b10;
LAB_00161b43:
          if (bVar11 == 0) {
            local_80 = (long *)0x0;
            goto LAB_00161e45;
          }
          local_78 = 0;
          if (param_1 == (byte *)0x0) goto LAB_00161b6c;
          goto LAB_00161b59;
        }
        if (*(char *)((long)&ifs_cmap + (ulong)bVar11) == '\0') goto LAB_00161b43;
LAB_00161b10:
        ppuVar8 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar8 + (ulong)bVar11 * 2 + 1) & 0x20) == 0) goto LAB_00161b43;
        param_1 = param_1 + 1;
        bVar11 = *param_1;
      } while (bVar11 != 0);
      local_80 = (long *)0x0;
      goto LAB_00161e45;
    }
LAB_00161b59:
    local_78 = 0;
    if (*param_1 != 0) goto LAB_00161a9f;
  }
  else {
    if (*param_2 == 0) goto LAB_00161b59;
LAB_00161a9f:
    local_78 = 1;
    if ((param_1[1] != 0) && (local_78 = 2, param_1[2] != 0)) {
      uVar9 = 0xffffffffffffffff;
      pbVar13 = param_1;
      do {
        if (uVar9 == 0) break;
        uVar9 = uVar9 - 1;
        bVar11 = *pbVar13;
        pbVar13 = pbVar13 + (ulong)bVar18 * -2 + 1;
      } while (bVar11 != 0);
      local_78 = ~uVar9 - 1;
    }
  }
LAB_00161b6c:
  local_4c = 0;
  local_80 = (long *)0x0;
LAB_00161f45:
  do {
    if ((param_1[local_4c] == 0) ||
       (pcVar3 = (char *)FUN_0015b8ee(param_1,local_78,&local_4c,param_2,local_6c),
       pcVar3 == (char *)0x0)) goto LAB_00161e26;
    if (*pcVar3 != '\x7f') {
      if (*pcVar3 != '\0') {
LAB_00161b92:
        remove_quoted_nulls(pcVar3);
        uVar4 = make_word(pcVar3);
        local_80 = (long *)make_word_list(uVar4,local_80);
        *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) & 0xfffbffff;
        if ((param_3 & 3) != 0) {
          *(uint *)(local_80[1] + 8) = *(uint *)(local_80[1] + 8) | 2;
        }
        goto LAB_00161fb4;
      }
      if (!bVar15) {
        ppuVar8 = __ctype_b_loc();
        if ((*(byte *)((long)*ppuVar8 + (ulong)param_1[local_4c] * 2 + 1) & 0x20) == 0) {
          puVar5 = (undefined8 *)alloc_word_desc();
          puVar6 = (undefined1 *)xmalloc(3);
          *puVar6 = 0x7f;
          puVar6[1] = 0;
          *puVar5 = puVar6;
          *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;
          local_80 = (long *)make_word_list(puVar5,local_80);
        }
        goto LAB_00161fb4;
      }
      free(pcVar3);
      lVar14 = (long)local_4c;
      pbVar13 = param_1 + lVar14;
      bVar18 = *pbVar13;
      if (bVar18 != 0) goto LAB_00161f29;
      goto LAB_00161f45;
    }
    if (pcVar3[1] != '\0') goto LAB_00161b92;
    puVar5 = (undefined8 *)alloc_word_desc();
    puVar6 = (undefined1 *)xmalloc(3);
    *puVar6 = 0x7f;
    puVar6[1] = 0;
    *puVar5 = puVar6;
    *(uint *)(puVar5 + 1) = *(uint *)(puVar5 + 1) | 0x40002;
    local_80 = (long *)make_word_list(puVar5,local_80);
LAB_00161fb4:
    free(pcVar3);
    local_84 = local_4c;
    lVar14 = (long)local_4c;
    pbVar13 = param_1 + lVar14;
    bVar18 = *pbVar13;
  } while (bVar18 == 0);
  if ((bVar15) || (bVar16)) {
LAB_00161f29:
    local_84 = local_4c;
    if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) {
LAB_00161e8a:
      bVar17 = true;
    }
    else {
      if (bVar18 == 0) goto LAB_00161f45;
      bVar17 = false;
    }
  }
  else {
    ppuVar8 = __ctype_b_loc();
    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) != 0) goto LAB_00161e8a;
    bVar17 = false;
  }
  local_48.__count = 0;
  local_48.__value = (_union_27)0x0;
  if (locale_mb_cur_max < 2) {
    local_4c = local_84 + 1;
    goto LAB_00161c7f;
  }
  if ((*(uint *)(is_basic_table + (ulong)(bVar18 >> 5) * 4) >> (bVar18 & 0x1f) & 1) == 0) {
    if ((locale_utf8locale == 0) || (sVar7 = 1, (char)bVar18 < '\0')) {
      sVar7 = mbrtowc((wchar_t *)0x0,(char *)pbVar13,local_78 - lVar14,&local_48);
      if (0xfffffffffffffffd < sVar7) {
        local_4c = local_4c + 1;
        goto LAB_00161c7f;
      }
      if (sVar7 == 0) {
        local_4c = local_4c + 1;
        goto LAB_00161c7f;
      }
    }
  }
  else {
    sVar7 = 1;
  }
  local_4c = local_4c + (int)sVar7;
LAB_00161c7f:
  lVar14 = (long)local_4c;
  bVar18 = param_1[lVar14];
  while (bVar18 != 0) {
    iVar12 = (int)lVar14;
    if (bVar16 || bVar15) {
      if (((byte)(bVar18 - 9) < 2) || (bVar18 == 0x20)) goto LAB_00161ca6;
LAB_00161d08:
      if ((bVar18 != 0) && (bVar17)) {
        bVar11 = *param_2;
        bVar1 = bVar11;
joined_r0x00161d23:
        if (bVar1 != 0) {
          if (param_2[1] == 0) {
            bVar17 = bVar18 == bVar11;
          }
          else {
            bVar17 = *(char *)((long)&ifs_cmap + (ulong)bVar18) != '\0';
          }
          if (bVar17) {
            if (bVar16 || bVar15) {
              bVar17 = 1 < (byte)(bVar18 - 9) && bVar18 != 0x20;
            }
            else {
              ppuVar8 = __ctype_b_loc();
              bVar17 = (bool)(((byte)((*ppuVar8)[bVar18] >> 0xd) ^ 1) & 1);
            }
            if (bVar17 != false) {
              local_4c = iVar12 + 1;
              bVar18 = param_1[local_4c];
              if (bVar18 != 0) {
                lVar14 = (long)(iVar12 + 2);
                goto LAB_00161e10;
              }
            }
          }
        }
      }
      break;
    }
    ppuVar8 = __ctype_b_loc();
    if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) goto LAB_00161d08;
LAB_00161ca6:
    bVar11 = *param_2;
    if (bVar11 == 0) break;
    if (param_2[1] == 0) {
      if (bVar11 != bVar18) {
LAB_00161d2f:
        bVar1 = bVar18;
        if (bVar17) goto joined_r0x00161d23;
        break;
      }
    }
    else if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') goto LAB_00161d2f;
    local_4c = iVar12 + 1;
    lVar14 = lVar14 + 1;
    bVar18 = param_1[lVar14];
  }
  goto LAB_00161f45;
  while( true ) {
    if (*(char *)((long)&ifs_cmap + (ulong)bVar18) == '\0') break;
    local_4c = (int)lVar14;
    bVar18 = param_1[lVar14];
    lVar14 = lVar14 + 1;
    if (bVar18 == 0) break;
LAB_00161e10:
    if (bVar16 || bVar15) {
      if ((1 < (byte)(bVar18 - 9)) && (bVar18 != 0x20)) break;
    }
    else {
      ppuVar8 = __ctype_b_loc();
      if ((*(byte *)((long)*ppuVar8 + (ulong)bVar18 * 2 + 1) & 0x20) == 0) break;
    }
  }
  goto LAB_00161f45;
LAB_00161e26:
  if ((local_80 != (long *)0x0) && (*local_80 != 0)) {
    local_80 = (long *)list_reverse();
  }
LAB_00161e45:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return local_80;
}

