#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef scalar_t__ wctype_t;
typedef int wchar_t;
typedef int /*<<< orphan*/ buf;

/* Variables and functions */
int /*<<< orphan*/ EXIT_FAILURE;
int /*<<< orphan*/ LC_ALL;
int /*<<< orphan*/ LC_CTYPE;
int /*<<< orphan*/ error(int /*<<< orphan*/, int /*<<< orphan*/, char *);
int /*<<< orphan*/ *fgetws(int *, int, int /*<<< orphan*/);
scalar_t__ iswctype(int, scalar_t__);
char *setlocale(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stdin;
scalar_t__ wctype(char *);
int /*<<< orphan*/ wprintf(char *, ...);
int main(void) {
  wctype_t wct;
  wchar_t buf[1000];
  int result = 1;
  setlocale(LC_ALL, "");
  wprintf(L"locale = %s\n", setlocale(LC_CTYPE, NULL));
  wct = wctype("jhira");
  if (wct == 0)
    error(EXIT_FAILURE, 0, "jhira: no such character class");
  if (fgetws(buf, sizeof(buf) / sizeof(buf[0]), stdin) != NULL) {
    int n;
    wprintf(L"buf[] = \"%ls\"\n", buf);
    result = 0;
    for (n = 0; buf[n] != L'\0'; ++n) {
      wprintf(L"jhira(U%04lx = %lc) = %d\n", (long)buf[n], buf[n],
              iswctype(buf[n], wct));
      result |= ((buf[n] < 0xff && iswctype(buf[n], wct)) ||
                 (buf[n] > 0xff && !iswctype(buf[n], wct)));
    }
  }
  wct = wctype("jkata");
  if (wct == 0)
    error(EXIT_FAILURE, 0, "jkata: no such character class");
  if (fgetws(buf, sizeof(buf) / sizeof(buf[0]), stdin) != NULL) {
    int n;
    wprintf(L"buf[] = \"%ls\"\n", buf);
    result = 0;
    for (n = 0; buf[n] != L'\0'; ++n) {
      wprintf(L"jkata(U%04lx = %lc) = %d\n", (long)buf[n], buf[n],
              iswctype(buf[n], wct));
      result |= ((buf[n] < 0xff && iswctype(buf[n], wct)) ||
                 (buf[n] > 0xff && !iswctype(buf[n], wct)));
    }
  }
  wct = wctype("jdigit");
  if (wct == 0)
    error(EXIT_FAILURE, 0, "jdigit: no such character class");
  if (fgetws(buf, sizeof(buf) / sizeof(buf[0]), stdin) != NULL) {
    int n;
    wprintf(L"buf[] = \"%ls\"\n", buf);
    result = 0;
    for (n = 0; buf[n] != L'\0'; ++n) {
      wprintf(L"jdigit(U%04lx = %lc) = %d\n", (long)buf[n], buf[n],
              iswctype(buf[n], wct));
      result |= ((buf[n] < 0xff && iswctype(buf[n], wct)) ||
                 (buf[n] > 0xff && !iswctype(buf[n], wct)));
    }
  }
  wct = wctype("jspace");
  if (wct == 0)
    error(EXIT_FAILURE, 0, "jspace: no such character class");
  if (fgetws(buf, sizeof(buf) / sizeof(buf[0]), stdin) != NULL) {
    int n;
    wprintf(L"buf[] = \"%ls\"\n", buf);
    result = 0;
    for (n = 0; buf[n] != L'\0'; ++n) {
      wprintf(L"jspace(U%04lx = %lc) = %d\n", (long)buf[n], buf[n],
              iswctype(buf[n], wct));
      result |= ((buf[n] < 0xff && iswctype(buf[n], wct)) ||
                 (buf[n] > 0xff && !iswctype(buf[n], wct)));
    }
  }
  wct = wctype("jkanji");
  if (wct == 0)
    error(EXIT_FAILURE, 0, "jkanji: no such character class");
  if (fgetws(buf, sizeof(buf) / sizeof(buf[0]), stdin) != NULL) {
    int n;
    wprintf(L"buf[] = \"%ls\"\n", buf);
    result = 0;
    for (n = 0; buf[n] != L'\0'; ++n) {
      wprintf(L"jkanji(U%04lx = %lc) = %d\n", (long)buf[n], buf[n],
              iswctype(buf[n], wct));
      result |= ((buf[n] < 0xff && iswctype(buf[n], wct)) ||
                 (buf[n] > 0xff && !iswctype(buf[n], wct)));
    }
  }
  return result;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1020,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x1,-0xfb4(%rbp)
mov    0x2e45(%rip),%rax
mov    (%rax),%edi
lea    0xe79(%rip),%rsi
call   1070 <setlocale@plt>
mov    0x2e50(%rip),%rax
mov    (%rax),%edi
xor    %eax,%eax
mov    %eax,%esi
call   1070 <setlocale@plt>
mov    %rax,%rsi
lea    0xf13(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
lea    0xe45(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    11e6 <main+0x86>
mov    0x2dfa(%rip),%rax
mov    (%rax),%edi
xor    %esi,%esi
lea    0xe25(%rip),%rdx
call   1080 <error@plt>
lea    -0xfb0(%rbp),%rdi
mov    0x2dec(%rip),%rax
mov    (%rax),%edx
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
cmp    $0x0,%rax
je     136d <main+0x20d>
lea    -0xfb0(%rbp),%rsi
lea    0xedc(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movl   $0x0,-0xfb4(%rbp)
movl   $0x0,-0xfb8(%rbp)
movslq -0xfb8(%rbp),%rax
cmpl   $0x0,-0xfb0(%rbp,%rax,4)
je     1368 <main+0x208>
movslq -0xfb8(%rbp),%rax
movslq -0xfb0(%rbp,%rax,4),%rax
ff
mov    %rax,-0xfd8(%rbp)
movslq -0xfb8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%eax
mov    %eax,-0xfcc(%rbp)
movslq -0xfb8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    -0xfd8(%rbp),%rsi
mov    -0xfcc(%rbp),%edx
mov    %rax,%rcx
lea    0xe90(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movslq -0xfb8(%rbp),%rax
cmpl   $0xff,-0xfb0(%rbp,%rax,4)
jge    12eb <main+0x18b>
movslq -0xfb8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0xfd9(%rbp)
jne    133d <main+0x1dd>
movslq -0xfb8(%rbp),%rcx
xor    %eax,%eax
cmpl   $0xff,-0xfb0(%rbp,%rcx,4)
mov    %al,-0xfda(%rbp)
jle    1331 <main+0x1d1>
movslq -0xfb8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
mov    %al,-0xfda(%rbp)
mov    -0xfda(%rbp),%al
mov    %al,-0xfd9(%rbp)
mov    -0xfd9(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
or     -0xfb4(%rbp),%eax
mov    %eax,-0xfb4(%rbp)
mov    -0xfb8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xfb8(%rbp)
jmp    1233 <main+0xd3>
jmp    136d <main+0x20d>
lea    0xcb1(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    139f <main+0x23f>
mov    0x2c41(%rip),%rax
mov    (%rax),%edi
xor    %esi,%esi
lea    0xc91(%rip),%rdx
call   1080 <error@plt>
lea    -0xfb0(%rbp),%rdi
mov    0x2c33(%rip),%rax
mov    (%rax),%edx
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
cmp    $0x0,%rax
je     1526 <main+0x3c6>
lea    -0xfb0(%rbp),%rsi
lea    0xd23(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movl   $0x0,-0xfb4(%rbp)
movl   $0x0,-0xfbc(%rbp)
movslq -0xfbc(%rbp),%rax
cmpl   $0x0,-0xfb0(%rbp,%rax,4)
je     1521 <main+0x3c1>
movslq -0xfbc(%rbp),%rax
movslq -0xfb0(%rbp,%rax,4),%rax
ff
mov    %rax,-0xfe8(%rbp)
movslq -0xfbc(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%eax
mov    %eax,-0xfe0(%rbp)
movslq -0xfbc(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    -0xfe8(%rbp),%rsi
mov    -0xfe0(%rbp),%edx
mov    %rax,%rcx
lea    0xd3f(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movslq -0xfbc(%rbp),%rax
cmpl   $0xff,-0xfb0(%rbp,%rax,4)
jge    14a4 <main+0x344>
movslq -0xfbc(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0xfe9(%rbp)
jne    14f6 <main+0x396>
movslq -0xfbc(%rbp),%rcx
xor    %eax,%eax
cmpl   $0xff,-0xfb0(%rbp,%rcx,4)
mov    %al,-0xfea(%rbp)
jle    14ea <main+0x38a>
movslq -0xfbc(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
mov    %al,-0xfea(%rbp)
mov    -0xfea(%rbp),%al
mov    %al,-0xfe9(%rbp)
mov    -0xfe9(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
or     -0xfb4(%rbp),%eax
mov    %eax,-0xfb4(%rbp)
mov    -0xfbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xfbc(%rbp)
jmp    13ec <main+0x28c>
jmp    1526 <main+0x3c6>
lea    0xb1d(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1558 <main+0x3f8>
mov    0x2a88(%rip),%rax
mov    (%rax),%edi
xor    %esi,%esi
lea    0xafe(%rip),%rdx
call   1080 <error@plt>
lea    -0xfb0(%rbp),%rdi
mov    0x2a7a(%rip),%rax
mov    (%rax),%edx
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
cmp    $0x0,%rax
je     16df <main+0x57f>
lea    -0xfb0(%rbp),%rsi
lea    0xb6a(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movl   $0x0,-0xfb4(%rbp)
movl   $0x0,-0xfc0(%rbp)
movslq -0xfc0(%rbp),%rax
cmpl   $0x0,-0xfb0(%rbp,%rax,4)
je     16da <main+0x57a>
movslq -0xfc0(%rbp),%rax
movslq -0xfb0(%rbp,%rax,4),%rax
ff
mov    %rax,-0xff8(%rbp)
movslq -0xfc0(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%eax
mov    %eax,-0xff0(%rbp)
movslq -0xfc0(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    -0xff8(%rbp),%rsi
mov    -0xff0(%rbp),%edx
mov    %rax,%rcx
lea    0xbee(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movslq -0xfc0(%rbp),%rax
cmpl   $0xff,-0xfb0(%rbp,%rax,4)
jge    165d <main+0x4fd>
movslq -0xfc0(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0xff9(%rbp)
jne    16af <main+0x54f>
movslq -0xfc0(%rbp),%rcx
xor    %eax,%eax
cmpl   $0xff,-0xfb0(%rbp,%rcx,4)
mov    %al,-0xffa(%rbp)
jle    16a3 <main+0x543>
movslq -0xfc0(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
mov    %al,-0xffa(%rbp)
mov    -0xffa(%rbp),%al
mov    %al,-0xff9(%rbp)
mov    -0xff9(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
or     -0xfb4(%rbp),%eax
mov    %eax,-0xfb4(%rbp)
mov    -0xfc0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xfc0(%rbp)
jmp    15a5 <main+0x445>
jmp    16df <main+0x57f>
lea    0x98b(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    1711 <main+0x5b1>
mov    0x28cf(%rip),%rax
mov    (%rax),%edi
xor    %esi,%esi
lea    0x96c(%rip),%rdx
call   1080 <error@plt>
lea    -0xfb0(%rbp),%rdi
mov    0x28c1(%rip),%rax
mov    (%rax),%edx
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
cmp    $0x0,%rax
je     1898 <main+0x738>
lea    -0xfb0(%rbp),%rsi
lea    0x9b1(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movl   $0x0,-0xfb4(%rbp)
movl   $0x0,-0xfc4(%rbp)
movslq -0xfc4(%rbp),%rax
cmpl   $0x0,-0xfb0(%rbp,%rax,4)
je     1893 <main+0x733>
movslq -0xfc4(%rbp),%rax
movslq -0xfb0(%rbp,%rax,4),%rax
ff
mov    %rax,-0x1008(%rbp)
movslq -0xfc4(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%eax
mov    %eax,-0x1000(%rbp)
movslq -0xfc4(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    -0x1008(%rbp),%rsi
mov    -0x1000(%rbp),%edx
mov    %rax,%rcx
lea    0xaa1(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movslq -0xfc4(%rbp),%rax
cmpl   $0xff,-0xfb0(%rbp,%rax,4)
jge    1816 <main+0x6b6>
movslq -0xfc4(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x1009(%rbp)
jne    1868 <main+0x708>
movslq -0xfc4(%rbp),%rcx
xor    %eax,%eax
cmpl   $0xff,-0xfb0(%rbp,%rcx,4)
mov    %al,-0x100a(%rbp)
jle    185c <main+0x6fc>
movslq -0xfc4(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
mov    %al,-0x100a(%rbp)
mov    -0x100a(%rbp),%al
mov    %al,-0x1009(%rbp)
mov    -0x1009(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
or     -0xfb4(%rbp),%eax
mov    %eax,-0xfb4(%rbp)
mov    -0xfc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xfc4(%rbp)
jmp    175e <main+0x5fe>
jmp    1898 <main+0x738>
lea    0x7f9(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,-0x10(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    18ca <main+0x76a>
mov    0x2716(%rip),%rax
mov    (%rax),%edi
xor    %esi,%esi
lea    0x7da(%rip),%rdx
call   1080 <error@plt>
lea    -0xfb0(%rbp),%rdi
mov    0x2708(%rip),%rax
mov    (%rax),%edx
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
cmp    $0x0,%rax
je     1a51 <main+0x8f1>
lea    -0xfb0(%rbp),%rsi
lea    0x7f8(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movl   $0x0,-0xfb4(%rbp)
movl   $0x0,-0xfc8(%rbp)
movslq -0xfc8(%rbp),%rax
cmpl   $0x0,-0xfb0(%rbp,%rax,4)
je     1a4c <main+0x8ec>
movslq -0xfc8(%rbp),%rax
movslq -0xfb0(%rbp,%rax,4),%rax
ff
mov    %rax,-0x1018(%rbp)
movslq -0xfc8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%eax
mov    %eax,-0x1010(%rbp)
movslq -0xfc8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    -0x1018(%rbp),%rsi
mov    -0x1010(%rbp),%edx
mov    %rax,%rcx
lea    0x954(%rip),%rdi
mov    $0x0,%al
call   1060 <wprintf@plt>
movslq -0xfc8(%rbp),%rax
cmpl   $0xff,-0xfb0(%rbp,%rax,4)
jge    19cf <main+0x86f>
movslq -0xfc8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
mov    %rax,%rcx
mov    $0x1,%al
cmp    $0x0,%rcx
mov    %al,-0x1019(%rbp)
jne    1a21 <main+0x8c1>
movslq -0xfc8(%rbp),%rcx
xor    %eax,%eax
cmpl   $0xff,-0xfb0(%rbp,%rcx,4)
mov    %al,-0x101a(%rbp)
jle    1a15 <main+0x8b5>
movslq -0xfc8(%rbp),%rax
mov    -0xfb0(%rbp,%rax,4),%edi
mov    -0x10(%rbp),%rsi
call   1040 <iswctype@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
mov    %al,-0x101a(%rbp)
mov    -0x101a(%rbp),%al
mov    %al,-0x1019(%rbp)
mov    -0x1019(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
or     -0xfb4(%rbp),%eax
mov    %eax,-0xfb4(%rbp)
mov    -0xfc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xfc8(%rbp)
jmp    1917 <main+0x7b7>
jmp    1a51 <main+0x8f1>
mov    -0xfb4(%rbp),%eax
add    $0x1020,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xfa8,%rsp
mov    0x2e50(%rip),%rax
mov    (%rax),%edi
lea    0xe84(%rip),%rsi
call   1070 <setlocale@plt>
mov    0x2e5b(%rip),%rax
mov    (%rax),%edi
xor    %esi,%esi
call   1070 <setlocale@plt>
lea    0xf23(%rip),%rdi
mov    %rax,%rsi
xor    %eax,%eax
call   1060 <wprintf@plt>
lea    0xe52(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,%r14
test   %rax,%rax
jne    11d2 <main+0x72>
mov    0x2e0e(%rip),%rax
mov    (%rax),%edi
lea    0xe3b(%rip),%rdx
xor    %esi,%esi
call   1080 <error@plt>
mov    0x2e07(%rip),%r13
mov    0x0(%r13),%edx
mov    %rsp,%rdi
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
test   %rax,%rax
je     1285 <main+0x125>
lea    0xefa(%rip),%rdi
xor    %r12d,%r12d
mov    %rsp,%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rsp),%eax
test   %eax,%eax
je     128b <main+0x12b>
lea    0xf18(%rip),%r15
xor    %r12d,%r12d
jmp    123f <main+0xdf>
nopl   (%rax)
mov    %r14,%rsi
call   1040 <iswctype@plt>
test   %rax,%rax
sete   %cl
movzbl %cl,%eax
or     %eax,%r12d
mov    0x4(%rbx),%eax
add    $0x4,%rbx
test   %eax,%eax
je     128b <main+0x12b>
movslq %eax,%rbp
mov    %ebp,%edi
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
mov    %ebp,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rbx),%edi
cmp    $0xfe,%edi
jg     1279 <main+0x119>
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    $0x1,%cl
test   %rax,%rax
jne    122e <main+0xce>
mov    (%rbx),%edi
cmp    $0x100,%edi
jge    1220 <main+0xc0>
xor    %ecx,%ecx
jmp    122e <main+0xce>
mov    $0x1,%r12d
lea    0xd93(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,%r14
test   %rax,%rax
jne    12b6 <main+0x156>
mov    0x2d2a(%rip),%rax
mov    (%rax),%edi
lea    0xd7c(%rip),%rdx
xor    %esi,%esi
call   1080 <error@plt>
mov    0x0(%r13),%edx
mov    %rsp,%rdi
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
test   %rax,%rax
je     1365 <main+0x205>
lea    0xe1d(%rip),%rdi
xor    %r12d,%r12d
mov    %rsp,%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rsp),%eax
test   %eax,%eax
je     1365 <main+0x205>
lea    0xea3(%rip),%r15
xor    %r12d,%r12d
jmp    131f <main+0x1bf>
nopw   0x0(%rax,%rax,1)
mov    %r14,%rsi
call   1040 <iswctype@plt>
test   %rax,%rax
sete   %cl
movzbl %cl,%eax
or     %eax,%r12d
mov    0x4(%rbx),%eax
add    $0x4,%rbx
test   %eax,%eax
je     1365 <main+0x205>
movslq %eax,%rbp
mov    %ebp,%edi
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
mov    %ebp,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rbx),%edi
cmp    $0xfe,%edi
jg     1359 <main+0x1f9>
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    $0x1,%cl
test   %rax,%rax
jne    130e <main+0x1ae>
mov    (%rbx),%edi
cmp    $0x100,%edi
jge    1300 <main+0x1a0>
xor    %ecx,%ecx
jmp    130e <main+0x1ae>
lea    0xcde(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,%r14
test   %rax,%rax
jne    1390 <main+0x230>
mov    0x2c50(%rip),%rax
mov    (%rax),%edi
lea    0xcc8(%rip),%rdx
xor    %esi,%esi
call   1080 <error@plt>
mov    0x0(%r13),%edx
mov    %rsp,%rdi
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
test   %rax,%rax
je     1445 <main+0x2e5>
lea    0xd43(%rip),%rdi
xor    %r12d,%r12d
mov    %rsp,%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rsp),%eax
test   %eax,%eax
je     1445 <main+0x2e5>
lea    0xe31(%rip),%r15
xor    %r12d,%r12d
jmp    13ff <main+0x29f>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r14,%rsi
call   1040 <iswctype@plt>
test   %rax,%rax
sete   %cl
movzbl %cl,%eax
or     %eax,%r12d
mov    0x4(%rbx),%eax
add    $0x4,%rbx
test   %eax,%eax
je     1445 <main+0x2e5>
movslq %eax,%rbp
mov    %ebp,%edi
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
mov    %ebp,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rbx),%edi
cmp    $0xfe,%edi
jg     1439 <main+0x2d9>
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    $0x1,%cl
test   %rax,%rax
jne    13ee <main+0x28e>
mov    (%rbx),%edi
cmp    $0x100,%edi
jge    13e0 <main+0x280>
xor    %ecx,%ecx
jmp    13ee <main+0x28e>
lea    0xc25(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,%r14
test   %rax,%rax
jne    1470 <main+0x310>
mov    0x2b70(%rip),%rax
mov    (%rax),%edi
lea    0xc0f(%rip),%rdx
xor    %esi,%esi
call   1080 <error@plt>
mov    0x0(%r13),%edx
mov    %rsp,%rdi
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
test   %rax,%rax
je     1525 <main+0x3c5>
lea    0xc63(%rip),%rdi
xor    %r12d,%r12d
mov    %rsp,%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rsp),%eax
test   %eax,%eax
je     1525 <main+0x3c5>
lea    0xdbd(%rip),%r15
xor    %r12d,%r12d
jmp    14df <main+0x37f>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r14,%rsi
call   1040 <iswctype@plt>
test   %rax,%rax
sete   %cl
movzbl %cl,%eax
or     %eax,%r12d
mov    0x4(%rbx),%eax
add    $0x4,%rbx
test   %eax,%eax
je     1525 <main+0x3c5>
movslq %eax,%rbp
mov    %ebp,%edi
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
mov    %ebp,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rbx),%edi
cmp    $0xfe,%edi
jg     1519 <main+0x3b9>
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    $0x1,%cl
test   %rax,%rax
jne    14ce <main+0x36e>
mov    (%rbx),%edi
cmp    $0x100,%edi
jge    14c0 <main+0x360>
xor    %ecx,%ecx
jmp    14ce <main+0x36e>
lea    0xb6c(%rip),%rdi
call   1050 <wctype@plt>
mov    %rax,%r14
test   %rax,%rax
jne    1550 <main+0x3f0>
mov    0x2a90(%rip),%rax
mov    (%rax),%edi
lea    0xb56(%rip),%rdx
xor    %esi,%esi
call   1080 <error@plt>
mov    0x0(%r13),%edx
mov    %rsp,%rdi
mov    $0x3e8,%esi
call   1030 <fgetws@plt>
test   %rax,%rax
je     1605 <main+0x4a5>
lea    0xb83(%rip),%rdi
xor    %r12d,%r12d
mov    %rsp,%rbx
mov    %rbx,%rsi
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rsp),%eax
test   %eax,%eax
je     1605 <main+0x4a5>
lea    0xd49(%rip),%r15
xor    %r12d,%r12d
jmp    15bf <main+0x45f>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r14,%rsi
call   1040 <iswctype@plt>
test   %rax,%rax
sete   %cl
movzbl %cl,%eax
or     %eax,%r12d
mov    0x4(%rbx),%eax
add    $0x4,%rbx
test   %eax,%eax
je     1605 <main+0x4a5>
movslq %eax,%rbp
mov    %ebp,%edi
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
mov    %ebp,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1060 <wprintf@plt>
mov    (%rbx),%edi
cmp    $0xfe,%edi
jg     15f9 <main+0x499>
mov    %r14,%rsi
call   1040 <iswctype@plt>
mov    $0x1,%cl
test   %rax,%rax
jne    15ae <main+0x44e>
mov    (%rbx),%edi
cmp    $0x100,%edi
jge    15a0 <main+0x440>
xor    %ecx,%ecx
jmp    15ae <main+0x44e>
mov    %r12d,%eax
add    $0xfa8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@LC_ALL = global i32 0
@.str = [1 x i8] zeroinitializer
@.str.1 = [13 x i32] [i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 32, i32 61, i32 32, i32 37, i32 115, i32 10, i32 0]
@LC_CTYPE = global i32 0
@.str.2 = [6 x i8] c"jhira\00"
@EXIT_FAILURE = global i32 0
@.str.3 = [31 x i8] c"jhira: no such character class\00"
@stdin = global i32 0
@.str.4 = [15 x i32] [i32 98, i32 117, i32 102, i32 91, i32 93, i32 32, i32 61, i32 32, i32 34, i32 37, i32 108, i32 115, i32 34, i32 10, i32 0]
@.str.5 = [26 x i32] [i32 106, i32 104, i32 105, i32 114, i32 97, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.6 = [6 x i8] c"jkata\00"
@.str.7 = [31 x i8] c"jkata: no such character class\00"
@.str.8 = [26 x i32] [i32 106, i32 107, i32 97, i32 116, i32 97, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.9 = [7 x i8] c"jdigit\00"
@.str.10 = [32 x i8] c"jdigit: no such character class\00"
@.str.11 = [27 x i32] [i32 106, i32 100, i32 105, i32 103, i32 105, i32 116, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.12 = [7 x i8] c"jspace\00"
@.str.13 = [32 x i8] c"jspace: no such character class\00"
@.str.14 = [27 x i32] [i32 106, i32 115, i32 112, i32 97, i32 99, i32 101, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.15 = [7 x i8] c"jkanji\00"
@.str.16 = [32 x i8] c"jkanji: no such character class\00"
@.str.17 = [27 x i32] [i32 106, i32 107, i32 97, i32 110, i32 106, i32 105, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
define i32 @main() {
%1 = alloca i32
%2 = alloca i64
%3 = alloca [1000 x i32]
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i32 0, i32* %1
store i32 1, i32* %4
%10 = load i32, i32* @LC_ALL
%11 = call i8* @setlocale(i32 %10, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0))
%12 = load i32, i32* @LC_CTYPE
%13 = call i8* @setlocale(i32 %12, i8* null)
%14 = call i32 (i8*, ...) @wprintf(i8* bitcast ([13 x i32]* @.str.1 to i8*), i8* %13)
%15 = call i64 @wctype(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
store i64 %15, i64* %2
%16 = load i64, i64* %2
%17 = icmp eq i64 %16, 0
br i1 %17, label %18, label %21
18: ; preds = %0
%19 = load i32, i32* @EXIT_FAILURE
%20 = call i32 @error(i32 %19, i32 0, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.3, i64 0, i64 0))
br label %21
21: ; preds = %18, %0
%22 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%23 = load i32, i32* @stdin
%24 = call i32* @fgetws(i32* %22, i32 1000, i32 %23)
%25 = icmp ne i32* %24, null
br i1 %25, label %26, label %91
26: ; preds = %21
%27 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%28 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %27)
store i32 0, i32* %4
store i32 0, i32* %5
br label %29
29: ; preds = %87, %26
%30 = load i32, i32* %5
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %31
%33 = load i32, i32* %32
%34 = icmp ne i32 %33, 0
br i1 %34, label %35, label %90
35: ; preds = %29
%36 = load i32, i32* %5
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %37
%39 = load i32, i32* %38
%40 = sext i32 %39 to i64
%41 = load i32, i32* %5
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %42
%44 = load i32, i32* %43
%45 = load i32, i32* %5
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %46
%48 = load i32, i32* %47
%49 = load i64, i64* %2
%50 = call i64 @iswctype(i32 %48, i64 %49)
%51 = call i32 (i8*, ...) @wprintf(i8* bitcast ([26 x i32]* @.str.5 to i8*), i64 %40, i32 %44, i64 %50)
%52 = load i32, i32* %5
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %53
%55 = load i32, i32* %54
%56 = icmp slt i32 %55, 255
br i1 %56, label %57, label %65
57: ; preds = %35
%58 = load i32, i32* %5
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %59
%61 = load i32, i32* %60
%62 = load i64, i64* %2
%63 = call i64 @iswctype(i32 %61, i64 %62)
%64 = icmp ne i64 %63, 0
br i1 %64, label %82, label %65
65: ; preds = %57, %35
%66 = load i32, i32* %5
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %67
%69 = load i32, i32* %68
%70 = icmp sgt i32 %69, 255
br i1 %70, label %71, label %80
71: ; preds = %65
%72 = load i32, i32* %5
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %73
%75 = load i32, i32* %74
%76 = load i64, i64* %2
%77 = call i64 @iswctype(i32 %75, i64 %76)
%78 = icmp ne i64 %77, 0
%79 = xor i1 %78, true
br label %80
80: ; preds = %71, %65
%81 = phi i1 [ false, %65 ], [ %79, %71 ]
br label %82
82: ; preds = %80, %57
%83 = phi i1 [ true, %57 ], [ %81, %80 ]
%84 = zext i1 %83 to i32
%85 = load i32, i32* %4
%86 = or i32 %85, %84
store i32 %86, i32* %4
br label %87
87: ; preds = %82
%88 = load i32, i32* %5
%89 = add nsw i32 %88, 1
store i32 %89, i32* %5
br label %29
90: ; preds = %29
br label %91
91: ; preds = %90, %21
%92 = call i64 @wctype(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
store i64 %92, i64* %2
%93 = load i64, i64* %2
%94 = icmp eq i64 %93, 0
br i1 %94, label %95, label %98
95: ; preds = %91
%96 = load i32, i32* @EXIT_FAILURE
%97 = call i32 @error(i32 %96, i32 0, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.7, i64 0, i64 0))
br label %98
98: ; preds = %95, %91
%99 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%100 = load i32, i32* @stdin
%101 = call i32* @fgetws(i32* %99, i32 1000, i32 %100)
%102 = icmp ne i32* %101, null
br i1 %102, label %103, label %168
103: ; preds = %98
%104 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%105 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %104)
store i32 0, i32* %4
store i32 0, i32* %6
br label %106
106: ; preds = %164, %103
%107 = load i32, i32* %6
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %108
%110 = load i32, i32* %109
%111 = icmp ne i32 %110, 0
br i1 %111, label %112, label %167
112: ; preds = %106
%113 = load i32, i32* %6
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %114
%116 = load i32, i32* %115
%117 = sext i32 %116 to i64
%118 = load i32, i32* %6
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %119
%121 = load i32, i32* %120
%122 = load i32, i32* %6
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %123
%125 = load i32, i32* %124
%126 = load i64, i64* %2
%127 = call i64 @iswctype(i32 %125, i64 %126)
%128 = call i32 (i8*, ...) @wprintf(i8* bitcast ([26 x i32]* @.str.8 to i8*), i64 %117, i32 %121, i64 %127)
%129 = load i32, i32* %6
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %130
%132 = load i32, i32* %131
%133 = icmp slt i32 %132, 255
br i1 %133, label %134, label %142
134: ; preds = %112
%135 = load i32, i32* %6
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %136
%138 = load i32, i32* %137
%139 = load i64, i64* %2
%140 = call i64 @iswctype(i32 %138, i64 %139)
%141 = icmp ne i64 %140, 0
br i1 %141, label %159, label %142
142: ; preds = %134, %112
%143 = load i32, i32* %6
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %144
%146 = load i32, i32* %145
%147 = icmp sgt i32 %146, 255
br i1 %147, label %148, label %157
148: ; preds = %142
%149 = load i32, i32* %6
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %150
%152 = load i32, i32* %151
%153 = load i64, i64* %2
%154 = call i64 @iswctype(i32 %152, i64 %153)
%155 = icmp ne i64 %154, 0
%156 = xor i1 %155, true
br label %157
157: ; preds = %148, %142
%158 = phi i1 [ false, %142 ], [ %156, %148 ]
br label %159
159: ; preds = %157, %134
%160 = phi i1 [ true, %134 ], [ %158, %157 ]
%161 = zext i1 %160 to i32
%162 = load i32, i32* %4
%163 = or i32 %162, %161
store i32 %163, i32* %4
br label %164
164: ; preds = %159
%165 = load i32, i32* %6
%166 = add nsw i32 %165, 1
store i32 %166, i32* %6
br label %106
167: ; preds = %106
br label %168
168: ; preds = %167, %98
%169 = call i64 @wctype(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0))
store i64 %169, i64* %2
%170 = load i64, i64* %2
%171 = icmp eq i64 %170, 0
br i1 %171, label %172, label %175
172: ; preds = %168
%173 = load i32, i32* @EXIT_FAILURE
%174 = call i32 @error(i32 %173, i32 0, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.10, i64 0, i64 0))
br label %175
175: ; preds = %172, %168
%176 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%177 = load i32, i32* @stdin
%178 = call i32* @fgetws(i32* %176, i32 1000, i32 %177)
%179 = icmp ne i32* %178, null
br i1 %179, label %180, label %245
180: ; preds = %175
%181 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%182 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %181)
store i32 0, i32* %4
store i32 0, i32* %7
br label %183
183: ; preds = %241, %180
%184 = load i32, i32* %7
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %185
%187 = load i32, i32* %186
%188 = icmp ne i32 %187, 0
br i1 %188, label %189, label %244
189: ; preds = %183
%190 = load i32, i32* %7
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %191
%193 = load i32, i32* %192
%194 = sext i32 %193 to i64
%195 = load i32, i32* %7
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %196
%198 = load i32, i32* %197
%199 = load i32, i32* %7
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %200
%202 = load i32, i32* %201
%203 = load i64, i64* %2
%204 = call i64 @iswctype(i32 %202, i64 %203)
%205 = call i32 (i8*, ...) @wprintf(i8* bitcast ([27 x i32]* @.str.11 to i8*), i64 %194, i32 %198, i64 %204)
%206 = load i32, i32* %7
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %207
%209 = load i32, i32* %208
%210 = icmp slt i32 %209, 255
br i1 %210, label %211, label %219
211: ; preds = %189
%212 = load i32, i32* %7
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %213
%215 = load i32, i32* %214
%216 = load i64, i64* %2
%217 = call i64 @iswctype(i32 %215, i64 %216)
%218 = icmp ne i64 %217, 0
br i1 %218, label %236, label %219
219: ; preds = %211, %189
%220 = load i32, i32* %7
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %221
%223 = load i32, i32* %222
%224 = icmp sgt i32 %223, 255
br i1 %224, label %225, label %234
225: ; preds = %219
%226 = load i32, i32* %7
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %227
%229 = load i32, i32* %228
%230 = load i64, i64* %2
%231 = call i64 @iswctype(i32 %229, i64 %230)
%232 = icmp ne i64 %231, 0
%233 = xor i1 %232, true
br label %234
234: ; preds = %225, %219
%235 = phi i1 [ false, %219 ], [ %233, %225 ]
br label %236
236: ; preds = %234, %211
%237 = phi i1 [ true, %211 ], [ %235, %234 ]
%238 = zext i1 %237 to i32
%239 = load i32, i32* %4
%240 = or i32 %239, %238
store i32 %240, i32* %4
br label %241
241: ; preds = %236
%242 = load i32, i32* %7
%243 = add nsw i32 %242, 1
store i32 %243, i32* %7
br label %183
244: ; preds = %183
br label %245
245: ; preds = %244, %175
%246 = call i64 @wctype(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
store i64 %246, i64* %2
%247 = load i64, i64* %2
%248 = icmp eq i64 %247, 0
br i1 %248, label %249, label %252
249: ; preds = %245
%250 = load i32, i32* @EXIT_FAILURE
%251 = call i32 @error(i32 %250, i32 0, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.13, i64 0, i64 0))
br label %252
252: ; preds = %249, %245
%253 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%254 = load i32, i32* @stdin
%255 = call i32* @fgetws(i32* %253, i32 1000, i32 %254)
%256 = icmp ne i32* %255, null
br i1 %256, label %257, label %322
257: ; preds = %252
%258 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%259 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %258)
store i32 0, i32* %4
store i32 0, i32* %8
br label %260
260: ; preds = %318, %257
%261 = load i32, i32* %8
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %262
%264 = load i32, i32* %263
%265 = icmp ne i32 %264, 0
br i1 %265, label %266, label %321
266: ; preds = %260
%267 = load i32, i32* %8
%268 = sext i32 %267 to i64
%269 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %268
%270 = load i32, i32* %269
%271 = sext i32 %270 to i64
%272 = load i32, i32* %8
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %273
%275 = load i32, i32* %274
%276 = load i32, i32* %8
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %277
%279 = load i32, i32* %278
%280 = load i64, i64* %2
%281 = call i64 @iswctype(i32 %279, i64 %280)
%282 = call i32 (i8*, ...) @wprintf(i8* bitcast ([27 x i32]* @.str.14 to i8*), i64 %271, i32 %275, i64 %281)
%283 = load i32, i32* %8
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %284
%286 = load i32, i32* %285
%287 = icmp slt i32 %286, 255
br i1 %287, label %288, label %296
288: ; preds = %266
%289 = load i32, i32* %8
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %290
%292 = load i32, i32* %291
%293 = load i64, i64* %2
%294 = call i64 @iswctype(i32 %292, i64 %293)
%295 = icmp ne i64 %294, 0
br i1 %295, label %313, label %296
296: ; preds = %288, %266
%297 = load i32, i32* %8
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %298
%300 = load i32, i32* %299
%301 = icmp sgt i32 %300, 255
br i1 %301, label %302, label %311
302: ; preds = %296
%303 = load i32, i32* %8
%304 = sext i32 %303 to i64
%305 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %304
%306 = load i32, i32* %305
%307 = load i64, i64* %2
%308 = call i64 @iswctype(i32 %306, i64 %307)
%309 = icmp ne i64 %308, 0
%310 = xor i1 %309, true
br label %311
311: ; preds = %302, %296
%312 = phi i1 [ false, %296 ], [ %310, %302 ]
br label %313
313: ; preds = %311, %288
%314 = phi i1 [ true, %288 ], [ %312, %311 ]
%315 = zext i1 %314 to i32
%316 = load i32, i32* %4
%317 = or i32 %316, %315
store i32 %317, i32* %4
br label %318
318: ; preds = %313
%319 = load i32, i32* %8
%320 = add nsw i32 %319, 1
store i32 %320, i32* %8
br label %260
321: ; preds = %260
br label %322
322: ; preds = %321, %252
%323 = call i64 @wctype(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
store i64 %323, i64* %2
%324 = load i64, i64* %2
%325 = icmp eq i64 %324, 0
br i1 %325, label %326, label %329
326: ; preds = %322
%327 = load i32, i32* @EXIT_FAILURE
%328 = call i32 @error(i32 %327, i32 0, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.16, i64 0, i64 0))
br label %329
329: ; preds = %326, %322
%330 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%331 = load i32, i32* @stdin
%332 = call i32* @fgetws(i32* %330, i32 1000, i32 %331)
%333 = icmp ne i32* %332, null
br i1 %333, label %334, label %399
334: ; preds = %329
%335 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 0
%336 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %335)
store i32 0, i32* %4
store i32 0, i32* %9
br label %337
337: ; preds = %395, %334
%338 = load i32, i32* %9
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %339
%341 = load i32, i32* %340
%342 = icmp ne i32 %341, 0
br i1 %342, label %343, label %398
343: ; preds = %337
%344 = load i32, i32* %9
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %345
%347 = load i32, i32* %346
%348 = sext i32 %347 to i64
%349 = load i32, i32* %9
%350 = sext i32 %349 to i64
%351 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %350
%352 = load i32, i32* %351
%353 = load i32, i32* %9
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %354
%356 = load i32, i32* %355
%357 = load i64, i64* %2
%358 = call i64 @iswctype(i32 %356, i64 %357)
%359 = call i32 (i8*, ...) @wprintf(i8* bitcast ([27 x i32]* @.str.17 to i8*), i64 %348, i32 %352, i64 %358)
%360 = load i32, i32* %9
%361 = sext i32 %360 to i64
%362 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %361
%363 = load i32, i32* %362
%364 = icmp slt i32 %363, 255
br i1 %364, label %365, label %373
365: ; preds = %343
%366 = load i32, i32* %9
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %367
%369 = load i32, i32* %368
%370 = load i64, i64* %2
%371 = call i64 @iswctype(i32 %369, i64 %370)
%372 = icmp ne i64 %371, 0
br i1 %372, label %390, label %373
373: ; preds = %365, %343
%374 = load i32, i32* %9
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %375
%377 = load i32, i32* %376
%378 = icmp sgt i32 %377, 255
br i1 %378, label %379, label %388
379: ; preds = %373
%380 = load i32, i32* %9
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds [1000 x i32], [1000 x i32]* %3, i64 0, i64 %381
%383 = load i32, i32* %382
%384 = load i64, i64* %2
%385 = call i64 @iswctype(i32 %383, i64 %384)
%386 = icmp ne i64 %385, 0
%387 = xor i1 %386, true
br label %388
388: ; preds = %379, %373
%389 = phi i1 [ false, %373 ], [ %387, %379 ]
br label %390
390: ; preds = %388, %365
%391 = phi i1 [ true, %365 ], [ %389, %388 ]
%392 = zext i1 %391 to i32
%393 = load i32, i32* %4
%394 = or i32 %393, %392
store i32 %394, i32* %4
br label %395
395: ; preds = %390
%396 = load i32, i32* %9
%397 = add nsw i32 %396, 1
store i32 %397, i32* %9
br label %337
398: ; preds = %337
br label %399
399: ; preds = %398, %329
%400 = load i32, i32* %4
ret i32 %400
}

LLVM IR (-O2):
@LC_ALL = global i32 0
@.str = [1 x i8] zeroinitializer
@.str.1 = [13 x i32] [i32 108, i32 111, i32 99, i32 97, i32 108, i32 101, i32 32, i32 61, i32 32, i32 37, i32 115, i32 10, i32 0]
@LC_CTYPE = global i32 0
@.str.2 = [6 x i8] c"jhira\00"
@EXIT_FAILURE = global i32 0
@.str.3 = [31 x i8] c"jhira: no such character class\00"
@stdin = global i32 0
@.str.4 = [15 x i32] [i32 98, i32 117, i32 102, i32 91, i32 93, i32 32, i32 61, i32 32, i32 34, i32 37, i32 108, i32 115, i32 34, i32 10, i32 0]
@.str.5 = [26 x i32] [i32 106, i32 104, i32 105, i32 114, i32 97, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.6 = [6 x i8] c"jkata\00"
@.str.7 = [31 x i8] c"jkata: no such character class\00"
@.str.8 = [26 x i32] [i32 106, i32 107, i32 97, i32 116, i32 97, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.9 = [7 x i8] c"jdigit\00"
@.str.10 = [32 x i8] c"jdigit: no such character class\00"
@.str.11 = [27 x i32] [i32 106, i32 100, i32 105, i32 103, i32 105, i32 116, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.12 = [7 x i8] c"jspace\00"
@.str.13 = [32 x i8] c"jspace: no such character class\00"
@.str.14 = [27 x i32] [i32 106, i32 115, i32 112, i32 97, i32 99, i32 101, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
@.str.15 = [7 x i8] c"jkanji\00"
@.str.16 = [32 x i8] c"jkanji: no such character class\00"
@.str.17 = [27 x i32] [i32 106, i32 107, i32 97, i32 110, i32 106, i32 105, i32 40, i32 85, i32 37, i32 48, i32 52, i32 108, i32 120, i32 32, i32 61, i32 32, i32 37, i32 108, i32 99, i32 41, i32 32, i32 61, i32 32, i32 37, i32 100, i32 10, i32 0]
define i32 @main() {
%1 = alloca [1000 x i32]
%2 = bitcast [1000 x i32]* %1 to i8*
%3 = load i32, i32* @LC_ALL
%4 = tail call i8* @setlocale(i32 %3, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0))
%5 = load i32, i32* @LC_CTYPE
%6 = tail call i8* @setlocale(i32 %5, i8* null)
%7 = tail call i32 (i8*, ...) @wprintf(i8* bitcast ([13 x i32]* @.str.1 to i8*), i8* %6)
%8 = tail call i64 @wctype(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%9 = icmp eq i64 %8, 0
br i1 %9, label %10, label %13
10: ; preds = %0
%11 = load i32, i32* @EXIT_FAILURE
%12 = tail call i32 @error(i32 %11, i32 0, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.3, i64 0, i64 0))
br label %13
13: ; preds = %10, %0
%14 = getelementptr inbounds [1000 x i32], [1000 x i32]* %1, i64 0, i64 0
%15 = load i32, i32* @stdin
%16 = call i32* @fgetws(i32* %14, i32 1000, i32 %15)
%17 = icmp eq i32* %16, null
br i1 %17, label %51, label %18
18: ; preds = %13
%19 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %14)
%20 = load i32, i32* %14
%21 = icmp eq i32 %20, 0
br i1 %21, label %51, label %22
22: ; preds = %18, %43
%23 = phi i64 [ %47, %43 ], [ 0, %18 ]
%24 = phi i32 [ %49, %43 ], [ %20, %18 ]
%25 = phi i32* [ %48, %43 ], [ %14, %18 ]
%26 = phi i32 [ %46, %43 ], [ 0, %18 ]
%27 = sext i32 %24 to i64
%28 = call i64 @iswctype(i32 %24, i64 %8)
%29 = call i32 (i8*, ...) @wprintf(i8* bitcast ([26 x i32]* @.str.5 to i8*), i64 %27, i32 %24, i64 %28)
%30 = load i32, i32* %25
%31 = icmp slt i32 %30, 255
br i1 %31, label %32, label %37
32: ; preds = %22
%33 = call i64 @iswctype(i32 %30, i64 %8)
%34 = icmp eq i64 %33, 0
br i1 %34, label %35, label %43
35: ; preds = %32
%36 = load i32, i32* %25
br label %37
37: ; preds = %35, %22
%38 = phi i32 [ %36, %35 ], [ %30, %22 ]
%39 = icmp sgt i32 %38, 255
br i1 %39, label %40, label %43
40: ; preds = %37
%41 = call i64 @iswctype(i32 %38, i64 %8)
%42 = icmp eq i64 %41, 0
br label %43
43: ; preds = %37, %40, %32
%44 = phi i1 [ true, %32 ], [ false, %37 ], [ %42, %40 ]
%45 = zext i1 %44 to i32
%46 = or i32 %26, %45
%47 = add nuw i64 %23, 1
%48 = getelementptr inbounds [1000 x i32], [1000 x i32]* %1, i64 0, i64 %47
%49 = load i32, i32* %48
%50 = icmp eq i32 %49, 0
br i1 %50, label %51, label %22
51: ; preds = %43, %18, %13
%52 = phi i32 [ 1, %13 ], [ 0, %18 ], [ %46, %43 ]
%53 = call i64 @wctype(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%54 = icmp eq i64 %53, 0
br i1 %54, label %55, label %58
55: ; preds = %51
%56 = load i32, i32* @EXIT_FAILURE
%57 = call i32 @error(i32 %56, i32 0, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.7, i64 0, i64 0))
br label %58
58: ; preds = %55, %51
%59 = load i32, i32* @stdin
%60 = call i32* @fgetws(i32* %14, i32 1000, i32 %59)
%61 = icmp eq i32* %60, null
br i1 %61, label %95, label %62
62: ; preds = %58
%63 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %14)
%64 = load i32, i32* %14
%65 = icmp eq i32 %64, 0
br i1 %65, label %95, label %66
66: ; preds = %62, %87
%67 = phi i64 [ %91, %87 ], [ 0, %62 ]
%68 = phi i32 [ %93, %87 ], [ %64, %62 ]
%69 = phi i32* [ %92, %87 ], [ %14, %62 ]
%70 = phi i32 [ %90, %87 ], [ 0, %62 ]
%71 = sext i32 %68 to i64
%72 = call i64 @iswctype(i32 %68, i64 %53)
%73 = call i32 (i8*, ...) @wprintf(i8* bitcast ([26 x i32]* @.str.8 to i8*), i64 %71, i32 %68, i64 %72)
%74 = load i32, i32* %69
%75 = icmp slt i32 %74, 255
br i1 %75, label %76, label %81
76: ; preds = %66
%77 = call i64 @iswctype(i32 %74, i64 %53)
%78 = icmp eq i64 %77, 0
br i1 %78, label %79, label %87
79: ; preds = %76
%80 = load i32, i32* %69
br label %81
81: ; preds = %79, %66
%82 = phi i32 [ %80, %79 ], [ %74, %66 ]
%83 = icmp sgt i32 %82, 255
br i1 %83, label %84, label %87
84: ; preds = %81
%85 = call i64 @iswctype(i32 %82, i64 %53)
%86 = icmp eq i64 %85, 0
br label %87
87: ; preds = %81, %84, %76
%88 = phi i1 [ true, %76 ], [ false, %81 ], [ %86, %84 ]
%89 = zext i1 %88 to i32
%90 = or i32 %70, %89
%91 = add nuw i64 %67, 1
%92 = getelementptr inbounds [1000 x i32], [1000 x i32]* %1, i64 0, i64 %91
%93 = load i32, i32* %92
%94 = icmp eq i32 %93, 0
br i1 %94, label %95, label %66
95: ; preds = %87, %62, %58
%96 = phi i32 [ %52, %58 ], [ 0, %62 ], [ %90, %87 ]
%97 = call i64 @wctype(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.9, i64 0, i64 0))
%98 = icmp eq i64 %97, 0
br i1 %98, label %99, label %102
99: ; preds = %95
%100 = load i32, i32* @EXIT_FAILURE
%101 = call i32 @error(i32 %100, i32 0, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.10, i64 0, i64 0))
br label %102
102: ; preds = %99, %95
%103 = load i32, i32* @stdin
%104 = call i32* @fgetws(i32* %14, i32 1000, i32 %103)
%105 = icmp eq i32* %104, null
br i1 %105, label %139, label %106
106: ; preds = %102
%107 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %14)
%108 = load i32, i32* %14
%109 = icmp eq i32 %108, 0
br i1 %109, label %139, label %110
110: ; preds = %106, %131
%111 = phi i64 [ %135, %131 ], [ 0, %106 ]
%112 = phi i32 [ %137, %131 ], [ %108, %106 ]
%113 = phi i32* [ %136, %131 ], [ %14, %106 ]
%114 = phi i32 [ %134, %131 ], [ 0, %106 ]
%115 = sext i32 %112 to i64
%116 = call i64 @iswctype(i32 %112, i64 %97)
%117 = call i32 (i8*, ...) @wprintf(i8* bitcast ([27 x i32]* @.str.11 to i8*), i64 %115, i32 %112, i64 %116)
%118 = load i32, i32* %113
%119 = icmp slt i32 %118, 255
br i1 %119, label %120, label %125
120: ; preds = %110
%121 = call i64 @iswctype(i32 %118, i64 %97)
%122 = icmp eq i64 %121, 0
br i1 %122, label %123, label %131
123: ; preds = %120
%124 = load i32, i32* %113
br label %125
125: ; preds = %123, %110
%126 = phi i32 [ %124, %123 ], [ %118, %110 ]
%127 = icmp sgt i32 %126, 255
br i1 %127, label %128, label %131
128: ; preds = %125
%129 = call i64 @iswctype(i32 %126, i64 %97)
%130 = icmp eq i64 %129, 0
br label %131
131: ; preds = %125, %128, %120
%132 = phi i1 [ true, %120 ], [ false, %125 ], [ %130, %128 ]
%133 = zext i1 %132 to i32
%134 = or i32 %114, %133
%135 = add nuw i64 %111, 1
%136 = getelementptr inbounds [1000 x i32], [1000 x i32]* %1, i64 0, i64 %135
%137 = load i32, i32* %136
%138 = icmp eq i32 %137, 0
br i1 %138, label %139, label %110
139: ; preds = %131, %106, %102
%140 = phi i32 [ %96, %102 ], [ 0, %106 ], [ %134, %131 ]
%141 = call i64 @wctype(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.12, i64 0, i64 0))
%142 = icmp eq i64 %141, 0
br i1 %142, label %143, label %146
143: ; preds = %139
%144 = load i32, i32* @EXIT_FAILURE
%145 = call i32 @error(i32 %144, i32 0, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.13, i64 0, i64 0))
br label %146
146: ; preds = %143, %139
%147 = load i32, i32* @stdin
%148 = call i32* @fgetws(i32* %14, i32 1000, i32 %147)
%149 = icmp eq i32* %148, null
br i1 %149, label %183, label %150
150: ; preds = %146
%151 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %14)
%152 = load i32, i32* %14
%153 = icmp eq i32 %152, 0
br i1 %153, label %183, label %154
154: ; preds = %150, %175
%155 = phi i64 [ %179, %175 ], [ 0, %150 ]
%156 = phi i32 [ %181, %175 ], [ %152, %150 ]
%157 = phi i32* [ %180, %175 ], [ %14, %150 ]
%158 = phi i32 [ %178, %175 ], [ 0, %150 ]
%159 = sext i32 %156 to i64
%160 = call i64 @iswctype(i32 %156, i64 %141)
%161 = call i32 (i8*, ...) @wprintf(i8* bitcast ([27 x i32]* @.str.14 to i8*), i64 %159, i32 %156, i64 %160)
%162 = load i32, i32* %157
%163 = icmp slt i32 %162, 255
br i1 %163, label %164, label %169
164: ; preds = %154
%165 = call i64 @iswctype(i32 %162, i64 %141)
%166 = icmp eq i64 %165, 0
br i1 %166, label %167, label %175
167: ; preds = %164
%168 = load i32, i32* %157
br label %169
169: ; preds = %167, %154
%170 = phi i32 [ %168, %167 ], [ %162, %154 ]
%171 = icmp sgt i32 %170, 255
br i1 %171, label %172, label %175
172: ; preds = %169
%173 = call i64 @iswctype(i32 %170, i64 %141)
%174 = icmp eq i64 %173, 0
br label %175
175: ; preds = %169, %172, %164
%176 = phi i1 [ true, %164 ], [ false, %169 ], [ %174, %172 ]
%177 = zext i1 %176 to i32
%178 = or i32 %158, %177
%179 = add nuw i64 %155, 1
%180 = getelementptr inbounds [1000 x i32], [1000 x i32]* %1, i64 0, i64 %179
%181 = load i32, i32* %180
%182 = icmp eq i32 %181, 0
br i1 %182, label %183, label %154
183: ; preds = %175, %150, %146
%184 = phi i32 [ %140, %146 ], [ 0, %150 ], [ %178, %175 ]
%185 = call i64 @wctype(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
%186 = icmp eq i64 %185, 0
br i1 %186, label %187, label %190
187: ; preds = %183
%188 = load i32, i32* @EXIT_FAILURE
%189 = call i32 @error(i32 %188, i32 0, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.16, i64 0, i64 0))
br label %190
190: ; preds = %187, %183
%191 = load i32, i32* @stdin
%192 = call i32* @fgetws(i32* %14, i32 1000, i32 %191)
%193 = icmp eq i32* %192, null
br i1 %193, label %227, label %194
194: ; preds = %190
%195 = call i32 (i8*, ...) @wprintf(i8* bitcast ([15 x i32]* @.str.4 to i8*), i32* %14)
%196 = load i32, i32* %14
%197 = icmp eq i32 %196, 0
br i1 %197, label %227, label %198
198: ; preds = %194, %219
%199 = phi i64 [ %223, %219 ], [ 0, %194 ]
%200 = phi i32 [ %225, %219 ], [ %196, %194 ]
%201 = phi i32* [ %224, %219 ], [ %14, %194 ]
%202 = phi i32 [ %222, %219 ], [ 0, %194 ]
%203 = sext i32 %200 to i64
%204 = call i64 @iswctype(i32 %200, i64 %185)
%205 = call i32 (i8*, ...) @wprintf(i8* bitcast ([27 x i32]* @.str.17 to i8*), i64 %203, i32 %200, i64 %204)
%206 = load i32, i32* %201
%207 = icmp slt i32 %206, 255
br i1 %207, label %208, label %213
208: ; preds = %198
%209 = call i64 @iswctype(i32 %206, i64 %185)
%210 = icmp eq i64 %209, 0
br i1 %210, label %211, label %219
211: ; preds = %208
%212 = load i32, i32* %201
br label %213
213: ; preds = %211, %198
%214 = phi i32 [ %212, %211 ], [ %206, %198 ]
%215 = icmp sgt i32 %214, 255
br i1 %215, label %216, label %219
216: ; preds = %213
%217 = call i64 @iswctype(i32 %214, i64 %185)
%218 = icmp eq i64 %217, 0
br label %219
219: ; preds = %213, %216, %208
%220 = phi i1 [ true, %208 ], [ false, %213 ], [ %218, %216 ]
%221 = zext i1 %220 to i32
%222 = or i32 %202, %221
%223 = add nuw i64 %199, 1
%224 = getelementptr inbounds [1000 x i32], [1000 x i32]* %1, i64 0, i64 %223
%225 = load i32, i32* %224
%226 = icmp eq i32 %225, 0
br i1 %226, label %227, label %198
227: ; preds = %219, %194, %190
%228 = phi i32 [ %184, %190 ], [ 0, %194 ], [ %222, %219 ]
ret i32 %228
}