#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 int /*<<< orphan*/ va_list;
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int EOF;
int __io_char(int /*<<< orphan*/ *, char *, int, int /*<<< orphan*/,
              int /*<<< orphan*/, int /*<<< orphan*/, int /*<<< orphan*/,
              size_t *);
scalar_t__ isspace(int);
int /*<<< orphan*/ scanChar(int /*<<< orphan*/ *, char *, int,
                            int /*<<< orphan*/ *, size_t *, size_t *, char **,
                            int, int, int);
int /*<<< orphan*/ scanInt(int /*<<< orphan*/ *, char *, int,
                           int /*<<< orphan*/ *, size_t *, size_t *, char **,
                           int, int, int);
int /*<<< orphan*/ scanString(int /*<<< orphan*/ *, char *, int,
                              int /*<<< orphan*/ *, size_t *, size_t *, char **,
                              int, int, int);
int ungetc(int, int /*<<< orphan*/ *);
int __vsfscanf(FILE *stream, char *str, int which, char *fmt, va_list arg) {
  size_t count = 0;
  size_t items = 0;
  int i = 0;
  int ignore;
  int width;
  int length;
  while (*fmt) {
    if (i == 0) {
      if (*fmt == '%') {
        i = 1;
        ignore = 0;
        width = 0;
        length = 0;
      } else if (isspace(*fmt)) {
        int t;
        while (1) {
          t = __io_char(stream, str, which, 0, 0, 0, 0, &count);
          ;
          if (!isspace(t))
            break;
        }
        {
          int __ret;
          if (which == 0) {
            if (t != EOF)
              count--;
            __ret = ungetc(t, stream);
          } else {
            count--;
            __ret = t;
          }
          __ret;
        };
      } else {
        int t = __io_char(stream, str, which, 0, 0, 0, 0, &count);
        ;
        if (t != *fmt) {
          {
            int __ret;
            if (which == 0) {
              if (t != EOF)
                count--;
              __ret = ungetc(t, stream);
            } else {
              count--;
              __ret = t;
            }
            __ret;
          };
          break;
        };
        count++;
      }
      fmt++;
    } else if (i == 1) {
      if (*fmt == '*') {
        ignore = 1;
        fmt++;
      }
      i++;
    } else if (i == 2) {
      if (*fmt >= '0' && *fmt <= '9') {
        width = width * 10 + (*fmt - '0');
        fmt++;
      } else {
        i++;
      }
    } else if (i == 3) {
      if (*fmt == 'h' && *(fmt + 1) == 'h') {
        length = 1;
        fmt += 2;
      } else if (*fmt == 'h') {
        length = 2;
        fmt++;
      } else if (*fmt == 'l' && *(fmt + 1) == 'l') {
        length = 4;
        fmt += 2;
      } else if (*fmt == 'l') {
        length = 3;
        fmt++;
      } else if (*fmt == 'j') {
        length = 5;
        fmt++;
      } else if (*fmt == 'z') {
        length = 6;
        fmt++;
      } else if (*fmt == 't') {
        length = 7;
        fmt++;
      } else if (*fmt == 'L') {
        length = 8;
        fmt++;
      }
      i++;
    } else if (i == 4) {
      int brk = 0;
      switch (*fmt) {
      case 'i':
      case 'd':
      case 'u':
      case 'o':
      case 'x':
      case 'X':
      case 'p':
        if (scanInt(stream, str, which, &arg, &count, &items, &fmt, ignore,
                    width, length))
          brk = 1;
        break;
      case 'c':
        if (scanChar(stream, str, which, &arg, &count, &items, &fmt, ignore,
                     width, length))
          brk = 1;
        break;
      case 's':
        if (scanString(stream, str, which, &arg, &count, &items, &fmt, ignore,
                       width, length))
          brk = 1;
        break;
      default:
        break;
      }
    }
  }
  return count ? items : EOF;
}


x86 assembly (clang, -O0):
<__vsfscanf>:
push   %rbp
mov    %rsp,%rbp
push   %rbx
sub    $0x88,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8d,-0x2c(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x28(%rbp),%rax
cmpb   $0x0,(%rax)
je     1732 <__vsfscanf+0x5d2>
cmpl   $0x0,-0x44(%rbp)
jne    1347 <__vsfscanf+0x1e7>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x25,%eax
jne    11de <__vsfscanf+0x7e>
movl   $0x1,-0x44(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
jmp    1336 <__vsfscanf+0x1d6>
mov    -0x28(%rbp),%rax
movsbl (%rax),%edi
call   1030 <isspace@plt>
cmp    $0x0,%rax
je     1294 <__vsfscanf+0x134>
jmp    11f9 <__vsfscanf+0x99>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
xor    %r9d,%r9d
lea    -0x38(%rbp),%rax
mov    %r9d,%ecx
mov    %r9d,%r8d
movl   $0x0,(%rsp)
mov    %rax,0x8(%rsp)
call   1040 <__io_char@plt>
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%edi
call   1030 <isspace@plt>
cmp    $0x0,%rax
jne    123c <__vsfscanf+0xdc>
jmp    1241 <__vsfscanf+0xe1>
jmp    11f9 <__vsfscanf+0x99>
cmpl   $0x0,-0x1c(%rbp)
jne    127d <__vsfscanf+0x11d>
mov    -0x54(%rbp),%eax
mov    0x2d93(%rip),%rcx
cmp    (%rcx),%eax
je     1269 <__vsfscanf+0x109>
mov    -0x38(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x54(%rbp),%edi
mov    -0x10(%rbp),%rsi
call   1060 <ungetc@plt>
mov    %eax,-0x58(%rbp)
jmp    128f <__vsfscanf+0x12f>
mov    -0x38(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x58(%rbp)
jmp    1331 <__vsfscanf+0x1d1>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
xor    %r9d,%r9d
lea    -0x38(%rbp),%rax
mov    %r9d,%ecx
mov    %r9d,%r8d
movl   $0x0,(%rsp)
mov    %rax,0x8(%rsp)
call   1040 <__io_char@plt>
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    -0x28(%rbp),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
je     1325 <__vsfscanf+0x1c5>
cmpl   $0x0,-0x1c(%rbp)
jne    130e <__vsfscanf+0x1ae>
mov    -0x5c(%rbp),%eax
mov    0x2d02(%rip),%rcx
cmp    (%rcx),%eax
je     12fa <__vsfscanf+0x19a>
mov    -0x38(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x5c(%rbp),%edi
mov    -0x10(%rbp),%rsi
call   1060 <ungetc@plt>
mov    %eax,-0x60(%rbp)
jmp    1320 <__vsfscanf+0x1c0>
mov    -0x38(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x60(%rbp)
jmp    1732 <__vsfscanf+0x5d2>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1336 <__vsfscanf+0x1d6>
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    172d <__vsfscanf+0x5cd>
cmpl   $0x1,-0x44(%rbp)
jne    1382 <__vsfscanf+0x222>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1374 <__vsfscanf+0x214>
movl   $0x1,-0x48(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1728 <__vsfscanf+0x5c8>
cmpl   $0x2,-0x44(%rbp)
jne    13de <__vsfscanf+0x27e>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
jl     13d0 <__vsfscanf+0x270>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jg     13d0 <__vsfscanf+0x270>
imul   $0xa,-0x4c(%rbp),%eax
mov    -0x28(%rbp),%rcx
movsbl (%rcx),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x4c(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    13d9 <__vsfscanf+0x279>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1723 <__vsfscanf+0x5c3>
cmpl   $0x3,-0x44(%rbp)
jne    1576 <__vsfscanf+0x416>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x68,%eax
jne    1421 <__vsfscanf+0x2c1>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x68,%eax
jne    1421 <__vsfscanf+0x2c1>
movl   $0x1,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
jmp    1568 <__vsfscanf+0x408>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x68,%eax
jne    1449 <__vsfscanf+0x2e9>
movl   $0x2,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1563 <__vsfscanf+0x403>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6c,%eax
jne    1482 <__vsfscanf+0x322>
mov    -0x28(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x6c,%eax
jne    1482 <__vsfscanf+0x322>
movl   $0x4,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x28(%rbp)
jmp    155e <__vsfscanf+0x3fe>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6c,%eax
jne    14aa <__vsfscanf+0x34a>
movl   $0x3,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1559 <__vsfscanf+0x3f9>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6a,%eax
jne    14d2 <__vsfscanf+0x372>
movl   $0x5,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1554 <__vsfscanf+0x3f4>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7a,%eax
jne    14fa <__vsfscanf+0x39a>
movl   $0x6,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    154f <__vsfscanf+0x3ef>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
jne    1522 <__vsfscanf+0x3c2>
movl   $0x7,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    154a <__vsfscanf+0x3ea>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4c,%eax
jne    1545 <__vsfscanf+0x3e5>
movl   $0x8,-0x50(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    154a <__vsfscanf+0x3ea>
jmp    154f <__vsfscanf+0x3ef>
jmp    1554 <__vsfscanf+0x3f4>
jmp    1559 <__vsfscanf+0x3f9>
jmp    155e <__vsfscanf+0x3fe>
jmp    1563 <__vsfscanf+0x403>
jmp    1568 <__vsfscanf+0x408>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    171e <__vsfscanf+0x5be>
cmpl   $0x4,-0x44(%rbp)
jne    1719 <__vsfscanf+0x5b9>
movl   $0x0,-0x64(%rbp)
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x68(%rbp)
sub    $0x58,%eax
je     1619 <__vsfscanf+0x4b9>
jmp    159f <__vsfscanf+0x43f>
mov    -0x68(%rbp),%eax
sub    $0x63,%eax
je     166b <__vsfscanf+0x50b>
jmp    15b0 <__vsfscanf+0x450>
mov    -0x68(%rbp),%eax
sub    $0x64,%eax
je     1619 <__vsfscanf+0x4b9>
jmp    15c1 <__vsfscanf+0x461>
mov    -0x68(%rbp),%eax
sub    $0x69,%eax
je     1619 <__vsfscanf+0x4b9>
jmp    15d2 <__vsfscanf+0x472>
mov    -0x68(%rbp),%eax
add    $0xffffff91,%eax
sub    $0x2,%eax
jb     1619 <__vsfscanf+0x4b9>
jmp    15e6 <__vsfscanf+0x486>
mov    -0x68(%rbp),%eax
sub    $0x73,%eax
je     16bd <__vsfscanf+0x55d>
jmp    15f7 <__vsfscanf+0x497>
mov    -0x68(%rbp),%eax
sub    $0x75,%eax
je     1619 <__vsfscanf+0x4b9>
jmp    1608 <__vsfscanf+0x4a8>
mov    -0x68(%rbp),%eax
sub    $0x78,%eax
jne    170f <__vsfscanf+0x5af>
jmp    1619 <__vsfscanf+0x4b9>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
mov    -0x48(%rbp),%r11d
mov    -0x4c(%rbp),%r10d
mov    -0x50(%rbp),%eax
lea    -0x2c(%rbp),%rcx
lea    -0x38(%rbp),%r8
lea    -0x40(%rbp),%r9
lea    -0x28(%rbp),%rbx
mov    %rbx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %eax,0x18(%rsp)
call   1050 <scanInt@plt>
cmp    $0x0,%eax
je     1666 <__vsfscanf+0x506>
movl   $0x1,-0x64(%rbp)
jmp    1714 <__vsfscanf+0x5b4>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
mov    -0x48(%rbp),%r11d
mov    -0x4c(%rbp),%r10d
mov    -0x50(%rbp),%eax
lea    -0x2c(%rbp),%rcx
lea    -0x38(%rbp),%r8
lea    -0x40(%rbp),%r9
lea    -0x28(%rbp),%rbx
mov    %rbx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %eax,0x18(%rsp)
call   1070 <scanChar@plt>
cmp    $0x0,%eax
je     16b8 <__vsfscanf+0x558>
movl   $0x1,-0x64(%rbp)
jmp    1714 <__vsfscanf+0x5b4>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x1c(%rbp),%edx
mov    -0x48(%rbp),%r11d
mov    -0x4c(%rbp),%r10d
mov    -0x50(%rbp),%eax
lea    -0x2c(%rbp),%rcx
lea    -0x38(%rbp),%r8
lea    -0x40(%rbp),%r9
lea    -0x28(%rbp),%rbx
mov    %rbx,(%rsp)
mov    %r11d,0x8(%rsp)
mov    %r10d,0x10(%rsp)
mov    %eax,0x18(%rsp)
call   1080 <scanString@plt>
cmp    $0x0,%eax
je     170a <__vsfscanf+0x5aa>
movl   $0x1,-0x64(%rbp)
jmp    1714 <__vsfscanf+0x5b4>
jmp    1714 <__vsfscanf+0x5b4>
jmp    1719 <__vsfscanf+0x5b9>
jmp    171e <__vsfscanf+0x5be>
jmp    1723 <__vsfscanf+0x5c3>
jmp    1728 <__vsfscanf+0x5c8>
jmp    172d <__vsfscanf+0x5cd>
jmp    1196 <__vsfscanf+0x36>
cmpq   $0x0,-0x38(%rbp)
je     174a <__vsfscanf+0x5ea>
mov    -0x40(%rbp),%rax
mov    %rax,-0x70(%rbp)
jmp    1758 <__vsfscanf+0x5f8>
mov    0x2897(%rip),%rax
movslq (%rax),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
add    $0x88,%rsp
pop    %rbx
pop    %rbp
ret

x86 assembly (clang, -O2):
<__vsfscanf>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %rcx,(%rsp)
mov    %r8d,0x1c(%rsp)
movq   $0x0,0x10(%rsp)
movq   $0x0,0x30(%rsp)
mov    (%rcx),%al
test   %al,%al
je     150f <__vsfscanf+0x3af>
mov    %edx,%r15d
mov    %rsi,%r13
mov    %rdi,%r14
xor    %ebx,%ebx
lea    0xe5b(%rip),%rbp
lea    0xe68(%rip),%r12
mov    %rdx,0x28(%rsp)
mov    %rdx,0x8(%rsp)
mov    %rdx,0x20(%rsp)
jmp    11ee <__vsfscanf+0x8e>
mov    $0x1,%ebx
xor    %eax,%eax
mov    %rax,0x20(%rsp)
xor    %eax,%eax
mov    %rax,0x8(%rsp)
xor    %eax,%eax
mov    %rax,0x28(%rsp)
addq   $0x1,(%rsp)
nopl   0x0(%rax)
mov    (%rsp),%rcx
mov    (%rcx),%al
test   %al,%al
je     150f <__vsfscanf+0x3af>
cmp    $0x4,%ebx
ja     11e0 <__vsfscanf+0x80>
mov    %ebx,%edx
movslq 0x0(%rbp,%rdx,4),%rdx
add    %rbp,%rdx
jmp    *%rdx
cmp    $0x25,%al
je     11bd <__vsfscanf+0x5d>
movsbl %al,%edi
call   1030 <isspace@plt>
test   %rax,%rax
je     1390 <__vsfscanf+0x230>
lea    0x10(%rsp),%rbx
nopl   0x0(%rax)
mov    %r14,%rdi
mov    %r13,%rsi
mov    %r15d,%edx
xor    %ecx,%ecx
xor    %r8d,%r8d
xor    %r9d,%r9d
push   %rbx
push   $0x0
call   1040 <__io_char@plt>
add    $0x10,%rsp
mov    %eax,%r12d
mov    %eax,%edi
call   1030 <isspace@plt>
test   %rax,%rax
jne    1220 <__vsfscanf+0xc0>
test   %r15d,%r15d
je     145a <__vsfscanf+0x2fa>
addq   $0xffffffffffffffff,0x10(%rsp)
jmp    1477 <__vsfscanf+0x317>
mov    $0x2,%ebx
cmp    $0x2a,%al
jne    11e0 <__vsfscanf+0x80>
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x1,%eax
mov    %rax,0x28(%rsp)
jmp    11e0 <__vsfscanf+0x80>
lea    -0x30(%rax),%edx
mov    $0x3,%ebx
cmp    $0x9,%dl
ja     11e0 <__vsfscanf+0x80>
movzbl %al,%eax
mov    0x20(%rsp),%rdx
lea    (%rdx,%rdx,4),%edx
lea    (%rax,%rdx,2),%eax
add    $0xffffffd0,%eax
mov    %rax,0x20(%rsp)
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x2,%ebx
jmp    11e0 <__vsfscanf+0x80>
mov    $0x4,%ebx
add    $0xb4,%al
cmp    $0x2e,%al
ja     11e0 <__vsfscanf+0x80>
movzbl %al,%eax
movslq (%r12,%rax,4),%rax
add    %r12,%rax
jmp    *%rax
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x8,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
movsbl %al,%eax
mov    $0x4,%ebx
add    $0xffffffa8,%eax
cmp    $0x20,%eax
ja     11e0 <__vsfscanf+0x80>
movabs $0x121821001,%rcx
bt     %rax,%rcx
jae    134b <__vsfscanf+0x1eb>
mov    %r14,%rdi
mov    %r13,%rsi
mov    %r15d,%edx
lea    0x1c(%rsp),%rcx
lea    0x10(%rsp),%r8
lea    0x30(%rsp),%r9
push   0x8(%rsp)
push   0x28(%rsp)
push   0x38(%rsp)
lea    0x18(%rsp),%rax
push   %rax
call   1050 <scanInt@plt>
add    $0x20,%rsp
jmp    11e0 <__vsfscanf+0x80>
cmp    $0xb,%rax
je     1485 <__vsfscanf+0x325>
cmp    $0x1b,%rax
jne    11e0 <__vsfscanf+0x80>
mov    %r14,%rdi
mov    %r13,%rsi
mov    %r15d,%edx
lea    0x1c(%rsp),%rcx
lea    0x10(%rsp),%r8
lea    0x30(%rsp),%r9
push   0x8(%rsp)
push   0x28(%rsp)
push   0x38(%rsp)
lea    0x18(%rsp),%rax
push   %rax
call   1080 <scanString@plt>
jmp    1342 <__vsfscanf+0x1e2>
mov    %r14,%rdi
mov    %r13,%rsi
mov    %r15d,%edx
xor    %ecx,%ecx
xor    %r8d,%r8d
xor    %r9d,%r9d
lea    0x10(%rsp),%rax
push   %rax
push   $0x0
call   1040 <__io_char@plt>
add    $0x10,%rsp
mov    (%rsp),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
jne    14e7 <__vsfscanf+0x387>
addq   $0x1,0x10(%rsp)
xor    %ebx,%ebx
jmp    11d7 <__vsfscanf+0x77>
cmpb   $0x68,0x1(%rcx)
jne    14b9 <__vsfscanf+0x359>
add    $0x2,%rcx
mov    %rcx,(%rsp)
mov    $0x1,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x5,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
cmpb   $0x6c,0x1(%rcx)
jne    14d0 <__vsfscanf+0x370>
add    $0x2,%rcx
mov    %rcx,(%rsp)
mov    $0x4,%eax
mov    %rax,0x8(%rsp)
mov    $0x4,%ebx
jmp    11e0 <__vsfscanf+0x80>
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x7,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x6,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
mov    0x2b87(%rip),%rax
cmp    (%rax),%r12d
je     146c <__vsfscanf+0x30c>
addq   $0xffffffffffffffff,0x10(%rsp)
mov    %r12d,%edi
mov    %r14,%rsi
call   1060 <ungetc@plt>
xor    %ebx,%ebx
lea    0xb94(%rip),%r12
jmp    11d7 <__vsfscanf+0x77>
mov    %r14,%rdi
mov    %r13,%rsi
mov    %r15d,%edx
lea    0x1c(%rsp),%rcx
lea    0x10(%rsp),%r8
lea    0x30(%rsp),%r9
push   0x8(%rsp)
push   0x28(%rsp)
push   0x38(%rsp)
lea    0x18(%rsp),%rax
push   %rax
call   1070 <scanChar@plt>
jmp    1342 <__vsfscanf+0x1e2>
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x2,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
add    $0x1,%rcx
mov    %rcx,(%rsp)
mov    $0x3,%eax
mov    %rax,0x8(%rsp)
jmp    11e0 <__vsfscanf+0x80>
test   %r15d,%r15d
je     14f4 <__vsfscanf+0x394>
addq   $0xffffffffffffffff,0x10(%rsp)
jmp    150f <__vsfscanf+0x3af>
mov    0x2aed(%rip),%rcx
cmp    (%rcx),%eax
je     1505 <__vsfscanf+0x3a5>
addq   $0xffffffffffffffff,0x10(%rsp)
mov    %eax,%edi
mov    %r14,%rsi
call   1060 <ungetc@plt>
cmpq   $0x0,0x10(%rsp)
jne    1520 <__vsfscanf+0x3c0>
mov    0x2aca(%rip),%rax
jmp    1525 <__vsfscanf+0x3c5>
lea    0x30(%rsp),%rax
mov    (%rax),%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@EOF = global i32 0
define i32 @__vsfscanf(i32* %0, i8* %1, i32 %2, i8* %3, i32 %4) {
%6 = alloca i32*
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i32
%11 = alloca i64
%12 = alloca i64
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
store i32* %0, i32** %6
store i8* %1, i8** %7
store i32 %2, i32* %8
store i8* %3, i8** %9
store i32 %4, i32* %10
store i64 0, i64* %11
store i64 0, i64* %12
store i32 0, i32* %13
br label %22
22: ; preds = %285, %5
%23 = load i8*, i8** %9
%24 = load i8, i8* %23
%25 = icmp ne i8 %24, 0
br i1 %25, label %26, label %286
26: ; preds = %22
%27 = load i32, i32* %13
%28 = icmp eq i32 %27, 0
br i1 %28, label %29, label %109
29: ; preds = %26
%30 = load i8*, i8** %9
%31 = load i8, i8* %30
%32 = sext i8 %31 to i32
%33 = icmp eq i32 %32, 37
br i1 %33, label %34, label %35
34: ; preds = %29
store i32 1, i32* %13
store i32 0, i32* %14
store i32 0, i32* %15
store i32 0, i32* %16
br label %106
35: ; preds = %29
%36 = load i8*, i8** %9
%37 = load i8, i8* %36
%38 = sext i8 %37 to i32
%39 = call i64 @isspace(i32 %38)
%40 = icmp ne i64 %39, 0
br i1 %40, label %41, label %72
41: ; preds = %35
br label %42
42: ; preds = %41, %51
%43 = load i32*, i32** %6
%44 = load i8*, i8** %7
%45 = load i32, i32* %8
%46 = call i32 @__io_char(i32* %43, i8* %44, i32 %45, i32 0, i32 0, i32 0, i32 0, i64* %11)
store i32 %46, i32* %17
%47 = load i32, i32* %17
%48 = call i64 @isspace(i32 %47)
%49 = icmp ne i64 %48, 0
br i1 %49, label %51, label %50
50: ; preds = %42
br label %52
51: ; preds = %42
br label %42
52: ; preds = %50
%53 = load i32, i32* %8
%54 = icmp eq i32 %53, 0
br i1 %54, label %55, label %66
55: ; preds = %52
%56 = load i32, i32* %17
%57 = load i32, i32* @EOF
%58 = icmp ne i32 %56, %57
br i1 %58, label %59, label %62
59: ; preds = %55
%60 = load i64, i64* %11
%61 = add i64 %60, -1
store i64 %61, i64* %11
br label %62
62: ; preds = %59, %55
%63 = load i32, i32* %17
%64 = load i32*, i32** %6
%65 = call i32 @ungetc(i32 %63, i32* %64)
store i32 %65, i32* %18
br label %70
66: ; preds = %52
%67 = load i64, i64* %11
%68 = add i64 %67, -1
store i64 %68, i64* %11
%69 = load i32, i32* %17
store i32 %69, i32* %18
br label %70
70: ; preds = %66, %62
%71 = load i32, i32* %18
br label %105
72: ; preds = %35
%73 = load i32*, i32** %6
%74 = load i8*, i8** %7
%75 = load i32, i32* %8
%76 = call i32 @__io_char(i32* %73, i8* %74, i32 %75, i32 0, i32 0, i32 0, i32 0, i64* %11)
store i32 %76, i32* %19
%77 = load i32, i32* %19
%78 = load i8*, i8** %9
%79 = load i8, i8* %78
%80 = sext i8 %79 to i32
%81 = icmp ne i32 %77, %80
br i1 %81, label %82, label %102
82: ; preds = %72
%83 = load i32, i32* %8
%84 = icmp eq i32 %83, 0
br i1 %84, label %85, label %96
85: ; preds = %82
%86 = load i32, i32* %19
%87 = load i32, i32* @EOF
%88 = icmp ne i32 %86, %87
br i1 %88, label %89, label %92
89: ; preds = %85
%90 = load i64, i64* %11
%91 = add i64 %90, -1
store i64 %91, i64* %11
br label %92
92: ; preds = %89, %85
%93 = load i32, i32* %19
%94 = load i32*, i32** %6
%95 = call i32 @ungetc(i32 %93, i32* %94)
store i32 %95, i32* %20
br label %100
96: ; preds = %82
%97 = load i64, i64* %11
%98 = add i64 %97, -1
store i64 %98, i64* %11
%99 = load i32, i32* %19
store i32 %99, i32* %20
br label %100
100: ; preds = %96, %92
%101 = load i32, i32* %20
br label %286
102: ; preds = %72
%103 = load i64, i64* %11
%104 = add i64 %103, 1
store i64 %104, i64* %11
br label %105
105: ; preds = %102, %70
br label %106
106: ; preds = %105, %34
%107 = load i8*, i8** %9
%108 = getelementptr inbounds i8, i8* %107, i32 1
store i8* %108, i8** %9
br label %285
109: ; preds = %26
%110 = load i32, i32* %13
%111 = icmp eq i32 %110, 1
br i1 %111, label %112, label %123
112: ; preds = %109
%113 = load i8*, i8** %9
%114 = load i8, i8* %113
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %115, 42
br i1 %116, label %117, label %120
117: ; preds = %112
store i32 1, i32* %14
%118 = load i8*, i8** %9
%119 = getelementptr inbounds i8, i8* %118, i32 1
store i8* %119, i8** %9
br label %120
120: ; preds = %117, %112
%121 = load i32, i32* %13
%122 = add nsw i32 %121, 1
store i32 %122, i32* %13
br label %284
123: ; preds = %109
%124 = load i32, i32* %13
%125 = icmp eq i32 %124, 2
br i1 %125, label %126, label %150
126: ; preds = %123
%127 = load i8*, i8** %9
%128 = load i8, i8* %127
%129 = sext i8 %128 to i32
%130 = icmp sge i32 %129, 48
br i1 %130, label %131, label %146
131: ; preds = %126
%132 = load i8*, i8** %9
%133 = load i8, i8* %132
%134 = sext i8 %133 to i32
%135 = icmp sle i32 %134, 57
br i1 %135, label %136, label %146
136: ; preds = %131
%137 = load i32, i32* %15
%138 = mul nsw i32 %137, 10
%139 = load i8*, i8** %9
%140 = load i8, i8* %139
%141 = sext i8 %140 to i32
%142 = sub nsw i32 %141, 48
%143 = add nsw i32 %138, %142
store i32 %143, i32* %15
%144 = load i8*, i8** %9
%145 = getelementptr inbounds i8, i8* %144, i32 1
store i8* %145, i8** %9
br label %149
146: ; preds = %131, %126
%147 = load i32, i32* %13
%148 = add nsw i32 %147, 1
store i32 %148, i32* %13
br label %149
149: ; preds = %146, %136
br label %283
150: ; preds = %123
%151 = load i32, i32* %13
%152 = icmp eq i32 %151, 3
br i1 %152, label %153, label %239
153: ; preds = %150
%154 = load i8*, i8** %9
%155 = load i8, i8* %154
%156 = sext i8 %155 to i32
%157 = icmp eq i32 %156, 104
br i1 %157, label %158, label %167
158: ; preds = %153
%159 = load i8*, i8** %9
%160 = getelementptr inbounds i8, i8* %159, i64 1
%161 = load i8, i8* %160
%162 = sext i8 %161 to i32
%163 = icmp eq i32 %162, 104
br i1 %163, label %164, label %167
164: ; preds = %158
store i32 1, i32* %16
%165 = load i8*, i8** %9
%166 = getelementptr inbounds i8, i8* %165, i64 2
store i8* %166, i8** %9
br label %236
167: ; preds = %158, %153
%168 = load i8*, i8** %9
%169 = load i8, i8* %168
%170 = sext i8 %169 to i32
%171 = icmp eq i32 %170, 104
br i1 %171, label %172, label %175
172: ; preds = %167
store i32 2, i32* %16
%173 = load i8*, i8** %9
%174 = getelementptr inbounds i8, i8* %173, i32 1
store i8* %174, i8** %9
br label %235
175: ; preds = %167
%176 = load i8*, i8** %9
%177 = load i8, i8* %176
%178 = sext i8 %177 to i32
%179 = icmp eq i32 %178, 108
br i1 %179, label %180, label %189
180: ; preds = %175
%181 = load i8*, i8** %9
%182 = getelementptr inbounds i8, i8* %181, i64 1
%183 = load i8, i8* %182
%184 = sext i8 %183 to i32
%185 = icmp eq i32 %184, 108
br i1 %185, label %186, label %189
186: ; preds = %180
store i32 4, i32* %16
%187 = load i8*, i8** %9
%188 = getelementptr inbounds i8, i8* %187, i64 2
store i8* %188, i8** %9
br label %234
189: ; preds = %180, %175
%190 = load i8*, i8** %9
%191 = load i8, i8* %190
%192 = sext i8 %191 to i32
%193 = icmp eq i32 %192, 108
br i1 %193, label %194, label %197
194: ; preds = %189
store i32 3, i32* %16
%195 = load i8*, i8** %9
%196 = getelementptr inbounds i8, i8* %195, i32 1
store i8* %196, i8** %9
br label %233
197: ; preds = %189
%198 = load i8*, i8** %9
%199 = load i8, i8* %198
%200 = sext i8 %199 to i32
%201 = icmp eq i32 %200, 106
br i1 %201, label %202, label %205
202: ; preds = %197
store i32 5, i32* %16
%203 = load i8*, i8** %9
%204 = getelementptr inbounds i8, i8* %203, i32 1
store i8* %204, i8** %9
br label %232
205: ; preds = %197
%206 = load i8*, i8** %9
%207 = load i8, i8* %206
%208 = sext i8 %207 to i32
%209 = icmp eq i32 %208, 122
br i1 %209, label %210, label %213
210: ; preds = %205
store i32 6, i32* %16
%211 = load i8*, i8** %9
%212 = getelementptr inbounds i8, i8* %211, i32 1
store i8* %212, i8** %9
br label %231
213: ; preds = %205
%214 = load i8*, i8** %9
%215 = load i8, i8* %214
%216 = sext i8 %215 to i32
%217 = icmp eq i32 %216, 116
br i1 %217, label %218, label %221
218: ; preds = %213
store i32 7, i32* %16
%219 = load i8*, i8** %9
%220 = getelementptr inbounds i8, i8* %219, i32 1
store i8* %220, i8** %9
br label %230
221: ; preds = %213
%222 = load i8*, i8** %9
%223 = load i8, i8* %222
%224 = sext i8 %223 to i32
%225 = icmp eq i32 %224, 76
br i1 %225, label %226, label %229
226: ; preds = %221
store i32 8, i32* %16
%227 = load i8*, i8** %9
%228 = getelementptr inbounds i8, i8* %227, i32 1
store i8* %228, i8** %9
br label %229
229: ; preds = %226, %221
br label %230
230: ; preds = %229, %218
br label %231
231: ; preds = %230, %210
br label %232
232: ; preds = %231, %202
br label %233
233: ; preds = %232, %194
br label %234
234: ; preds = %233, %186
br label %235
235: ; preds = %234, %172
br label %236
236: ; preds = %235, %164
%237 = load i32, i32* %13
%238 = add nsw i32 %237, 1
store i32 %238, i32* %13
br label %282
239: ; preds = %150
%240 = load i32, i32* %13
%241 = icmp eq i32 %240, 4
br i1 %241, label %242, label %281
242: ; preds = %239
store i32 0, i32* %21
%243 = load i8*, i8** %9
%244 = load i8, i8* %243
%245 = sext i8 %244 to i32
switch i32 %245, label %279 [
i32 105, label %246
i32 100, label %246
i32 117, label %246
i32 111, label %246
i32 120, label %246
i32 88, label %246
i32 112, label %246
i32 99, label %257
i32 115, label %268
]
246: ; preds = %242, %242, %242, %242, %242, %242, %242
%247 = load i32*, i32** %6
%248 = load i8*, i8** %7
%249 = load i32, i32* %8
%250 = load i32, i32* %14
%251 = load i32, i32* %15
%252 = load i32, i32* %16
%253 = call i32 @scanInt(i32* %247, i8* %248, i32 %249, i32* %10, i64* %11, i64* %12, i8** %9, i32 %250, i32 %251, i32 %252)
%254 = icmp ne i32 %253, 0
br i1 %254, label %255, label %256
255: ; preds = %246
store i32 1, i32* %21
br label %256
256: ; preds = %255, %246
br label %280
257: ; preds = %242
%258 = load i32*, i32** %6
%259 = load i8*, i8** %7
%260 = load i32, i32* %8
%261 = load i32, i32* %14
%262 = load i32, i32* %15
%263 = load i32, i32* %16
%264 = call i32 @scanChar(i32* %258, i8* %259, i32 %260, i32* %10, i64* %11, i64* %12, i8** %9, i32 %261, i32 %262, i32 %263)
%265 = icmp ne i32 %264, 0
br i1 %265, label %266, label %267
266: ; preds = %257
store i32 1, i32* %21
br label %267
267: ; preds = %266, %257
br label %280
268: ; preds = %242
%269 = load i32*, i32** %6
%270 = load i8*, i8** %7
%271 = load i32, i32* %8
%272 = load i32, i32* %14
%273 = load i32, i32* %15
%274 = load i32, i32* %16
%275 = call i32 @scanString(i32* %269, i8* %270, i32 %271, i32* %10, i64* %11, i64* %12, i8** %9, i32 %272, i32 %273, i32 %274)
%276 = icmp ne i32 %275, 0
br i1 %276, label %277, label %278
277: ; preds = %268
store i32 1, i32* %21
br label %278
278: ; preds = %277, %268
br label %280
279: ; preds = %242
br label %280
280: ; preds = %279, %278, %267, %256
br label %281
281: ; preds = %280, %239
br label %282
282: ; preds = %281, %236
br label %283
283: ; preds = %282, %149
br label %284
284: ; preds = %283, %120
br label %285
285: ; preds = %284, %106
br label %22
286: ; preds = %100, %22
%287 = load i64, i64* %11
%288 = icmp ne i64 %287, 0
br i1 %288, label %289, label %291
289: ; preds = %286
%290 = load i64, i64* %12
br label %294
291: ; preds = %286
%292 = load i32, i32* @EOF
%293 = sext i32 %292 to i64
br label %294
294: ; preds = %291, %289
%295 = phi i64 [ %290, %289 ], [ %293, %291 ]
%296 = trunc i64 %295 to i32
ret i32 %296
}

LLVM IR (-O2):
@EOF = global i32 0
define i32 @__vsfscanf(i32* %0, i8* %1, i32 %2, i8* %3, i32 %4) {
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i64
%9 = alloca i64
store i8* %3, i8** %6
store i32 %4, i32* %7
%10 = bitcast i64* %8 to i8*
store i64 0, i64* %8
%11 = bitcast i64* %9 to i8*
store i64 0, i64* %9
%12 = load i8, i8* %3
%13 = icmp eq i8 %12, 0
br i1 %13, label %125, label %14
14: ; preds = %5
%15 = icmp eq i32 %2, 0
br label %16
16: ; preds = %14, %117
%17 = phi i8 [ %12, %14 ], [ %123, %117 ]
%18 = phi i8* [ %3, %14 ], [ %122, %117 ]
%19 = phi i32 [ 0, %14 ], [ %121, %117 ]
%20 = phi i32 [ undef, %14 ], [ %120, %117 ]
%21 = phi i32 [ undef, %14 ], [ %119, %117 ]
%22 = phi i32 [ undef, %14 ], [ %118, %117 ]
switch i32 %19, label %117 [
i32 0, label %23
i32 1, label %73
i32 2, label %77
i32 3, label %86
i32 4, label %109
]
23: ; preds = %16
%24 = icmp eq i8 %17, 37
br i1 %24, label %66, label %25
25: ; preds = %23
%26 = sext i8 %17 to i32
%27 = call i64 @isspace(i32 %26)
%28 = icmp eq i64 %27, 0
br i1 %28, label %45, label %29
29: ; preds = %25, %29
%30 = call i32 @__io_char(i32* %0, i8* %1, i32 %2, i32 0, i32 0, i32 0, i32 0, i64* %8)
%31 = call i64 @isspace(i32 %30)
%32 = icmp eq i64 %31, 0
br i1 %32, label %33, label %29
33: ; preds = %29
br i1 %15, label %34, label %42
34: ; preds = %33
%35 = load i32, i32* @EOF
%36 = icmp eq i32 %30, %35
br i1 %36, label %40, label %37
37: ; preds = %34
%38 = load i64, i64* %8
%39 = add i64 %38, -1
store i64 %39, i64* %8
br label %40
40: ; preds = %37, %34
%41 = call i32 @ungetc(i32 %30, i32* %0)
br label %66
42: ; preds = %33
%43 = load i64, i64* %8
%44 = add i64 %43, -1
store i64 %44, i64* %8
br label %66
45: ; preds = %25
%46 = call i32 @__io_char(i32* %0, i8* %1, i32 %2, i32 0, i32 0, i32 0, i32 0, i64* %8)
%47 = load i8*, i8** %6
%48 = load i8, i8* %47
%49 = sext i8 %48 to i32
%50 = icmp eq i32 %46, %49
br i1 %50, label %63, label %51
51: ; preds = %45
br i1 %15, label %52, label %60
52: ; preds = %51
%53 = load i32, i32* @EOF
%54 = icmp eq i32 %46, %53
br i1 %54, label %58, label %55
55: ; preds = %52
%56 = load i64, i64* %8
%57 = add i64 %56, -1
store i64 %57, i64* %8
br label %58
58: ; preds = %55, %52
%59 = call i32 @ungetc(i32 %46, i32* %0)
br label %125
60: ; preds = %51
%61 = load i64, i64* %8
%62 = add i64 %61, -1
store i64 %62, i64* %8
br label %125
63: ; preds = %45
%64 = load i64, i64* %8
%65 = add i64 %64, 1
store i64 %65, i64* %8
br label %66
66: ; preds = %63, %40, %42, %23
%67 = phi i32 [ %22, %63 ], [ 0, %23 ], [ %22, %42 ], [ %22, %40 ]
%68 = phi i32 [ %21, %63 ], [ 0, %23 ], [ %21, %42 ], [ %21, %40 ]
%69 = phi i32 [ %20, %63 ], [ 0, %23 ], [ %20, %42 ], [ %20, %40 ]
%70 = phi i32 [ 0, %63 ], [ 1, %23 ], [ 0, %42 ], [ 0, %40 ]
%71 = load i8*, i8** %6
%72 = getelementptr inbounds i8, i8* %71, i64 1
store i8* %72, i8** %6
br label %117
73: ; preds = %16
%74 = icmp eq i8 %17, 42
br i1 %74, label %75, label %117
75: ; preds = %73
%76 = getelementptr inbounds i8, i8* %18, i64 1
store i8* %76, i8** %6
br label %117
77: ; preds = %16
%78 = add i8 %17, -48
%79 = icmp ult i8 %78, 10
br i1 %79, label %80, label %117
80: ; preds = %77
%81 = zext i8 %17 to i32
%82 = mul nsw i32 %22, 10
%83 = add i32 %82, -48
%84 = add i32 %83, %81
%85 = getelementptr inbounds i8, i8* %18, i64 1
store i8* %85, i8** %6
br label %117
86: ; preds = %16
switch i8 %17, label %117 [
i8 104, label %87
i8 108, label %94
i8 76, label %107
i8 106, label %101
i8 122, label %103
i8 116, label %105
]
87: ; preds = %86
%88 = getelementptr inbounds i8, i8* %18, i64 1
%89 = load i8, i8* %88
%90 = icmp eq i8 %89, 104
br i1 %90, label %91, label %93
91: ; preds = %87
%92 = getelementptr inbounds i8, i8* %18, i64 2
store i8* %92, i8** %6
br label %117
93: ; preds = %87
store i8* %88, i8** %6
br label %117
94: ; preds = %86
%95 = getelementptr inbounds i8, i8* %18, i64 1
%96 = load i8, i8* %95
%97 = icmp eq i8 %96, 108
br i1 %97, label %98, label %100
98: ; preds = %94
%99 = getelementptr inbounds i8, i8* %18, i64 2
store i8* %99, i8** %6
br label %117
100: ; preds = %94
store i8* %95, i8** %6
br label %117
101: ; preds = %86
%102 = getelementptr inbounds i8, i8* %18, i64 1
store i8* %102, i8** %6
br label %117
103: ; preds = %86
%104 = getelementptr inbounds i8, i8* %18, i64 1
store i8* %104, i8** %6
br label %117
105: ; preds = %86
%106 = getelementptr inbounds i8, i8* %18, i64 1
store i8* %106, i8** %6
br label %117
107: ; preds = %86
%108 = getelementptr inbounds i8, i8* %18, i64 1
store i8* %108, i8** %6
br label %117
109: ; preds = %16
%110 = sext i8 %17 to i32
switch i32 %110, label %117 [
i32 105, label %111
i32 100, label %111
i32 117, label %111
i32 111, label %111
i32 120, label %111
i32 88, label %111
i32 112, label %111
i32 99, label %113
i32 115, label %115
]
111: ; preds = %109, %109, %109, %109, %109, %109, %109
%112 = call i32 @scanInt(i32* %0, i8* %1, i32 %2, i32* %7, i64* %8, i64* %9, i8** %6, i32 %20, i32 %22, i32 %21)
br label %117
113: ; preds = %109
%114 = call i32 @scanChar(i32* %0, i8* %1, i32 %2, i32* %7, i64* %8, i64* %9, i8** %6, i32 %20, i32 %22, i32 %21)
br label %117
115: ; preds = %109
%116 = call i32 @scanString(i32* %0, i8* %1, i32 %2, i32* %7, i64* %8, i64* %9, i8** %6, i32 %20, i32 %22, i32 %21)
br label %117
117: ; preds = %86, %115, %113, %111, %109, %16, %91, %98, %101, %105, %107, %103, %100, %93, %77, %73, %75, %80, %66
%118 = phi i32 [ %67, %66 ], [ %84, %80 ], [ %22, %75 ], [ %22, %73 ], [ %22, %77 ], [ %22, %93 ], [ %22, %100 ], [ %22, %103 ], [ %22, %107 ], [ %22, %105 ], [ %22, %101 ], [ %22, %98 ], [ %22, %91 ], [ %22, %16 ], [ %22, %109 ], [ %22, %115 ], [ %22, %113 ], [ %22, %111 ], [ %22, %86 ]
%119 = phi i32 [ %68, %66 ], [ %21, %80 ], [ %21, %75 ], [ %21, %73 ], [ %21, %77 ], [ 2, %93 ], [ 3, %100 ], [ 6, %103 ], [ 8, %107 ], [ 7, %105 ], [ 5, %101 ], [ 4, %98 ], [ 1, %91 ], [ %21, %16 ], [ %21, %109 ], [ %21, %115 ], [ %21, %113 ], [ %21, %111 ], [ %21, %86 ]
%120 = phi i32 [ %69, %66 ], [ %20, %80 ], [ 1, %75 ], [ %20, %73 ], [ %20, %77 ], [ %20, %93 ], [ %20, %100 ], [ %20, %103 ], [ %20, %107 ], [ %20, %105 ], [ %20, %101 ], [ %20, %98 ], [ %20, %91 ], [ %20, %16 ], [ %20, %109 ], [ %20, %115 ], [ %20, %113 ], [ %20, %111 ], [ %20, %86 ]
%121 = phi i32 [ %70, %66 ], [ 2, %80 ], [ 2, %75 ], [ 2, %73 ], [ 3, %77 ], [ 4, %93 ], [ 4, %100 ], [ 4, %103 ], [ 4, %107 ], [ 4, %105 ], [ 4, %101 ], [ 4, %98 ], [ 4, %91 ], [ %19, %16 ], [ 4, %109 ], [ 4, %115 ], [ 4, %113 ], [ 4, %111 ], [ 4, %86 ]
%122 = load i8*, i8** %6
%123 = load i8, i8* %122
%124 = icmp eq i8 %123, 0
br i1 %124, label %125, label %16
125: ; preds = %117, %5, %58, %60
%126 = load i64, i64* %8
%127 = icmp eq i64 %126, 0
%128 = load i64, i64* %9
%129 = load i32, i32* @EOF
%130 = zext i32 %129 to i64
%131 = select i1 %127, i64 %130, i64 %128
%132 = trunc i64 %131 to i32
ret i32 %132
}