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

/* Variables and functions */
int BUFSIZ;
int EOF;
int /*<<< orphan*/ feof(int /*<<< orphan*/ *);
int /*<<< orphan*/ ferror(int /*<<< orphan*/ *);
char *fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int /*<<< orphan*/ fputs(char *, int /*<<< orphan*/ *);
int fscanf(int /*<<< orphan*/ *, char *, ...);
int isinf(float);
int /*<<< orphan*/ pclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ perror(char *);
int /*<<< orphan*/ *popen(char *, char *);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ sprintf(char *, char *, char *);
int sscanf(char *, char *, ...);
int /*<<< orphan*/ *stdin;
int /*<<< orphan*/ *stdout;
scalar_t__ strcmp(char *, char *);
int main(int argc, char **argv) {
  char buf[BUFSIZ];
  FILE *in = stdin, *out = stdout;
  int x;
  int result = 0;
  if (sscanf("0", "%d", &x) != 1) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  if (sscanf("08905x", "%9[0-9]", buf) != 1 || strcmp(buf, "08905") != 0) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  if (sscanf("", "%10[a-z]", buf) != EOF) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  sscanf("conversion] Zero flag Ze]ro#\n", "%*[^]] %[^#]\n", buf);
  if (strcmp(buf, "] Zero flag Ze]ro") != 0) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  if (argc == 2 && !strcmp(argv[1], "-opipe")) {
    out = popen("/bin/cat", "w");
    if (out == NULL) {
      perror("popen: /bin/cat");
      result = 1;
    }
  } else if (argc == 3 && !strcmp(argv[1], "-ipipe")) {
    sprintf(buf, "/bin/cat %s", argv[2]);
    in = popen(buf, "r");
    if (in == NULL) {
      perror("popen: /bin/cat");
      result = 1;
    }
  }
  {
    char name[50];
    fprintf(out, "sscanf (\"thompson\", \"%%s\", name) == %d, name == \"%s\"\n",
            sscanf("thompson", "%s", name), name);
    if (strcmp(name, "thompson") != 0) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Testing scanf (vfscanf)\n", out);
  fputs("Test 1:\n", out);
  {
    int n, i;
    float x;
    char name[50];
    n = fscanf(in, "%d%f%s", &i, &x, name);
    fprintf(out, "n = %d, i = %d, x = %f, name = \"%.50s\"\n", n, i, x, name);
    if (n != 3 || i != 25 || x != 5.432F || strcmp(name, "thompson")) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fprintf(out, "Residual: \"%s\"\n", fgets(buf, sizeof(buf), in));
  if (strcmp(buf, "\n")) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  fputs("Test 2:\n", out);
  {
    int i;
    float x;
    char name[50];
    (void)fscanf(in, "%2d%f%*d %[0123456789]", &i, &x, name);
    fprintf(out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name);
    if (i != 56 || x != 789.0F || strcmp(name, "56")) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fprintf(out, "Residual: \"%s\"\n", fgets(buf, sizeof(buf), in));
  if (strcmp(buf, "a72\n")) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  fputs("Test 3:\n", out);
  {
    static struct {
      int count;
      float quant;
      const char *units;
      const char *item;
    } ok[] = {{3, 2.0F, "quarts", "oil"},
              {2, -12.8F, "degrees", ""},
              {0, 0.0F, "", ""},
              {3, 10.0F, "LBS", "fertilizer"},
              {3, 100.0F, "rgs", "energy"},
              {-1, 0.0F, "", ""}};
    size_t rounds = 0;
    float quant;
    char units[21], item[21];
    while (!feof(in) && !ferror(in)) {
      int count;
      if (rounds++ >= sizeof(ok) / sizeof(ok[0])) {
        fputs("test failed!\n", stdout);
        result = 1;
      }
      quant = 0.0;
      units[0] = item[0] = '\0';
      count = fscanf(in, "%f%20s of %20s", &quant, units, item);
      (void)fscanf(in, "%*[^\n]");
      fprintf(out, "count = %d, quant = %f, item = %.21s, units = %.21s\n",
              count, quant, item, units);
      if (count != ok[rounds - 1].count || quant != ok[rounds - 1].quant ||
          strcmp(item, ok[rounds - 1].item) ||
          strcmp(units, ok[rounds - 1].units)) {
        fputs("test failed!\n", stdout);
        result = 1;
      }
    }
  }
  buf[0] = '\0';
  fprintf(out, "Residual: \"%s\"\n", fgets(buf, sizeof(buf), in));
  if (strcmp(buf, "")) {
    fputs("test failed!\n", stdout);
    result = 1;
  }
  if (out != stdout)
    pclose(out);
  fputs("Test 4:\n", out);
  {
    int res, val, n;
    res = sscanf("-242", "%3o%n", &val, &n);
    printf("res = %d, val = %d, n = %d\n", res, val, n);
    if (res != 1 || val != -20 || n != 3) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 5:\n", out);
  {
    double a = 0, b = 0;
    int res, n;
    res = sscanf("1234567", "%3lg%3lg%n", &a, &b, &n);
    printf("res = %d, a = %g, b = %g, n = %d\n", res, a, b, n);
    if (res != 2 || a != 123 || b != 456 || n != 6) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
    res = sscanf("0", "%lg", &a);
    printf("res = %d, a = %g\n", res, a);
    if (res != 1 || a != 0) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
    res = sscanf("1e3", "%lg%n", &a, &n);
    printf("res = %d, a = %g, n = %d\n", res, a, n);
    if (res != 1 || a != 1000 || n != 3) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 6:\n", stdout);
  {
    char *p = (char *)-1;
    int res;
    sprintf(buf, "%p", NULL);
    res = sscanf(buf, "%p", &p);
    printf("sscanf (\"%s\", \"%%p\", &p) = %d, p == %p\n", buf, res, p);
    if (res != 1 || p != NULL) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 7:\n", stdout);
  {
    short a[2] = {-1, -1};
    int res;
    res = sscanf("32767 1234", "%hd %hd", &a[0], &a[1]);
    printf("res = %d, a[0] = %d, a[1] = %d\n", res, a[0], a[1]);
    if (res != 2 || a[0] != 32767 || a[1] != 1234) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 8:\n", stdout);
  {
    double d = 123456.789;
    int res;
    res = sscanf("0x1234", "%lf", &d);
    printf("res = %d, d = %f\n", res, d);
    if (res != 1 || d != 4660) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 9:\n", stdout);
  {
    float value;
    int res;
    res = sscanf("0123", "%2f", &value);
    if (res != 1 || value != 1.0) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 10:\n", stdout);
  {
    float value;
    int res;
    res = sscanf("--", "%f", &value);
    if (res != 0) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 11:\n", stdout);
  {
    char uart[50];
    int res;
    res = sscanf("uart:16550A tx:0", "uart:%31s tx:%*u", uart);
    if (res != 1) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 12:\n", stdout);
  {
    char uart[50];
    int res;
    res = sscanf("uart:16550A", "uart:%31s tx:%*u", uart);
    if (res != 1) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  fputs("Test 13:\n", stdout);
  {
    float value;
    int res;
    res = sscanf("-InF", "%f", &value);
    if (res != 1 || isinf(value) != -1) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
    res = sscanf("+InfiNiTY", "%f", &value);
    if (res != 1 || isinf(value) != 1) {
      fputs("test failed!\n", stdout);
      result = 1;
    }
  }
  return result;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x260,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    0x3dd0(%rip),%rax
mov    (%rax),%eax
mov    %rax,-0x230(%rbp)
mov    %rsp,%rcx
mov    %rcx,-0x18(%rbp)
mov    %rax,%rdx
add    $0xf,%rdx
and    $0xfffffffffffffff0,%rdx
mov    %rsp,%rcx
sub    %rdx,%rcx
mov    %rcx,-0x228(%rbp)
mov    %rcx,%rsp
mov    %rax,-0x20(%rbp)
mov    0x3db2(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x28(%rbp)
mov    0x3d84(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x38(%rbp)
lea    0x2142(%rip),%rdi
lea    0x1de0(%rip),%rsi
lea    -0x34(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x1,%eax
je     1291 <main+0xb1>
mov    0x3d4d(%rip),%rax
mov    (%rax),%rsi
lea    0x1dbe(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x228(%rbp),%rdx
lea    0x1db2(%rip),%rdi
lea    0x1db2(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x1,%eax
jne    12d3 <main+0xf3>
mov    -0x228(%rbp),%rdi
lea    0x1d9c(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     12f0 <main+0x110>
mov    0x3cee(%rip),%rax
mov    (%rax),%rsi
lea    0x1d5f(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x228(%rbp),%rdx
lea    0x1d52(%rip),%rdi
lea    0x1d61(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    0x3ccd(%rip),%rcx
cmp    (%rcx),%eax
je     1338 <main+0x158>
mov    0x3ca6(%rip),%rax
mov    (%rax),%rsi
lea    0x1d17(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x228(%rbp),%rdx
lea    0x1d29(%rip),%rdi
lea    0x1d40(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    -0x228(%rbp),%rdi
lea    0x1d39(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     138e <main+0x1ae>
mov    0x3c50(%rip),%rax
mov    (%rax),%rsi
lea    0x1cc1(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
cmpl   $0x2,-0x8(%rbp)
jne    13f0 <main+0x210>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x1d06(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    13f0 <main+0x210>
lea    0x1d00(%rip),%rdi
lea    0x1cf0(%rip),%rsi
call   10d0 <popen@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x0,-0x30(%rbp)
jne    13eb <main+0x20b>
lea    0x1cd7(%rip),%rdi
call   10e0 <perror@plt>
movl   $0x1,-0x38(%rbp)
jmp    1472 <main+0x292>
cmpl   $0x3,-0x8(%rbp)
jne    146d <main+0x28d>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x1cbd(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    146d <main+0x28d>
mov    -0x228(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0x1c9f(%rip),%rsi
call   10f0 <sprintf@plt>
mov    -0x228(%rbp),%rdi
lea    0x1d89(%rip),%rsi
call   10d0 <popen@plt>
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
jne    1468 <main+0x288>
lea    0x1c5a(%rip),%rdi
call   10e0 <perror@plt>
movl   $0x1,-0x38(%rbp)
jmp    146d <main+0x28d>
jmp    1472 <main+0x292>
mov    -0x30(%rbp),%rax
mov    %rax,-0x238(%rbp)
lea    -0x70(%rbp),%rdx
lea    0x1c87(%rip),%rdi
lea    0x1c47(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    -0x238(%rbp),%rdi
mov    %eax,%edx
lea    -0x70(%rbp),%rcx
lea    0x1c2f(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
lea    -0x70(%rbp),%rdi
lea    0x1c53(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     14e8 <main+0x308>
mov    0x3af6(%rip),%rax
mov    (%rax),%rsi
lea    0x1b67(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x30(%rbp),%rsi
lea    0x1c25(%rip),%rdi
call   1060 <fputs@plt>
mov    -0x30(%rbp),%rsi
lea    0x1c2e(%rip),%rdi
call   1060 <fputs@plt>
mov    -0x28(%rbp),%rdi
lea    -0xb0(%rbp),%r8
lea    0x1c20(%rip),%rsi
lea    -0x78(%rbp),%rdx
lea    -0x7c(%rbp),%rcx
mov    $0x0,%al
call   1070 <fscanf@plt>
mov    %eax,-0x74(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x74(%rbp),%edx
mov    -0x78(%rbp),%ecx
movss  -0x7c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    -0xb0(%rbp),%r8
lea    0x1bf4(%rip),%rsi
mov    $0x1,%al
call   10a0 <fprintf@plt>
cmpl   $0x3,-0x74(%rbp)
jne    15a1 <main+0x3c1>
cmpl   $0x19,-0x78(%rbp)
jne    15a1 <main+0x3c1>
movss  -0x7c(%rbp),%xmm0
movss  0x1a8b(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    15a1 <main+0x3c1>
jp     15a1 <main+0x3c1>
lea    -0xb0(%rbp),%rdi
lea    0x1b7d(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     15be <main+0x3de>
mov    0x3a20(%rip),%rax
mov    (%rax),%rsi
lea    0x1a91(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x228(%rbp),%rdi
mov    -0x230(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    %rcx,-0x240(%rbp)
mov    %eax,%esi
mov    -0x28(%rbp),%rdx
call   1080 <fgets@plt>
mov    -0x240(%rbp),%rdi
mov    %rax,%rdx
lea    0x1b76(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    -0x228(%rbp),%rdi
lea    0x1a47(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     1634 <main+0x454>
mov    0x39aa(%rip),%rax
mov    (%rax),%rsi
lea    0x1a1b(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x30(%rbp),%rsi
lea    0x1b3a(%rip),%rdi
call   1060 <fputs@plt>
mov    -0x28(%rbp),%rdi
lea    -0xf0(%rbp),%r8
lea    0x1b2c(%rip),%rsi
lea    -0xb4(%rbp),%rdx
lea    -0xb8(%rbp),%rcx
mov    $0x0,%al
call   1070 <fscanf@plt>
mov    -0x30(%rbp),%rdi
mov    -0xb4(%rbp),%edx
movss  -0xb8(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
lea    -0xf0(%rbp),%rcx
lea    0x1aba(%rip),%rsi
mov    $0x1,%al
call   10a0 <fprintf@plt>
cmpl   $0x38,-0xb4(%rbp)
jne    16df <main+0x4ff>
movss  -0xb8(%rbp),%xmm0
ff
movss  0x1951(%rip),%xmm1
ucomiss %xmm1,%xmm0
jne    16df <main+0x4ff>
jp     16df <main+0x4ff>
lea    -0xf0(%rbp),%rdi
lea    0x1ac9(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     16fc <main+0x51c>
mov    0x38e2(%rip),%rax
mov    (%rax),%rsi
lea    0x1953(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x228(%rbp),%rdi
mov    -0x230(%rbp),%rax
mov    -0x30(%rbp),%rcx
mov    %rcx,-0x248(%rbp)
mov    %eax,%esi
mov    -0x28(%rbp),%rdx
call   1080 <fgets@plt>
mov    -0x248(%rbp),%rdi
mov    %rax,%rdx
lea    0x1a38(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    -0x228(%rbp),%rdi
lea    0x1a56(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     1772 <main+0x592>
mov    0x386c(%rip),%rax
mov    (%rax),%rsi
lea    0x18dd(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x30(%rbp),%rsi
lea    0x1a24(%rip),%rdi
call   1060 <fputs@plt>
movq   $0x0,-0xf8(%rbp)
mov    -0x28(%rbp),%rdi
call   10b0 <feof@plt>
mov    %eax,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x249(%rbp)
jne    17c0 <main+0x5e0>
mov    -0x28(%rbp),%rdi
call   1030 <ferror@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
mov    %al,-0x249(%rbp)
mov    -0x249(%rbp),%al
test   $0x1,%al
jne    17d3 <main+0x5f3>
jmp    1979 <main+0x799>
mov    -0xf8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0xf8(%rbp)
cmp    $0x6,%rax
jb     180f <main+0x62f>
mov    0x37cf(%rip),%rax
mov    (%rax),%rsi
lea    0x1840(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0xfc(%rbp)
ff
movb   $0x0,-0x140(%rbp)
movb   $0x0,-0x120(%rbp)
mov    -0x28(%rbp),%rdi
lea    -0x120(%rbp),%rcx
lea    -0x140(%rbp),%r8
lea    0x1996(%rip),%rsi
lea    -0xfc(%rbp),%rdx
mov    $0x0,%al
call   1070 <fscanf@plt>
mov    %eax,-0x144(%rbp)
mov    -0x28(%rbp),%rdi
lea    0x1986(%rip),%rsi
mov    $0x0,%al
call   1070 <fscanf@plt>
mov    -0x30(%rbp),%rdi
mov    -0x144(%rbp),%edx
movss  -0xfc(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
lea    -0x140(%rbp),%rcx
lea    -0x120(%rbp),%r8
lea    0x195b(%rip),%rsi
mov    $0x1,%al
call   10a0 <fprintf@plt>
mov    -0x144(%rbp),%eax
mov    -0xf8(%rbp),%rdx
sub    $0x1,%rdx
lea    0x37ef(%rip),%rcx
imul   $0x18,%rdx,%rdx
add    %rdx,%rcx
cmp    (%rcx),%eax
jne    1957 <main+0x777>
movss  -0xfc(%rbp),%xmm0
ff
mov    -0xf8(%rbp),%rcx
sub    $0x1,%rcx
lea    0x37c6(%rip),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
ucomiss 0x4(%rax),%xmm0
jne    1957 <main+0x777>
jp     1957 <main+0x777>
lea    -0x140(%rbp),%rdi
mov    -0xf8(%rbp),%rcx
sub    $0x1,%rcx
lea    0x3796(%rip),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
mov    0x10(%rax),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1957 <main+0x777>
lea    -0x120(%rbp),%rdi
mov    -0xf8(%rbp),%rcx
sub    $0x1,%rcx
lea    0x3763(%rip),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
mov    0x8(%rax),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     1974 <main+0x794>
mov    0x366a(%rip),%rax
mov    (%rax),%rsi
lea    0x16db(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
jmp    178d <main+0x5ad>
mov    -0x228(%rbp),%rdi
mov    -0x230(%rbp),%rax
movb   $0x0,(%rdi)
mov    -0x30(%rbp),%rcx
mov    %rcx,-0x258(%rbp)
mov    %eax,%esi
mov    -0x28(%rbp),%rdx
call   1080 <fgets@plt>
mov    -0x258(%rbp),%rdi
mov    %rax,%rdx
lea    0x17b8(%rip),%rsi
mov    $0x0,%al
call   10a0 <fprintf@plt>
mov    -0x228(%rbp),%rdi
lea    0x168a(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
je     19f2 <main+0x812>
mov    0x35ec(%rip),%rax
mov    (%rax),%rsi
lea    0x165d(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x30(%rbp),%rax
mov    0x35cb(%rip),%rcx
cmp    (%rcx),%rax
je     1a0f <main+0x82f>
mov    -0x30(%rbp),%rdi
call   1050 <pclose@plt>
mov    -0x30(%rbp),%rsi
lea    0x1808(%rip),%rdi
call   1060 <fputs@plt>
lea    0x1805(%rip),%rdi
lea    0x1803(%rip),%rsi
lea    -0x14c(%rbp),%rdx
lea    -0x150(%rbp),%rcx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x148(%rbp)
mov    -0x148(%rbp),%esi
mov    -0x14c(%rbp),%edx
mov    -0x150(%rbp),%ecx
lea    0x17d5(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x1,-0x148(%rbp)
jne    1a8f <main+0x8af>
cmpl   $0xffffffec,-0x14c(%rbp)
jne    1a8f <main+0x8af>
cmpl   $0x3,-0x150(%rbp)
je     1aac <main+0x8cc>
mov    0x3532(%rip),%rax
mov    (%rax),%rsi
lea    0x15a3(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x30(%rbp),%rsi
lea    0x179b(%rip),%rdi
call   1060 <fputs@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
lea    0x1782(%rip),%rdi
lea    0x1783(%rip),%rsi
lea    -0x158(%rbp),%rdx
lea    -0x160(%rbp),%rcx
lea    -0x168(%rbp),%r8
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x164(%rbp)
mov    -0x164(%rbp),%esi
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm1
ff
mov    -0x168(%rbp),%edx
lea    0x1749(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
cmpl   $0x2,-0x164(%rbp)
jne    1b86 <main+0x9a6>
movsd  -0x158(%rbp),%xmm0
ff
movsd  0x14c7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1b86 <main+0x9a6>
jp     1b86 <main+0x9a6>
movsd  -0x160(%rbp),%xmm0
ff
movsd  0x14af(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1b86 <main+0x9a6>
jp     1b86 <main+0x9a6>
cmpl   $0x6,-0x168(%rbp)
je     1ba3 <main+0x9c3>
mov    0x343b(%rip),%rax
mov    (%rax),%rsi
lea    0x14ac(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
lea    0x17f1(%rip),%rdi
lea    0x16df(%rip),%rsi
lea    -0x158(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x164(%rbp)
mov    -0x164(%rbp),%esi
movsd  -0x158(%rbp),%xmm0
ff
lea    0x16ba(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
cmpl   $0x1,-0x164(%rbp)
jne    1c0e <main+0xa2e>
movsd  -0x158(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1c0e <main+0xa2e>
jp     1c0e <main+0xa2e>
jmp    1c2b <main+0xa4b>
mov    0x33b3(%rip),%rax
mov    (%rax),%rsi
lea    0x1424(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
lea    0x1674(%rip),%rdi
lea    0x1671(%rip),%rsi
lea    -0x158(%rbp),%rdx
lea    -0x168(%rbp),%rcx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x164(%rbp)
mov    -0x164(%rbp),%esi
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x168(%rbp),%edx
lea    0x1641(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
cmpl   $0x1,-0x164(%rbp)
jne    1cb0 <main+0xad0>
movsd  -0x158(%rbp),%xmm0
ff
movsd  0x138d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1cb0 <main+0xad0>
jp     1cb0 <main+0xad0>
cmpl   $0x3,-0x168(%rbp)
je     1ccd <main+0xaed>
mov    0x3311(%rip),%rax
mov    (%rax),%rsi
lea    0x1382(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x32f4(%rip),%rax
mov    (%rax),%rsi
lea    0x15ec(%rip),%rdi
call   1060 <fputs@plt>
mov    -0x228(%rbp),%rdi
mov    $0xffffffffffffffff,%rax
mov    %rax,-0x170(%rbp)
lea    0x15d4(%rip),%rsi
xor    %eax,%eax
mov    %eax,%edx
call   10f0 <sprintf@plt>
mov    -0x228(%rbp),%rdi
lea    0x15bd(%rip),%rsi
lea    -0x170(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    -0x228(%rbp),%rsi
mov    %eax,-0x174(%rbp)
mov    -0x174(%rbp),%edx
mov    -0x170(%rbp),%rcx
lea    0x1591(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x1,-0x174(%rbp)
jne    1d67 <main+0xb87>
cmpq   $0x0,-0x170(%rbp)
je     1d84 <main+0xba4>
mov    0x325a(%rip),%rax
mov    (%rax),%rsi
lea    0x12cb(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x323d(%rip),%rax
mov    (%rax),%rsi
lea    0x1569(%rip),%rdi
call   1060 <fputs@plt>
mov    0x1268(%rip),%eax
mov    %eax,-0x178(%rbp)
lea    -0x178(%rbp),%rdx
lea    -0x178(%rbp),%rcx
add    $0x2,%rcx
lea    0x1548(%rip),%rdi
lea    0x154c(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x17c(%rbp)
mov    -0x17c(%rbp),%esi
movswl -0x178(%rbp),%edx
movswl -0x176(%rbp),%ecx
lea    0x152c(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
cmpl   $0x2,-0x17c(%rbp)
jne    1e26 <main+0xc46>
movswl -0x178(%rbp),%eax
cmp    $0x7fff,%eax
jne    1e26 <main+0xc46>
movswl -0x176(%rbp),%eax
cmp    $0x4d2,%eax
je     1e43 <main+0xc63>
mov    0x319b(%rip),%rax
mov    (%rax),%rsi
lea    0x120c(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x317e(%rip),%rax
mov    (%rax),%rsi
lea    0x14e6(%rip),%rdi
call   1060 <fputs@plt>
movsd  0x11c7(%rip),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
lea    0x14d3(%rip),%rdi
lea    0x14d3(%rip),%rsi
lea    -0x188(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x18c(%rbp)
mov    -0x18c(%rbp),%esi
movsd  -0x188(%rbp),%xmm0
ff
lea    0x14ae(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
cmpl   $0x1,-0x18c(%rbp)
jne    1ed9 <main+0xcf9>
movsd  -0x188(%rbp),%xmm0
ff
movsd  0x116c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1ed9 <main+0xcf9>
jp     1ed9 <main+0xcf9>
jmp    1ef6 <main+0xd16>
mov    0x30e8(%rip),%rax
mov    (%rax),%rsi
lea    0x1159(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x30cb(%rip),%rax
mov    (%rax),%rsi
lea    0x1459(%rip),%rdi
call   1060 <fputs@plt>
lea    0x1456(%rip),%rdi
lea    0x1454(%rip),%rsi
lea    -0x190(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x194(%rbp)
cmpl   $0x1,-0x194(%rbp)
jne    1f64 <main+0xd84>
movss  -0x190(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0x10e9(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1f64 <main+0xd84>
jp     1f64 <main+0xd84>
jmp    1f81 <main+0xda1>
mov    0x305d(%rip),%rax
mov    (%rax),%rsi
lea    0x10ce(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x3040(%rip),%rax
mov    (%rax),%rsi
lea    0x13e0(%rip),%rdi
call   1060 <fputs@plt>
lea    0x13de(%rip),%rdi
lea    0x13da(%rip),%rsi
lea    -0x198(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x19c(%rbp)
cmpl   $0x0,-0x19c(%rbp)
je     1fe3 <main+0xe03>
mov    0x2ffb(%rip),%rax
mov    (%rax),%rsi
lea    0x106c(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x2fde(%rip),%rax
mov    (%rax),%rsi
lea    0x138e(%rip),%rdi
call   1060 <fputs@plt>
lea    -0x1d0(%rbp),%rdx
lea    0x1385(%rip),%rdi
lea    0x138f(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x1d4(%rbp)
cmpl   $0x1,-0x1d4(%rbp)
je     2045 <main+0xe65>
mov    0x2f99(%rip),%rax
mov    (%rax),%rsi
lea    0x100a(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x2f7c(%rip),%rax
mov    (%rax),%rsi
lea    0x1358(%rip),%rdi
call   1060 <fputs@plt>
lea    -0x210(%rbp),%rdx
lea    0x134f(%rip),%rdi
lea    0x132d(%rip),%rsi
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x214(%rbp)
cmpl   $0x1,-0x214(%rbp)
je     20a7 <main+0xec7>
mov    0x2f37(%rip),%rax
mov    (%rax),%rsi
lea    0xfa8(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    0x2f1a(%rip),%rax
mov    (%rax),%rsi
lea    0x130c(%rip),%rdi
call   1060 <fputs@plt>
lea    0x130a(%rip),%rdi
lea    0x12b4(%rip),%rsi
lea    -0x218(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x21c(%rbp)
cmpl   $0x1,-0x21c(%rbp)
jne    2102 <main+0xf22>
movss  -0x218(%rbp),%xmm0
ff
call   1100 <isinf@plt>
cmp    $0xffffffff,%eax
je     211f <main+0xf3f>
mov    0x2ebf(%rip),%rax
mov    (%rax),%rsi
lea    0xf30(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
lea    0x12ad(%rip),%rdi
lea    0x1252(%rip),%rsi
lea    -0x218(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
mov    %eax,-0x21c(%rbp)
cmpl   $0x1,-0x21c(%rbp)
jne    2164 <main+0xf84>
movss  -0x218(%rbp),%xmm0
ff
call   1100 <isinf@plt>
cmp    $0x1,%eax
je     2181 <main+0xfa1>
mov    0x2e5d(%rip),%rax
mov    (%rax),%rsi
lea    0xece(%rip),%rdi
call   1060 <fputs@plt>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,%rsp
mov    -0x4(%rbp),%eax
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %rsi,%r14
mov    %edi,%r12d
mov    0x2dcf(%rip),%rax
mov    (%rax),%eax
mov    %rsp,%r13
mov    %rax,-0xa8(%rbp)
add    $0xf,%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%r13
mov    %r13,%rsp
mov    0x2dc6(%rip),%rax
mov    (%rax),%rax
mov    %rax,-0x40(%rbp)
mov    0x2d98(%rip),%r15
mov    (%r15),%rax
mov    %rax,-0x38(%rbp)
lea    0x114d(%rip),%rdi
lea    0xdeb(%rip),%rsi
xor    %ebx,%ebx
lea    -0xb4(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
je     1278 <main+0x98>
mov    (%r15),%rcx
lea    0xdcf(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%ebx
lea    0xdc2(%rip),%rdi
lea    0xdc2(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
jne    12a9 <main+0xc9>
lea    0xdb4(%rip),%rsi
mov    %r13,%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     12c7 <main+0xe7>
mov    (%r15),%rcx
lea    0xd80(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%ebx
lea    0xd72(%rip),%rdi
lea    0xd81(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    0x2cfa(%rip),%rcx
cmp    (%rcx),%eax
je     1308 <main+0x128>
mov    (%r15),%rcx
lea    0xd3f(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%ebx
lea    0xd50(%rip),%rdi
lea    0xd67(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
lea    0xd64(%rip),%rsi
mov    %r13,%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1352 <main+0x172>
mov    (%r15),%rcx
lea    0xcf5(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%ebx
cmp    $0x3,%r12d
je     139b <main+0x1bb>
cmp    $0x2,%r12d
jne    1396 <main+0x1b6>
mov    0x8(%r14),%rdi
lea    0xd34(%rip),%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
jne    1396 <main+0x1b6>
lea    0xd33(%rip),%rdi
lea    0xd23(%rip),%rsi
call   10c0 <popen@plt>
mov    %rax,%rcx
mov    %rax,-0x38(%rbp)
test   %rax,%rax
je     1e74 <main+0xc94>
mov    %ebx,%r12d
jmp    13e2 <main+0x202>
mov    0x8(%r14),%rdi
lea    0xd10(%rip),%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
mov    %ebx,%r12d
jne    13e2 <main+0x202>
mov    0x10(%r14),%rdx
lea    0xcff(%rip),%rsi
mov    %r13,%rdi
call   10e0 <sprintf@plt>
lea    0xded(%rip),%rsi
mov    %r13,%rdi
call   10c0 <popen@plt>
test   %rax,%rax
je     1e7c <main+0xc9c>
mov    %rax,-0x40(%rbp)
lea    0xd16(%rip),%r14
lea    0xcd6(%rip),%rsi
lea    -0x80(%rbp),%rbx
mov    %r14,%rdi
mov    %rbx,%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
lea    0xcc1(%rip),%rsi
mov    -0x38(%rbp),%rdi
mov    %eax,%edx
mov    %rbx,%rcx
xor    %eax,%eax
call   1090 <fprintf@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1447 <main+0x267>
mov    (%r15),%rcx
lea    0xc01(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r12d
lea    0xcba(%rip),%rdi
mov    $0x18,%esi
mov    $0x1,%edx
mov    -0x38(%rbp),%r15
mov    %r15,%rcx
call   10f0 <fwrite@plt>
lea    0xcb6(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %r15,%rcx
call   10f0 <fwrite@plt>
lea    0xca6(%rip),%rsi
lea    -0xa0(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
lea    -0x80(%rbp),%r14
mov    -0x40(%rbp),%rdi
mov    %r14,%r8
xor    %eax,%eax
call   1060 <fscanf@plt>
mov    %eax,%ebx
mov    -0xa0(%rbp),%ecx
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc78(%rip),%rsi
mov    %r15,%rdi
mov    0x2b05(%rip),%r15
mov    %eax,%edx
mov    %r14,%r8
mov    $0x1,%al
call   1090 <fprintf@plt>
cmp    $0x3,%ebx
jne    1502 <main+0x322>
cmpl   $0x19,-0xa0(%rbp)
jne    1502 <main+0x322>
movss  -0x2c(%rbp),%xmm0
ucomiss 0xb17(%rip),%xmm0
jne    1502 <main+0x322>
jp     1502 <main+0x322>
lea    0xc0b(%rip),%rsi
lea    -0x80(%rbp),%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1521 <main+0x341>
mov    (%r15),%rcx
lea    0xb27(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r12d
mov    %r13,%rdi
mov    -0xa8(%rbp),%rsi
mov    -0x40(%rbp),%rdx
call   1070 <fgets@plt>
lea    0xc1e(%rip),%rsi
mov    -0x38(%rbp),%rdi
mov    %rax,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0xaef(%rip),%rsi
mov    %r13,%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     157c <main+0x39c>
mov    (%r15),%rcx
lea    0xacc(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r12d
lea    0xbe6(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    -0x38(%rbp),%rbx
mov    %rbx,%rcx
call   10f0 <fwrite@plt>
lea    0xbd2(%rip),%rsi
lea    -0xa0(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
lea    -0x80(%rbp),%r14
mov    -0x40(%rbp),%rdi
mov    %r14,%r8
xor    %eax,%eax
call   1060 <fscanf@plt>
mov    -0xa0(%rbp),%edx
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xb66(%rip),%rsi
mov    %rbx,%rdi
mov    %r14,%rcx
mov    $0x1,%al
call   1090 <fprintf@plt>
cmpl   $0x38,-0xa0(%rbp)
jne    160e <main+0x42e>
movss  -0x2c(%rbp),%xmm0
ucomiss 0xa0f(%rip),%xmm0
jne    160e <main+0x42e>
jp     160e <main+0x42e>
lea    0xb89(%rip),%rsi
lea    -0x80(%rbp),%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     162d <main+0x44d>
mov    (%r15),%rcx
lea    0xa1b(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r12d
mov    %r13,%rdi
mov    -0xa8(%rbp),%rsi
mov    -0x40(%rbp),%rbx
mov    %rbx,%rdx
call   1070 <fgets@plt>
lea    0xb0f(%rip),%rsi
mov    -0x38(%rbp),%rdi
mov    %rax,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0xb2d(%rip),%rsi
mov    %r13,%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     168b <main+0x4ab>
mov    (%r15),%rcx
lea    0x9bd(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r12d
mov    %r12d,-0x44(%rbp)
mov    %r13,-0xb0(%rbp)
lea    0xaf4(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    -0x38(%rbp),%rcx
call   10f0 <fwrite@plt>
mov    %rbx,%rdi
call   10a0 <feof@plt>
test   %eax,%eax
jne    1803 <main+0x623>
lea    0x26b9(%rip),%r12
xor    %r14d,%r14d
nopw   0x0(%rax,%rax,1)
mov    %rbx,%rdi
call   1030 <ferror@plt>
test   %eax,%eax
jne    1803 <main+0x623>
cmp    $0x6,%r14
jb     170d <main+0x52d>
mov    0x28db(%rip),%rax
mov    (%rax),%rcx
mov    $0xd,%esi
mov    $0x1,%edx
lea    0x932(%rip),%rdi
call   10f0 <fwrite@plt>
movl   $0x1,-0x44(%rbp)
movl   $0x0,-0x2c(%rbp)
movb   $0x0,-0xa0(%rbp)
movb   $0x0,-0x80(%rbp)
mov    %rbx,%rdi
lea    0xa9e(%rip),%rsi
lea    -0x2c(%rbp),%rdx
lea    -0x80(%rbp),%r13
mov    %r13,%rcx
lea    -0xa0(%rbp),%r15
mov    %r15,%r8
xor    %eax,%eax
call   1060 <fscanf@plt>
mov    %rbx,%rdi
mov    %eax,%ebx
lea    0xa85(%rip),%rsi
xor    %eax,%eax
call   1060 <fscanf@plt>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x38(%rbp),%rdi
lea    0xa71(%rip),%rsi
mov    %ebx,%edx
mov    %r15,%rcx
mov    %r13,%r8
mov    $0x1,%al
call   1090 <fprintf@plt>
cmp    -0x10(%r12),%ebx
jne    17c0 <main+0x5e0>
movss  -0x2c(%rbp),%xmm0
ucomiss -0xc(%r12),%xmm0
jne    17c0 <main+0x5e0>
jp     17c0 <main+0x5e0>
mov    (%r12),%rsi
lea    -0xa0(%rbp),%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
jne    17c0 <main+0x5e0>
mov    -0x8(%r12),%rsi
lea    -0x80(%rbp),%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
je     17e7 <main+0x607>
nopl   0x0(%rax)
mov    0x2801(%rip),%rax
mov    (%rax),%rcx
mov    $0xd,%esi
mov    $0x1,%edx
lea    0x858(%rip),%rdi
call   10f0 <fwrite@plt>
movl   $0x1,-0x44(%rbp)
mov    -0x40(%rbp),%rbx
mov    %rbx,%rdi
call   10a0 <feof@plt>
add    $0x18,%r12
add    $0x1,%r14
test   %eax,%eax
je     16d0 <main+0x4f0>
mov    -0xb0(%rbp),%r12
movb   $0x0,(%r12)
mov    %r12,%rdi
mov    -0xa8(%rbp),%rsi
mov    %rbx,%rdx
call   1070 <fgets@plt>
lea    0x931(%rip),%rsi
mov    -0x38(%rbp),%r13
mov    %r13,%rdi
mov    %rax,%rdx
xor    %eax,%eax
call   1090 <fprintf@plt>
lea    0x800(%rip),%rsi
mov    %r12,%rdi
call   1080 <strcmp@plt>
test   %rax,%rax
mov    0x2776(%rip),%r14
mov    -0x44(%rbp),%r15d
je     1877 <main+0x697>
mov    (%r14),%rcx
lea    0x7d1(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
cmp    (%r14),%r13
je     1884 <main+0x6a4>
mov    %r13,%rdi
call   1050 <pclose@plt>
lea    0x987(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %r13,%rcx
call   10f0 <fwrite@plt>
lea    0x977(%rip),%rdi
lea    0x975(%rip),%rsi
lea    -0x80(%rbp),%rdx
lea    -0xa0(%rbp),%rcx
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
mov    -0x80(%rbp),%edx
mov    -0xa0(%rbp),%ecx
lea    0x957(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x1,%ebx
jne    18ec <main+0x70c>
cmpl   $0xffffffec,-0x80(%rbp)
jne    18ec <main+0x70c>
cmpl   $0x3,-0xa0(%rbp)
je     190b <main+0x72b>
mov    (%r14),%rcx
lea    0x73d(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
lea    0x930(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %r13,%rcx
call   10f0 <fwrite@plt>
movq   $0x0,-0x80(%rbp)
movq   $0x0,-0xa0(%rbp)
lea    0x90d(%rip),%rdi
lea    0x90e(%rip),%rsi
lea    -0x80(%rbp),%rdx
lea    -0xa0(%rbp),%rcx
lea    -0x2c(%rbp),%r8
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
movsd  -0x80(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm1
ff
mov    -0x2c(%rbp),%edx
lea    0x8ea(%rip),%rdi
mov    %eax,%esi
mov    $0x2,%al
call   1040 <printf@plt>
cmp    $0x2,%ebx
jne    19ad <main+0x7cd>
movsd  -0x80(%rbp),%xmm0
ucomisd 0x681(%rip),%xmm0
jne    19ad <main+0x7cd>
jp     19ad <main+0x7cd>
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd 0x675(%rip),%xmm0
jne    19ad <main+0x7cd>
jp     19ad <main+0x7cd>
cmpl   $0x6,-0x2c(%rbp)
je     19cc <main+0x7ec>
mov    (%r14),%rcx
lea    0x67c(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
lea    0x9b8(%rip),%rdi
lea    0x8a6(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
movsd  -0x80(%rbp),%xmm0
lea    0x891(%rip),%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1040 <printf@plt>
cmp    $0x1,%ebx
jne    1a12 <main+0x832>
movsd  -0x80(%rbp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1a12 <main+0x832>
jnp    1a31 <main+0x851>
mov    (%r14),%rcx
lea    0x617(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
lea    0x85e(%rip),%rdi
lea    0x85b(%rip),%rsi
lea    -0x80(%rbp),%rdx
lea    -0x2c(%rbp),%rcx
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
movsd  -0x80(%rbp),%xmm0
mov    -0x2c(%rbp),%edx
lea    0x841(%rip),%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1040 <printf@plt>
cmp    $0x1,%ebx
jne    1a84 <main+0x8a4>
movsd  -0x80(%rbp),%xmm0
ucomisd 0x5a6(%rip),%xmm0
jne    1a84 <main+0x8a4>
jp     1a84 <main+0x8a4>
cmpl   $0x3,-0x2c(%rbp)
je     1aa3 <main+0x8c3>
mov    (%r14),%rcx
lea    0x5a5(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x80d(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
movq   $0xffffffffffffffff,-0x80(%rbp)
ff
lea    0x7f8(%rip),%rbx
mov    %r12,%rdi
mov    %rbx,%rsi
xor    %edx,%edx
call   10e0 <sprintf@plt>
lea    -0x80(%rbp),%rdx
mov    %r12,%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
mov    -0x80(%rbp),%rcx
lea    0x7d0(%rip),%rdi
mov    %r12,%rsi
mov    %eax,%edx
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x1,%ebx
jne    1b0e <main+0x92e>
cmpq   $0x0,-0x80(%rbp)
je     1b2d <main+0x94d>
mov    (%r14),%rcx
lea    0x51b(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x7b7(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
movl   $0xffffffff,-0x80(%rbp)
lea    -0x7e(%rbp),%rcx
lea    0x79f(%rip),%rdi
lea    0x7a3(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
movswl -0x80(%rbp),%edx
movswl -0x7e(%rbp),%ecx
lea    0x78f(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x2,%ebx
jne    1b9f <main+0x9bf>
movzwl -0x80(%rbp),%eax
cmp    $0x7fff,%eax
jne    1b9f <main+0x9bf>
movzwl -0x7e(%rbp),%eax
cmp    $0x4d2,%eax
je     1bbe <main+0x9de>
mov    (%r14),%rcx
lea    0x48a(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x762(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
movabs $0x40fe240c9fbe76c9,%rax
24 fe 40
mov    %rax,-0x80(%rbp)
lea    0x747(%rip),%rdi
lea    0x747(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
mov    %eax,%ebx
movsd  -0x80(%rbp),%xmm0
lea    0x732(%rip),%rdi
mov    %eax,%esi
mov    $0x1,%al
call   1040 <printf@plt>
cmp    $0x1,%ebx
jne    1c2b <main+0xa4b>
movsd  -0x80(%rbp),%xmm0
ucomisd 0x401(%rip),%xmm0
jne    1c2b <main+0xa4b>
jnp    1c4a <main+0xa6a>
mov    (%r14),%rcx
lea    0x3fe(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x6fc(%rip),%rdi
mov    $0x8,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
lea    0x6ef(%rip),%rdi
lea    0x6ed(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
jne    1c91 <main+0xab1>
movss  -0x80(%rbp),%xmm0
ucomiss 0x37b(%rip),%xmm0
jne    1c91 <main+0xab1>
jnp    1cb0 <main+0xad0>
mov    (%r14),%rcx
lea    0x398(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x6a8(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
lea    0x69c(%rip),%rdi
lea    0x698(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
test   %eax,%eax
je     1d05 <main+0xb25>
mov    (%r14),%rcx
lea    0x343(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x663(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
lea    0x657(%rip),%rdi
lea    0x661(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
je     1d5b <main+0xb7b>
mov    (%r14),%rcx
lea    0x2ed(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x639(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
lea    0x62d(%rip),%rdi
lea    0x60b(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
je     1db1 <main+0xbd1>
mov    (%r14),%rcx
lea    0x297(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    (%r14),%rcx
lea    0x5f9(%rip),%rdi
mov    $0x9,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
lea    0x5ed(%rip),%rdi
lea    0x597(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
jne    1df7 <main+0xc17>
movss  -0x80(%rbp),%xmm0
call   1100 <isinf@plt>
cmp    $0xffffffff,%eax
je     1e16 <main+0xc36>
mov    (%r14),%rcx
lea    0x232(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
lea    0x5a6(%rip),%rdi
lea    0x54b(%rip),%rsi
lea    -0x80(%rbp),%rdx
xor    %eax,%eax
call   10b0 <sscanf@plt>
cmp    $0x1,%eax
jne    1e43 <main+0xc63>
movss  -0x80(%rbp),%xmm0
call   1100 <isinf@plt>
cmp    $0x1,%eax
je     1e62 <main+0xc82>
mov    (%r14),%rcx
lea    0x1e6(%rip),%rdi
mov    $0xd,%esi
mov    $0x1,%edx
call   10f0 <fwrite@plt>
mov    $0x1,%r15d
mov    %r15d,%eax
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %eax,%eax
mov    %rax,-0x38(%rbp)
jmp    1e82 <main+0xca2>
xor    %eax,%eax
mov    %rax,-0x40(%rbp)
lea    0x21d(%rip),%rdi
call   10d0 <perror@plt>
mov    $0x1,%r12d
jmp    13e2 <main+0x202>

LLVM IR (-O0):
%struct.anon = type { i32, float, i8*, i8* }
@BUFSIZ = global i32 0
@stdin = global i32* null
@stdout = global i32* null
@.str = [2 x i8] c"0\00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [14 x i8] c"test failed!\0A\00"
@.str.3 = [7 x i8] c"08905x\00"
@.str.4 = [8 x i8] c"%9[0-9]\00"
@.str.5 = [6 x i8] c"08905\00"
@.str.6 = [1 x i8] zeroinitializer
@.str.7 = [9 x i8] c"%10[a-z]\00"
@EOF = global i32 0
@.str.8 = [30 x i8] c"conversion] Zero flag Ze]ro#\0A\00"
@.str.9 = [14 x i8] c"%*[^]] %[^#]\0A\00"
@.str.10 = [18 x i8] c"] Zero flag Ze]ro\00"
@.str.11 = [7 x i8] c"-opipe\00"
@.str.12 = [9 x i8] c"/bin/cat\00"
@.str.13 = [2 x i8] c"w\00"
@.str.14 = [16 x i8] c"popen: /bin/cat\00"
@.str.15 = [7 x i8] c"-ipipe\00"
@.str.16 = [12 x i8] c"/bin/cat %s\00"
@.str.17 = [2 x i8] c"r\00"
@.str.18 = [54 x i8] c"sscanf (\22thompson\22, \22%%s\22, name) == %d, name == \22%s\22\0A\00"
@.str.19 = [9 x i8] c"thompson\00"
@.str.20 = [3 x i8] c"%s\00"
@.str.21 = [25 x i8] c"Testing scanf (vfscanf)\0A\00"
@.str.22 = [9 x i8] c"Test 1:\0A\00"
@.str.23 = [7 x i8] c"%d%f%s\00"
@.str.24 = [40 x i8] c"n = %d, i = %d, x = %f, name = \22%.50s\22\0A\00"
@.str.25 = [16 x i8] c"Residual: \22%s\22\0A\00"
@.str.26 = [2 x i8] c"\0A\00"
@.str.27 = [9 x i8] c"Test 2:\0A\00"
@.str.28 = [23 x i8] c"%2d%f%*d %[0123456789]\00"
@.str.29 = [32 x i8] c"i = %d, x = %f, name = \22%.50s\22\0A\00"
@.str.30 = [3 x i8] c"56\00"
@.str.31 = [5 x i8] c"a72\0A\00"
@.str.32 = [9 x i8] c"Test 3:\0A\00"
@main.ok = internal global [6 x %struct.anon] [%struct.anon { i32 3, float 2.000000e+00, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i32 0, i32 0) }, %struct.anon { i32 2, float 0xC0299999A0000000, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0) }, %struct.anon { i32 0, float 0.000000e+00, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0) }, %struct.anon { i32 3, float 1.000000e+01, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.37, i32 0, i32 0) }, %struct.anon { i32 3, float 1.000000e+02, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.38, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.39, i32 0, i32 0) }, %struct.anon { i32 -1, float 0.000000e+00, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0) }]
@.str.33 = [7 x i8] c"quarts\00"
@.str.34 = [4 x i8] c"oil\00"
@.str.35 = [8 x i8] c"degrees\00"
@.str.36 = [4 x i8] c"LBS\00"
@.str.37 = [11 x i8] c"fertilizer\00"
@.str.38 = [4 x i8] c"rgs\00"
@.str.39 = [7 x i8] c"energy\00"
@.str.40 = [15 x i8] c"%f%20s of %20s\00"
@.str.41 = [7 x i8] c"%*[^\0A]\00"
@.str.42 = [53 x i8] c"count = %d, quant = %f, item = %.21s, units = %.21s\0A\00"
@.str.43 = [9 x i8] c"Test 4:\0A\00"
@.str.44 = [5 x i8] c"-242\00"
@.str.45 = [6 x i8] c"%3o%n\00"
@.str.46 = [28 x i8] c"res = %d, val = %d, n = %d\0A\00"
@.str.47 = [9 x i8] c"Test 5:\0A\00"
@.str.48 = [8 x i8] c"1234567\00"
@.str.49 = [11 x i8] c"%3lg%3lg%n\00"
@.str.50 = [34 x i8] c"res = %d, a = %g, b = %g, n = %d\0A\00"
@.str.51 = [4 x i8] c"%lg\00"
@.str.52 = [18 x i8] c"res = %d, a = %g\0A\00"
@.str.53 = [4 x i8] c"1e3\00"
@.str.54 = [6 x i8] c"%lg%n\00"
@.str.55 = [26 x i8] c"res = %d, a = %g, n = %d\0A\00"
@.str.56 = [9 x i8] c"Test 6:\0A\00"
@.str.57 = [3 x i8] c"%p\00"
@.str.58 = [40 x i8] c"sscanf (\22%s\22, \22%%p\22, &p) = %d, p == %p\0A\00"
@.str.59 = [9 x i8] c"Test 7:\0A\00"
@__const.main.a = [2 x i16] [i16 -1, i16 -1]
@.str.60 = [11 x i8] c"32767 1234\00"
@.str.61 = [8 x i8] c"%hd %hd\00"
@.str.62 = [32 x i8] c"res = %d, a[0] = %d, a[1] = %d\0A\00"
@.str.63 = [9 x i8] c"Test 8:\0A\00"
@.str.64 = [7 x i8] c"0x1234\00"
@.str.65 = [4 x i8] c"%lf\00"
@.str.66 = [18 x i8] c"res = %d, d = %f\0A\00"
@.str.67 = [9 x i8] c"Test 9:\0A\00"
@.str.68 = [5 x i8] c"0123\00"
@.str.69 = [4 x i8] c"%2f\00"
@.str.70 = [10 x i8] c"Test 10:\0A\00"
@.str.71 = [3 x i8] c"--\00"
@.str.72 = [3 x i8] c"%f\00"
@.str.73 = [10 x i8] c"Test 11:\0A\00"
@.str.74 = [17 x i8] c"uart:16550A tx:0\00"
@.str.75 = [17 x i8] c"uart:%31s tx:%*u\00"
@.str.76 = [10 x i8] c"Test 12:\0A\00"
@.str.77 = [12 x i8] c"uart:16550A\00"
@.str.78 = [10 x i8] c"Test 13:\0A\00"
@.str.79 = [5 x i8] c"-InF\00"
@.str.80 = [10 x i8] c"+InfiNiTY\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8*
%7 = alloca i64
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32
%11 = alloca i32
%12 = alloca [50 x i8]
%13 = alloca i32
%14 = alloca i32
%15 = alloca float
%16 = alloca [50 x i8]
%17 = alloca i32
%18 = alloca float
%19 = alloca [50 x i8]
%20 = alloca i64
%21 = alloca float
%22 = alloca [21 x i8]
%23 = alloca [21 x i8]
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca double
%29 = alloca double
%30 = alloca i32
%31 = alloca i32
%32 = alloca i8*
%33 = alloca i32
%34 = alloca [2 x i16]
%35 = alloca i32
%36 = alloca double
%37 = alloca i32
%38 = alloca float
%39 = alloca i32
%40 = alloca float
%41 = alloca i32
%42 = alloca [50 x i8]
%43 = alloca i32
%44 = alloca [50 x i8]
%45 = alloca i32
%46 = alloca float
%47 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%48 = load i32, i32* @BUFSIZ
%49 = zext i32 %48 to i64
%50 = call i8* @llvm.stacksave()
store i8* %50, i8** %6
%51 = alloca i8, i64 %49
store i64 %49, i64* %7
%52 = load i32*, i32** @stdin
store i32* %52, i32** %8
%53 = load i32*, i32** @stdout
store i32* %53, i32** %9
store i32 0, i32* %11
%54 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %10)
%55 = icmp ne i32 %54, 1
br i1 %55, label %56, label %59
56: ; preds = %2
%57 = load i32*, i32** @stdout
%58 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %57)
store i32 1, i32* %11
br label %59
59: ; preds = %56, %2
%60 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i8* %51)
%61 = icmp ne i32 %60, 1
br i1 %61, label %65, label %62
62: ; preds = %59
%63 = call i64 @strcmp(i8* %51, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
%64 = icmp ne i64 %63, 0
br i1 %64, label %65, label %68
65: ; preds = %62, %59
%66 = load i32*, i32** @stdout
%67 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %66)
store i32 1, i32* %11
br label %68
68: ; preds = %65, %62
%69 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i8* %51)
%70 = load i32, i32* @EOF
%71 = icmp ne i32 %69, %70
br i1 %71, label %72, label %75
72: ; preds = %68
%73 = load i32*, i32** @stdout
%74 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %73)
store i32 1, i32* %11
br label %75
75: ; preds = %72, %68
%76 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), i8* %51)
%77 = call i64 @strcmp(i8* %51, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%78 = icmp ne i64 %77, 0
br i1 %78, label %79, label %82
79: ; preds = %75
%80 = load i32*, i32** @stdout
%81 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %80)
store i32 1, i32* %11
br label %82
82: ; preds = %79, %75
%83 = load i32, i32* %4
%84 = icmp eq i32 %83, 2
br i1 %84, label %85, label %98
85: ; preds = %82
%86 = load i8**, i8*** %5
%87 = getelementptr inbounds i8*, i8** %86, i64 1
%88 = load i8*, i8** %87
%89 = call i64 @strcmp(i8* %88, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%90 = icmp ne i64 %89, 0
br i1 %90, label %98, label %91
91: ; preds = %85
%92 = call i32* @popen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0))
store i32* %92, i32** %9
%93 = load i32*, i32** %9
%94 = icmp eq i32* %93, null
br i1 %94, label %95, label %97
95: ; preds = %91
%96 = call i32 @perror(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.14, i64 0, i64 0))
store i32 1, i32* %11
br label %97
97: ; preds = %95, %91
br label %119
98: ; preds = %85, %82
%99 = load i32, i32* %4
%100 = icmp eq i32 %99, 3
br i1 %100, label %101, label %118
101: ; preds = %98
%102 = load i8**, i8*** %5
%103 = getelementptr inbounds i8*, i8** %102, i64 1
%104 = load i8*, i8** %103
%105 = call i64 @strcmp(i8* %104, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
%106 = icmp ne i64 %105, 0
br i1 %106, label %118, label %107
107: ; preds = %101
%108 = load i8**, i8*** %5
%109 = getelementptr inbounds i8*, i8** %108, i64 2
%110 = load i8*, i8** %109
%111 = call i32 @sprintf(i8* %51, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0), i8* %110)
%112 = call i32* @popen(i8* %51, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
store i32* %112, i32** %8
%113 = load i32*, i32** %8
%114 = icmp eq i32* %113, null
br i1 %114, label %115, label %117
115: ; preds = %107
%116 = call i32 @perror(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.14, i64 0, i64 0))
store i32 1, i32* %11
br label %117
117: ; preds = %115, %107
br label %118
118: ; preds = %117, %101, %98
br label %119
119: ; preds = %118, %97
%120 = load i32*, i32** %9
%121 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%122 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i8* %121)
%123 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%124 = call i32 (i32*, i8*, ...) @fprintf(i32* %120, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.18, i64 0, i64 0), i32 %122, i8* %123)
%125 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%126 = call i64 @strcmp(i8* %125, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
%127 = icmp ne i64 %126, 0
br i1 %127, label %128, label %131
128: ; preds = %119
%129 = load i32*, i32** @stdout
%130 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %129)
store i32 1, i32* %11
br label %131
131: ; preds = %128, %119
%132 = load i32*, i32** %9
%133 = call i32 @fputs(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), i32* %132)
%134 = load i32*, i32** %9
%135 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0), i32* %134)
%136 = load i32*, i32** %8
%137 = getelementptr inbounds [50 x i8], [50 x i8]* %16, i64 0, i64 0
%138 = call i32 (i32*, i8*, ...) @fscanf(i32* %136, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.23, i64 0, i64 0), i32* %14, float* %15, i8* %137)
store i32 %138, i32* %13
%139 = load i32*, i32** %9
%140 = load i32, i32* %13
%141 = load i32, i32* %14
%142 = load float, float* %15
%143 = fpext float %142 to double
%144 = getelementptr inbounds [50 x i8], [50 x i8]* %16, i64 0, i64 0
%145 = call i32 (i32*, i8*, ...) @fprintf(i32* %139, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.24, i64 0, i64 0), i32 %140, i32 %141, double %143, i8* %144)
%146 = load i32, i32* %13
%147 = icmp ne i32 %146, 3
br i1 %147, label %158, label %148
148: ; preds = %131
%149 = load i32, i32* %14
%150 = icmp ne i32 %149, 25
br i1 %150, label %158, label %151
151: ; preds = %148
%152 = load float, float* %15
%153 = fcmp une float %152, 0x4015BA5E40000000
br i1 %153, label %158, label %154
154: ; preds = %151
%155 = getelementptr inbounds [50 x i8], [50 x i8]* %16, i64 0, i64 0
%156 = call i64 @strcmp(i8* %155, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
%157 = icmp ne i64 %156, 0
br i1 %157, label %158, label %161
158: ; preds = %154, %151, %148, %131
%159 = load i32*, i32** @stdout
%160 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %159)
store i32 1, i32* %11
br label %161
161: ; preds = %158, %154
%162 = load i32*, i32** %9
%163 = trunc i64 %49 to i32
%164 = load i32*, i32** %8
%165 = call i8* @fgets(i8* %51, i32 %163, i32* %164)
%166 = call i32 (i32*, i8*, ...) @fprintf(i32* %162, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8* %165)
%167 = call i64 @strcmp(i8* %51, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
%168 = icmp ne i64 %167, 0
br i1 %168, label %169, label %172
169: ; preds = %161
%170 = load i32*, i32** @stdout
%171 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %170)
store i32 1, i32* %11
br label %172
172: ; preds = %169, %161
%173 = load i32*, i32** %9
%174 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.27, i64 0, i64 0), i32* %173)
%175 = load i32*, i32** %8
%176 = getelementptr inbounds [50 x i8], [50 x i8]* %19, i64 0, i64 0
%177 = call i32 (i32*, i8*, ...) @fscanf(i32* %175, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.28, i64 0, i64 0), i32* %17, float* %18, i8* %176)
%178 = load i32*, i32** %9
%179 = load i32, i32* %17
%180 = load float, float* %18
%181 = fpext float %180 to double
%182 = getelementptr inbounds [50 x i8], [50 x i8]* %19, i64 0, i64 0
%183 = call i32 (i32*, i8*, ...) @fprintf(i32* %178, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.29, i64 0, i64 0), i32 %179, double %181, i8* %182)
%184 = load i32, i32* %17
%185 = icmp ne i32 %184, 56
br i1 %185, label %193, label %186
186: ; preds = %172
%187 = load float, float* %18
%188 = fcmp une float %187, 7.890000e+02
br i1 %188, label %193, label %189
189: ; preds = %186
%190 = getelementptr inbounds [50 x i8], [50 x i8]* %19, i64 0, i64 0
%191 = call i64 @strcmp(i8* %190, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.30, i64 0, i64 0))
%192 = icmp ne i64 %191, 0
br i1 %192, label %193, label %196
193: ; preds = %189, %186, %172
%194 = load i32*, i32** @stdout
%195 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %194)
store i32 1, i32* %11
br label %196
196: ; preds = %193, %189
%197 = load i32*, i32** %9
%198 = trunc i64 %49 to i32
%199 = load i32*, i32** %8
%200 = call i8* @fgets(i8* %51, i32 %198, i32* %199)
%201 = call i32 (i32*, i8*, ...) @fprintf(i32* %197, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8* %200)
%202 = call i64 @strcmp(i8* %51, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i64 0, i64 0))
%203 = icmp ne i64 %202, 0
br i1 %203, label %204, label %207
204: ; preds = %196
%205 = load i32*, i32** @stdout
%206 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %205)
store i32 1, i32* %11
br label %207
207: ; preds = %204, %196
%208 = load i32*, i32** %9
%209 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.32, i64 0, i64 0), i32* %208)
store i64 0, i64* %20
br label %210
210: ; preds = %280, %207
%211 = load i32*, i32** %8
%212 = call i32 @feof(i32* %211)
%213 = icmp ne i32 %212, 0
br i1 %213, label %219, label %214
214: ; preds = %210
%215 = load i32*, i32** %8
%216 = call i32 @ferror(i32* %215)
%217 = icmp ne i32 %216, 0
%218 = xor i1 %217, true
br label %219
219: ; preds = %214, %210
%220 = phi i1 [ false, %210 ], [ %218, %214 ]
br i1 %220, label %221, label %281
221: ; preds = %219
%222 = load i64, i64* %20
%223 = add i64 %222, 1
store i64 %223, i64* %20
%224 = icmp uge i64 %222, 6
br i1 %224, label %225, label %228
225: ; preds = %221
%226 = load i32*, i32** @stdout
%227 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %226)
store i32 1, i32* %11
br label %228
228: ; preds = %225, %221
store float 0.000000e+00, float* %21
%229 = getelementptr inbounds [21 x i8], [21 x i8]* %23, i64 0, i64 0
store i8 0, i8* %229
%230 = getelementptr inbounds [21 x i8], [21 x i8]* %22, i64 0, i64 0
store i8 0, i8* %230
%231 = load i32*, i32** %8
%232 = getelementptr inbounds [21 x i8], [21 x i8]* %22, i64 0, i64 0
%233 = getelementptr inbounds [21 x i8], [21 x i8]* %23, i64 0, i64 0
%234 = call i32 (i32*, i8*, ...) @fscanf(i32* %231, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.40, i64 0, i64 0), float* %21, i8* %232, i8* %233)
store i32 %234, i32* %24
%235 = load i32*, i32** %8
%236 = call i32 (i32*, i8*, ...) @fscanf(i32* %235, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.41, i64 0, i64 0))
%237 = load i32*, i32** %9
%238 = load i32, i32* %24
%239 = load float, float* %21
%240 = fpext float %239 to double
%241 = getelementptr inbounds [21 x i8], [21 x i8]* %23, i64 0, i64 0
%242 = getelementptr inbounds [21 x i8], [21 x i8]* %22, i64 0, i64 0
%243 = call i32 (i32*, i8*, ...) @fprintf(i32* %237, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.42, i64 0, i64 0), i32 %238, double %240, i8* %241, i8* %242)
%244 = load i32, i32* %24
%245 = load i64, i64* %20
%246 = sub i64 %245, 1
%247 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %246
%248 = getelementptr inbounds %struct.anon, %struct.anon* %247, i32 0, i32 0
%249 = load i32, i32* %248
%250 = icmp ne i32 %244, %249
br i1 %250, label %277, label %251
251: ; preds = %228
%252 = load float, float* %21
%253 = load i64, i64* %20
%254 = sub i64 %253, 1
%255 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %254
%256 = getelementptr inbounds %struct.anon, %struct.anon* %255, i32 0, i32 1
%257 = load float, float* %256
%258 = fcmp une float %252, %257
br i1 %258, label %277, label %259
259: ; preds = %251
%260 = getelementptr inbounds [21 x i8], [21 x i8]* %23, i64 0, i64 0
%261 = load i64, i64* %20
%262 = sub i64 %261, 1
%263 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %262
%264 = getelementptr inbounds %struct.anon, %struct.anon* %263, i32 0, i32 3
%265 = load i8*, i8** %264
%266 = call i64 @strcmp(i8* %260, i8* %265)
%267 = icmp ne i64 %266, 0
br i1 %267, label %277, label %268
268: ; preds = %259
%269 = getelementptr inbounds [21 x i8], [21 x i8]* %22, i64 0, i64 0
%270 = load i64, i64* %20
%271 = sub i64 %270, 1
%272 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %271
%273 = getelementptr inbounds %struct.anon, %struct.anon* %272, i32 0, i32 2
%274 = load i8*, i8** %273
%275 = call i64 @strcmp(i8* %269, i8* %274)
%276 = icmp ne i64 %275, 0
br i1 %276, label %277, label %280
277: ; preds = %268, %259, %251, %228
%278 = load i32*, i32** @stdout
%279 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %278)
store i32 1, i32* %11
br label %280
280: ; preds = %277, %268
br label %210
281: ; preds = %219
%282 = getelementptr inbounds i8, i8* %51, i64 0
store i8 0, i8* %282
%283 = load i32*, i32** %9
%284 = trunc i64 %49 to i32
%285 = load i32*, i32** %8
%286 = call i8* @fgets(i8* %51, i32 %284, i32* %285)
%287 = call i32 (i32*, i8*, ...) @fprintf(i32* %283, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8* %286)
%288 = call i64 @strcmp(i8* %51, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i64 0, i64 0))
%289 = icmp ne i64 %288, 0
br i1 %289, label %290, label %293
290: ; preds = %281
%291 = load i32*, i32** @stdout
%292 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %291)
store i32 1, i32* %11
br label %293
293: ; preds = %290, %281
%294 = load i32*, i32** %9
%295 = load i32*, i32** @stdout
%296 = icmp ne i32* %294, %295
br i1 %296, label %297, label %300
297: ; preds = %293
%298 = load i32*, i32** %9
%299 = call i32 @pclose(i32* %298)
br label %300
300: ; preds = %297, %293
%301 = load i32*, i32** %9
%302 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.43, i64 0, i64 0), i32* %301)
%303 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.45, i64 0, i64 0), i32* %26, i32* %27)
store i32 %303, i32* %25
%304 = load i32, i32* %25
%305 = load i32, i32* %26
%306 = load i32, i32* %27
%307 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0), i32 %304, i32 %305, i32 %306)
%308 = load i32, i32* %25
%309 = icmp ne i32 %308, 1
br i1 %309, label %316, label %310
310: ; preds = %300
%311 = load i32, i32* %26
%312 = icmp ne i32 %311, -20
br i1 %312, label %316, label %313
313: ; preds = %310
%314 = load i32, i32* %27
%315 = icmp ne i32 %314, 3
br i1 %315, label %316, label %319
316: ; preds = %313, %310, %300
%317 = load i32*, i32** @stdout
%318 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %317)
store i32 1, i32* %11
br label %319
319: ; preds = %316, %313
%320 = load i32*, i32** %9
%321 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.47, i64 0, i64 0), i32* %320)
store double 0.000000e+00, double* %28
store double 0.000000e+00, double* %29
%322 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.49, i64 0, i64 0), double* %28, double* %29, i32* %31)
store i32 %322, i32* %30
%323 = load i32, i32* %30
%324 = load double, double* %28
%325 = load double, double* %29
%326 = load i32, i32* %31
%327 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.50, i64 0, i64 0), i32 %323, double %324, double %325, i32 %326)
%328 = load i32, i32* %30
%329 = icmp ne i32 %328, 2
br i1 %329, label %339, label %330
330: ; preds = %319
%331 = load double, double* %28
%332 = fcmp une double %331, 1.230000e+02
br i1 %332, label %339, label %333
333: ; preds = %330
%334 = load double, double* %29
%335 = fcmp une double %334, 4.560000e+02
br i1 %335, label %339, label %336
336: ; preds = %333
%337 = load i32, i32* %31
%338 = icmp ne i32 %337, 6
br i1 %338, label %339, label %342
339: ; preds = %336, %333, %330, %319
%340 = load i32*, i32** @stdout
%341 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %340)
store i32 1, i32* %11
br label %342
342: ; preds = %339, %336
%343 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.51, i64 0, i64 0), double* %28)
store i32 %343, i32* %30
%344 = load i32, i32* %30
%345 = load double, double* %28
%346 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.52, i64 0, i64 0), i32 %344, double %345)
%347 = load i32, i32* %30
%348 = icmp ne i32 %347, 1
br i1 %348, label %352, label %349
349: ; preds = %342
%350 = load double, double* %28
%351 = fcmp une double %350, 0.000000e+00
br i1 %351, label %352, label %355
352: ; preds = %349, %342
%353 = load i32*, i32** @stdout
%354 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %353)
store i32 1, i32* %11
br label %355
355: ; preds = %352, %349
%356 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.53, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.54, i64 0, i64 0), double* %28, i32* %31)
store i32 %356, i32* %30
%357 = load i32, i32* %30
%358 = load double, double* %28
%359 = load i32, i32* %31
%360 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.55, i64 0, i64 0), i32 %357, double %358, i32 %359)
%361 = load i32, i32* %30
%362 = icmp ne i32 %361, 1
br i1 %362, label %369, label %363
363: ; preds = %355
%364 = load double, double* %28
%365 = fcmp une double %364, 1.000000e+03
br i1 %365, label %369, label %366
366: ; preds = %363
%367 = load i32, i32* %31
%368 = icmp ne i32 %367, 3
br i1 %368, label %369, label %372
369: ; preds = %366, %363, %355
%370 = load i32*, i32** @stdout
%371 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %370)
store i32 1, i32* %11
br label %372
372: ; preds = %369, %366
%373 = load i32*, i32** @stdout
%374 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0), i32* %373)
store i8* inttoptr (i64 -1 to i8*), i8** %32
%375 = call i32 @sprintf(i8* %51, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.57, i64 0, i64 0), i8* null)
%376 = call i32 (i8*, i8*, ...) @sscanf(i8* %51, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.57, i64 0, i64 0), i8** %32)
store i32 %376, i32* %33
%377 = load i32, i32* %33
%378 = load i8*, i8** %32
%379 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.58, i64 0, i64 0), i8* %51, i32 %377, i8* %378)
%380 = load i32, i32* %33
%381 = icmp ne i32 %380, 1
br i1 %381, label %385, label %382
382: ; preds = %372
%383 = load i8*, i8** %32
%384 = icmp ne i8* %383, null
br i1 %384, label %385, label %388
385: ; preds = %382, %372
%386 = load i32*, i32** @stdout
%387 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %386)
store i32 1, i32* %11
br label %388
388: ; preds = %385, %382
%389 = load i32*, i32** @stdout
%390 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.59, i64 0, i64 0), i32* %389)
%391 = bitcast [2 x i16]* %34 to i8*
%392 = getelementptr inbounds [2 x i16], [2 x i16]* %34, i64 0, i64 0
%393 = getelementptr inbounds [2 x i16], [2 x i16]* %34, i64 0, i64 1
%394 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.60, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.61, i64 0, i64 0), i16* %392, i16* %393)
store i32 %394, i32* %35
%395 = load i32, i32* %35
%396 = getelementptr inbounds [2 x i16], [2 x i16]* %34, i64 0, i64 0
%397 = load i16, i16* %396
%398 = sext i16 %397 to i32
%399 = getelementptr inbounds [2 x i16], [2 x i16]* %34, i64 0, i64 1
%400 = load i16, i16* %399
%401 = sext i16 %400 to i32
%402 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.62, i64 0, i64 0), i32 %395, i32 %398, i32 %401)
%403 = load i32, i32* %35
%404 = icmp ne i32 %403, 2
br i1 %404, label %415, label %405
405: ; preds = %388
%406 = getelementptr inbounds [2 x i16], [2 x i16]* %34, i64 0, i64 0
%407 = load i16, i16* %406
%408 = sext i16 %407 to i32
%409 = icmp ne i32 %408, 32767
br i1 %409, label %415, label %410
410: ; preds = %405
%411 = getelementptr inbounds [2 x i16], [2 x i16]* %34, i64 0, i64 1
%412 = load i16, i16* %411
%413 = sext i16 %412 to i32
%414 = icmp ne i32 %413, 1234
br i1 %414, label %415, label %418
415: ; preds = %410, %405, %388
%416 = load i32*, i32** @stdout
%417 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %416)
store i32 1, i32* %11
br label %418
418: ; preds = %415, %410
%419 = load i32*, i32** @stdout
%420 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.63, i64 0, i64 0), i32* %419)
store double 0x40FE240C9FBE76C9, double* %36
%421 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.64, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.65, i64 0, i64 0), double* %36)
store i32 %421, i32* %37
%422 = load i32, i32* %37
%423 = load double, double* %36
%424 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.66, i64 0, i64 0), i32 %422, double %423)
%425 = load i32, i32* %37
%426 = icmp ne i32 %425, 1
br i1 %426, label %430, label %427
427: ; preds = %418
%428 = load double, double* %36
%429 = fcmp une double %428, 4.660000e+03
br i1 %429, label %430, label %433
430: ; preds = %427, %418
%431 = load i32*, i32** @stdout
%432 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %431)
store i32 1, i32* %11
br label %433
433: ; preds = %430, %427
%434 = load i32*, i32** @stdout
%435 = call i32 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.67, i64 0, i64 0), i32* %434)
%436 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0), float* %38)
store i32 %436, i32* %39
%437 = load i32, i32* %39
%438 = icmp ne i32 %437, 1
br i1 %438, label %443, label %439
439: ; preds = %433
%440 = load float, float* %38
%441 = fpext float %440 to double
%442 = fcmp une double %441, 1.000000e+00
br i1 %442, label %443, label %446
443: ; preds = %439, %433
%444 = load i32*, i32** @stdout
%445 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %444)
store i32 1, i32* %11
br label %446
446: ; preds = %443, %439
%447 = load i32*, i32** @stdout
%448 = call i32 @fputs(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.70, i64 0, i64 0), i32* %447)
%449 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.71, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.72, i64 0, i64 0), float* %40)
store i32 %449, i32* %41
%450 = load i32, i32* %41
%451 = icmp ne i32 %450, 0
br i1 %451, label %452, label %455
452: ; preds = %446
%453 = load i32*, i32** @stdout
%454 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %453)
store i32 1, i32* %11
br label %455
455: ; preds = %452, %446
%456 = load i32*, i32** @stdout
%457 = call i32 @fputs(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.73, i64 0, i64 0), i32* %456)
%458 = getelementptr inbounds [50 x i8], [50 x i8]* %42, i64 0, i64 0
%459 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.74, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.75, i64 0, i64 0), i8* %458)
store i32 %459, i32* %43
%460 = load i32, i32* %43
%461 = icmp ne i32 %460, 1
br i1 %461, label %462, label %465
462: ; preds = %455
%463 = load i32*, i32** @stdout
%464 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %463)
store i32 1, i32* %11
br label %465
465: ; preds = %462, %455
%466 = load i32*, i32** @stdout
%467 = call i32 @fputs(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.76, i64 0, i64 0), i32* %466)
%468 = getelementptr inbounds [50 x i8], [50 x i8]* %44, i64 0, i64 0
%469 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.77, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.75, i64 0, i64 0), i8* %468)
store i32 %469, i32* %45
%470 = load i32, i32* %45
%471 = icmp ne i32 %470, 1
br i1 %471, label %472, label %475
472: ; preds = %465
%473 = load i32*, i32** @stdout
%474 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %473)
store i32 1, i32* %11
br label %475
475: ; preds = %472, %465
%476 = load i32*, i32** @stdout
%477 = call i32 @fputs(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.78, i64 0, i64 0), i32* %476)
%478 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.79, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.72, i64 0, i64 0), float* %46)
store i32 %478, i32* %47
%479 = load i32, i32* %47
%480 = icmp ne i32 %479, 1
br i1 %480, label %485, label %481
481: ; preds = %475
%482 = load float, float* %46
%483 = call i32 @isinf(float %482)
%484 = icmp ne i32 %483, -1
br i1 %484, label %485, label %488
485: ; preds = %481, %475
%486 = load i32*, i32** @stdout
%487 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %486)
store i32 1, i32* %11
br label %488
488: ; preds = %485, %481
%489 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.80, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.72, i64 0, i64 0), float* %46)
store i32 %489, i32* %47
%490 = load i32, i32* %47
%491 = icmp ne i32 %490, 1
br i1 %491, label %496, label %492
492: ; preds = %488
%493 = load float, float* %46
%494 = call i32 @isinf(float %493)
%495 = icmp ne i32 %494, 1
br i1 %495, label %496, label %499
496: ; preds = %492, %488
%497 = load i32*, i32** @stdout
%498 = call i32 @fputs(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i32* %497)
store i32 1, i32* %11
br label %499
499: ; preds = %496, %492
%500 = load i32, i32* %11
store i32 %500, i32* %3
%501 = load i8*, i8** %6
%502 = load i32, i32* %3
ret i32 %502
}

LLVM IR (-O2):
%struct.anon = type { i32, float, i8*, i8* }
@BUFSIZ = global i32 0
@stdin = global i32* null
@stdout = global i32* null
@.str = [2 x i8] c"0\00"
@.str.1 = [3 x i8] c"%d\00"
@.str.2 = [14 x i8] c"test failed!\0A\00"
@.str.3 = [7 x i8] c"08905x\00"
@.str.4 = [8 x i8] c"%9[0-9]\00"
@.str.5 = [6 x i8] c"08905\00"
@.str.6 = [1 x i8] zeroinitializer
@.str.7 = [9 x i8] c"%10[a-z]\00"
@EOF = global i32 0
@.str.8 = [30 x i8] c"conversion] Zero flag Ze]ro#\0A\00"
@.str.9 = [14 x i8] c"%*[^]] %[^#]\0A\00"
@.str.10 = [18 x i8] c"] Zero flag Ze]ro\00"
@.str.11 = [7 x i8] c"-opipe\00"
@.str.12 = [9 x i8] c"/bin/cat\00"
@.str.13 = [2 x i8] c"w\00"
@.str.14 = [16 x i8] c"popen: /bin/cat\00"
@.str.15 = [7 x i8] c"-ipipe\00"
@.str.16 = [12 x i8] c"/bin/cat %s\00"
@.str.17 = [2 x i8] c"r\00"
@.str.18 = [54 x i8] c"sscanf (\22thompson\22, \22%%s\22, name) == %d, name == \22%s\22\0A\00"
@.str.19 = [9 x i8] c"thompson\00"
@.str.20 = [3 x i8] c"%s\00"
@.str.21 = [25 x i8] c"Testing scanf (vfscanf)\0A\00"
@.str.22 = [9 x i8] c"Test 1:\0A\00"
@.str.23 = [7 x i8] c"%d%f%s\00"
@.str.24 = [40 x i8] c"n = %d, i = %d, x = %f, name = \22%.50s\22\0A\00"
@.str.25 = [16 x i8] c"Residual: \22%s\22\0A\00"
@.str.26 = [2 x i8] c"\0A\00"
@.str.27 = [9 x i8] c"Test 2:\0A\00"
@.str.28 = [23 x i8] c"%2d%f%*d %[0123456789]\00"
@.str.29 = [32 x i8] c"i = %d, x = %f, name = \22%.50s\22\0A\00"
@.str.30 = [3 x i8] c"56\00"
@.str.31 = [5 x i8] c"a72\0A\00"
@.str.32 = [9 x i8] c"Test 3:\0A\00"
@main.ok = internal unnamed_addr constant [6 x %struct.anon] [%struct.anon { i32 3, float 2.000000e+00, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i32 0, i32 0) }, %struct.anon { i32 2, float 0xC0299999A0000000, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.35, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0) }, %struct.anon { i32 0, float 0.000000e+00, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0) }, %struct.anon { i32 3, float 1.000000e+01, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.37, i32 0, i32 0) }, %struct.anon { i32 3, float 1.000000e+02, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.38, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.39, i32 0, i32 0) }, %struct.anon { i32 -1, float 0.000000e+00, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i32 0, i32 0) }]
@.str.33 = [7 x i8] c"quarts\00"
@.str.34 = [4 x i8] c"oil\00"
@.str.35 = [8 x i8] c"degrees\00"
@.str.36 = [4 x i8] c"LBS\00"
@.str.37 = [11 x i8] c"fertilizer\00"
@.str.38 = [4 x i8] c"rgs\00"
@.str.39 = [7 x i8] c"energy\00"
@.str.40 = [15 x i8] c"%f%20s of %20s\00"
@.str.41 = [7 x i8] c"%*[^\0A]\00"
@.str.42 = [53 x i8] c"count = %d, quant = %f, item = %.21s, units = %.21s\0A\00"
@.str.43 = [9 x i8] c"Test 4:\0A\00"
@.str.44 = [5 x i8] c"-242\00"
@.str.45 = [6 x i8] c"%3o%n\00"
@.str.46 = [28 x i8] c"res = %d, val = %d, n = %d\0A\00"
@.str.47 = [9 x i8] c"Test 5:\0A\00"
@.str.48 = [8 x i8] c"1234567\00"
@.str.49 = [11 x i8] c"%3lg%3lg%n\00"
@.str.50 = [34 x i8] c"res = %d, a = %g, b = %g, n = %d\0A\00"
@.str.51 = [4 x i8] c"%lg\00"
@.str.52 = [18 x i8] c"res = %d, a = %g\0A\00"
@.str.53 = [4 x i8] c"1e3\00"
@.str.54 = [6 x i8] c"%lg%n\00"
@.str.55 = [26 x i8] c"res = %d, a = %g, n = %d\0A\00"
@.str.56 = [9 x i8] c"Test 6:\0A\00"
@.str.57 = [3 x i8] c"%p\00"
@.str.58 = [40 x i8] c"sscanf (\22%s\22, \22%%p\22, &p) = %d, p == %p\0A\00"
@.str.59 = [9 x i8] c"Test 7:\0A\00"
@.str.60 = [11 x i8] c"32767 1234\00"
@.str.61 = [8 x i8] c"%hd %hd\00"
@.str.62 = [32 x i8] c"res = %d, a[0] = %d, a[1] = %d\0A\00"
@.str.63 = [9 x i8] c"Test 8:\0A\00"
@.str.64 = [7 x i8] c"0x1234\00"
@.str.65 = [4 x i8] c"%lf\00"
@.str.66 = [18 x i8] c"res = %d, d = %f\0A\00"
@.str.67 = [9 x i8] c"Test 9:\0A\00"
@.str.68 = [5 x i8] c"0123\00"
@.str.69 = [4 x i8] c"%2f\00"
@.str.70 = [10 x i8] c"Test 10:\0A\00"
@.str.71 = [3 x i8] c"--\00"
@.str.72 = [3 x i8] c"%f\00"
@.str.73 = [10 x i8] c"Test 11:\0A\00"
@.str.74 = [17 x i8] c"uart:16550A tx:0\00"
@.str.75 = [17 x i8] c"uart:%31s tx:%*u\00"
@.str.76 = [10 x i8] c"Test 12:\0A\00"
@.str.77 = [12 x i8] c"uart:16550A\00"
@.str.78 = [10 x i8] c"Test 13:\0A\00"
@.str.79 = [5 x i8] c"-InF\00"
@.str.80 = [10 x i8] c"+InfiNiTY\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca i32
%4 = alloca [50 x i8]
%5 = alloca i32
%6 = alloca float
%7 = alloca [50 x i8]
%8 = alloca i32
%9 = alloca float
%10 = alloca [50 x i8]
%11 = alloca float
%12 = alloca [21 x i8]
%13 = alloca [21 x i8]
%14 = alloca i32
%15 = alloca i32
%16 = alloca double
%17 = alloca double
%18 = alloca i32
%19 = alloca i8*
%20 = alloca i32
%21 = bitcast i32* %20 to [2 x i16]*
%22 = alloca double
%23 = alloca float
%24 = alloca float
%25 = alloca [50 x i8]
%26 = alloca [50 x i8]
%27 = alloca float
%28 = load i32, i32* @BUFSIZ
%29 = zext i32 %28 to i64
%30 = alloca i8, i64 %29
%31 = load i32*, i32** @stdin
%32 = load i32*, i32** @stdout
%33 = bitcast i32* %3 to i8*
%34 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32* %3)
%35 = icmp eq i32 %34, 1
br i1 %35, label %39, label %36
36: ; preds = %2
%37 = load i32*, i32** @stdout
%38 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %37)
br label %39
39: ; preds = %36, %2
%40 = phi i32 [ 1, %36 ], [ 0, %2 ]
%41 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i8* %30)
%42 = icmp eq i32 %41, 1
br i1 %42, label %43, label %46
43: ; preds = %39
%44 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.5, i64 0, i64 0))
%45 = icmp eq i64 %44, 0
br i1 %45, label %49, label %46
46: ; preds = %43, %39
%47 = load i32*, i32** @stdout
%48 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %47)
br label %49
49: ; preds = %46, %43
%50 = phi i32 [ 1, %46 ], [ %40, %43 ]
%51 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i8* %30)
%52 = load i32, i32* @EOF
%53 = icmp eq i32 %51, %52
br i1 %53, label %57, label %54
54: ; preds = %49
%55 = load i32*, i32** @stdout
%56 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %55)
br label %57
57: ; preds = %54, %49
%58 = phi i32 [ 1, %54 ], [ %50, %49 ]
%59 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), i8* %30)
%60 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%61 = icmp eq i64 %60, 0
br i1 %61, label %65, label %62
62: ; preds = %57
%63 = load i32*, i32** @stdout
%64 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %63)
br label %65
65: ; preds = %62, %57
%66 = phi i32 [ 1, %62 ], [ %58, %57 ]
switch i32 %0, label %90 [
i32 2, label %67
i32 3, label %75
]
67: ; preds = %65
%68 = getelementptr inbounds i8*, i8** %1, i64 1
%69 = load i8*, i8** %68
%70 = call i64 @strcmp(i8* %69, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%71 = icmp eq i64 %70, 0
br i1 %71, label %72, label %90
72: ; preds = %67
%73 = call i32* @popen(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0))
%74 = icmp eq i32* %73, null
br i1 %74, label %86, label %90
75: ; preds = %65
%76 = getelementptr inbounds i8*, i8** %1, i64 1
%77 = load i8*, i8** %76
%78 = call i64 @strcmp(i8* %77, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
%79 = icmp eq i64 %78, 0
br i1 %79, label %80, label %90
80: ; preds = %75
%81 = getelementptr inbounds i8*, i8** %1, i64 2
%82 = load i8*, i8** %81
%83 = call i32 @sprintf(i8* %30, i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.16, i64 0, i64 0), i8* %82)
%84 = call i32* @popen(i8* %30, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
%85 = icmp eq i32* %84, null
br i1 %85, label %86, label %90
86: ; preds = %80, %72
%87 = phi i32* [ null, %72 ], [ %32, %80 ]
%88 = phi i32* [ %31, %72 ], [ null, %80 ]
%89 = call i32 @perror(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.14, i64 0, i64 0))
br label %90
90: ; preds = %86, %67, %65, %75, %80, %72
%91 = phi i32 [ %66, %75 ], [ %66, %80 ], [ %66, %72 ], [ %66, %65 ], [ %66, %67 ], [ 1, %86 ]
%92 = phi i32* [ %32, %75 ], [ %32, %80 ], [ %73, %72 ], [ %32, %65 ], [ %32, %67 ], [ %87, %86 ]
%93 = phi i32* [ %31, %75 ], [ %84, %80 ], [ %31, %72 ], [ %31, %65 ], [ %31, %67 ], [ %88, %86 ]
%94 = getelementptr inbounds [50 x i8], [50 x i8]* %4, i64 0, i64 0
%95 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), i8* %94)
%96 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.18, i64 0, i64 0), i32 %95, i8* %94)
%97 = call i64 @strcmp(i8* %94, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
%98 = icmp eq i64 %97, 0
br i1 %98, label %102, label %99
99: ; preds = %90
%100 = load i32*, i32** @stdout
%101 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %100)
br label %102
102: ; preds = %99, %90
%103 = phi i32 [ 1, %99 ], [ %91, %90 ]
%104 = call i64 @fwrite(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.21, i64 0, i64 0), i64 24, i64 1, i32* %92)
%105 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.22, i64 0, i64 0), i64 8, i64 1, i32* %92)
%106 = bitcast i32* %5 to i8*
%107 = bitcast float* %6 to i8*
%108 = getelementptr inbounds [50 x i8], [50 x i8]* %7, i64 0, i64 0
%109 = call i32 (i32*, i8*, ...) @fscanf(i32* %93, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.23, i64 0, i64 0), i32* %5, float* %6, i8* %108)
%110 = load i32, i32* %5
%111 = load float, float* %6
%112 = fpext float %111 to double
%113 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.24, i64 0, i64 0), i32 %109, i32 %110, double %112, i8* %108)
%114 = icmp ne i32 %109, 3
%115 = load i32, i32* %5
%116 = icmp ne i32 %115, 25
%117 = select i1 %114, i1 true, i1 %116
%118 = load float, float* %6
%119 = fcmp une float %118, 0x4015BA5E40000000
%120 = select i1 %117, i1 true, i1 %119
br i1 %120, label %124, label %121
121: ; preds = %102
%122 = call i64 @strcmp(i8* %108, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.19, i64 0, i64 0))
%123 = icmp eq i64 %122, 0
br i1 %123, label %127, label %124
124: ; preds = %121, %102
%125 = load i32*, i32** @stdout
%126 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %125)
br label %127
127: ; preds = %124, %121
%128 = phi i32 [ 1, %124 ], [ %103, %121 ]
%129 = call i8* @fgets(i8* %30, i32 %28, i32* %93)
%130 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8* %129)
%131 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
%132 = icmp eq i64 %131, 0
br i1 %132, label %136, label %133
133: ; preds = %127
%134 = load i32*, i32** @stdout
%135 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %134)
br label %136
136: ; preds = %133, %127
%137 = phi i32 [ 1, %133 ], [ %128, %127 ]
%138 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.27, i64 0, i64 0), i64 8, i64 1, i32* %92)
%139 = bitcast i32* %8 to i8*
%140 = bitcast float* %9 to i8*
%141 = getelementptr inbounds [50 x i8], [50 x i8]* %10, i64 0, i64 0
%142 = call i32 (i32*, i8*, ...) @fscanf(i32* %93, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.28, i64 0, i64 0), i32* %8, float* %9, i8* %141)
%143 = load i32, i32* %8
%144 = load float, float* %9
%145 = fpext float %144 to double
%146 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.29, i64 0, i64 0), i32 %143, double %145, i8* %141)
%147 = load i32, i32* %8
%148 = icmp ne i32 %147, 56
%149 = load float, float* %9
%150 = fcmp une float %149, 7.890000e+02
%151 = select i1 %148, i1 true, i1 %150
br i1 %151, label %155, label %152
152: ; preds = %136
%153 = call i64 @strcmp(i8* %141, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.30, i64 0, i64 0))
%154 = icmp eq i64 %153, 0
br i1 %154, label %158, label %155
155: ; preds = %152, %136
%156 = load i32*, i32** @stdout
%157 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %156)
br label %158
158: ; preds = %155, %152
%159 = phi i32 [ 1, %155 ], [ %137, %152 ]
%160 = call i8* @fgets(i8* %30, i32 %28, i32* %93)
%161 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8* %160)
%162 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i64 0, i64 0))
%163 = icmp eq i64 %162, 0
br i1 %163, label %167, label %164
164: ; preds = %158
%165 = load i32*, i32** @stdout
%166 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %165)
br label %167
167: ; preds = %164, %158
%168 = phi i32 [ 1, %164 ], [ %159, %158 ]
%169 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.32, i64 0, i64 0), i64 8, i64 1, i32* %92)
%170 = bitcast float* %11 to i8*
%171 = getelementptr inbounds [21 x i8], [21 x i8]* %12, i64 0, i64 0
%172 = getelementptr inbounds [21 x i8], [21 x i8]* %13, i64 0, i64 0
%173 = call i32 @feof(i32* %93)
%174 = icmp eq i32 %173, 0
br i1 %174, label %175, label %218
175: ; preds = %167, %214
%176 = phi i32 [ %215, %214 ], [ %168, %167 ]
%177 = phi i64 [ %181, %214 ], [ 0, %167 ]
%178 = call i32 @ferror(i32* %93)
%179 = icmp eq i32 %178, 0
br i1 %179, label %180, label %218
180: ; preds = %175
%181 = add i64 %177, 1
%182 = icmp ugt i64 %177, 5
br i1 %182, label %183, label %186
183: ; preds = %180
%184 = load i32*, i32** @stdout
%185 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %184)
br label %186
186: ; preds = %183, %180
%187 = phi i32 [ 1, %183 ], [ %176, %180 ]
store float 0.000000e+00, float* %11
store i8 0, i8* %172
store i8 0, i8* %171
%188 = call i32 (i32*, i8*, ...) @fscanf(i32* %93, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.40, i64 0, i64 0), float* %11, i8* %171, i8* %172)
%189 = call i32 (i32*, i8*, ...) @fscanf(i32* %93, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.41, i64 0, i64 0))
%190 = load float, float* %11
%191 = fpext float %190 to double
%192 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.42, i64 0, i64 0), i32 %188, double %191, i8* %172, i8* %171)
%193 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %177, i32 0
%194 = load i32, i32* %193
%195 = icmp eq i32 %188, %194
br i1 %195, label %196, label %211
196: ; preds = %186
%197 = load float, float* %11
%198 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %177, i32 1
%199 = load float, float* %198
%200 = fcmp une float %197, %199
br i1 %200, label %211, label %201
201: ; preds = %196
%202 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %177, i32 3
%203 = load i8*, i8** %202
%204 = call i64 @strcmp(i8* %172, i8* %203)
%205 = icmp eq i64 %204, 0
br i1 %205, label %206, label %211
206: ; preds = %201
%207 = getelementptr inbounds [6 x %struct.anon], [6 x %struct.anon]* @main.ok, i64 0, i64 %177, i32 2
%208 = load i8*, i8** %207
%209 = call i64 @strcmp(i8* %171, i8* %208)
%210 = icmp eq i64 %209, 0
br i1 %210, label %214, label %211
211: ; preds = %206, %201, %196, %186
%212 = load i32*, i32** @stdout
%213 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %212)
br label %214
214: ; preds = %211, %206
%215 = phi i32 [ 1, %211 ], [ %187, %206 ]
%216 = call i32 @feof(i32* %93)
%217 = icmp eq i32 %216, 0
br i1 %217, label %175, label %218
218: ; preds = %175, %214, %167
%219 = phi i32 [ %168, %167 ], [ %215, %214 ], [ %176, %175 ]
store i8 0, i8* %30
%220 = call i8* @fgets(i8* %30, i32 %28, i32* %93)
%221 = call i32 (i32*, i8*, ...) @fprintf(i32* %92, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.25, i64 0, i64 0), i8* %220)
%222 = call i64 @strcmp(i8* %30, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.6, i64 0, i64 0))
%223 = icmp eq i64 %222, 0
br i1 %223, label %227, label %224
224: ; preds = %218
%225 = load i32*, i32** @stdout
%226 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %225)
br label %227
227: ; preds = %224, %218
%228 = phi i32 [ 1, %224 ], [ %219, %218 ]
%229 = load i32*, i32** @stdout
%230 = icmp eq i32* %92, %229
br i1 %230, label %233, label %231
231: ; preds = %227
%232 = call i32 @pclose(i32* %92)
br label %233
233: ; preds = %231, %227
%234 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.43, i64 0, i64 0), i64 8, i64 1, i32* %92)
%235 = bitcast i32* %14 to i8*
%236 = bitcast i32* %15 to i8*
%237 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.44, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.45, i64 0, i64 0), i32* %14, i32* %15)
%238 = load i32, i32* %14
%239 = load i32, i32* %15
%240 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.46, i64 0, i64 0), i32 %237, i32 %238, i32 %239)
%241 = icmp ne i32 %237, 1
%242 = load i32, i32* %14
%243 = icmp ne i32 %242, -20
%244 = select i1 %241, i1 true, i1 %243
%245 = load i32, i32* %15
%246 = icmp ne i32 %245, 3
%247 = select i1 %244, i1 true, i1 %246
br i1 %247, label %248, label %251
248: ; preds = %233
%249 = load i32*, i32** @stdout
%250 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %249)
br label %251
251: ; preds = %233, %248
%252 = phi i32 [ 1, %248 ], [ %228, %233 ]
%253 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.47, i64 0, i64 0), i64 8, i64 1, i32* %92)
%254 = bitcast double* %16 to i8*
store double 0.000000e+00, double* %16
%255 = bitcast double* %17 to i8*
store double 0.000000e+00, double* %17
%256 = bitcast i32* %18 to i8*
%257 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.49, i64 0, i64 0), double* %16, double* %17, i32* %18)
%258 = load double, double* %16
%259 = load double, double* %17
%260 = load i32, i32* %18
%261 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.50, i64 0, i64 0), i32 %257, double %258, double %259, i32 %260)
%262 = icmp ne i32 %257, 2
%263 = load double, double* %16
%264 = fcmp une double %263, 1.230000e+02
%265 = select i1 %262, i1 true, i1 %264
%266 = load double, double* %17
%267 = fcmp une double %266, 4.560000e+02
%268 = select i1 %265, i1 true, i1 %267
%269 = load i32, i32* %18
%270 = icmp ne i32 %269, 6
%271 = select i1 %268, i1 true, i1 %270
br i1 %271, label %272, label %275
272: ; preds = %251
%273 = load i32*, i32** @stdout
%274 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %273)
br label %275
275: ; preds = %251, %272
%276 = phi i32 [ 1, %272 ], [ %252, %251 ]
%277 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.51, i64 0, i64 0), double* %16)
%278 = load double, double* %16
%279 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.52, i64 0, i64 0), i32 %277, double %278)
%280 = icmp ne i32 %277, 1
%281 = load double, double* %16
%282 = fcmp une double %281, 0.000000e+00
%283 = select i1 %280, i1 true, i1 %282
br i1 %283, label %284, label %287
284: ; preds = %275
%285 = load i32*, i32** @stdout
%286 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %285)
br label %287
287: ; preds = %275, %284
%288 = phi i32 [ 1, %284 ], [ %276, %275 ]
%289 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.53, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.54, i64 0, i64 0), double* %16, i32* %18)
%290 = load double, double* %16
%291 = load i32, i32* %18
%292 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str.55, i64 0, i64 0), i32 %289, double %290, i32 %291)
%293 = icmp ne i32 %289, 1
%294 = load double, double* %16
%295 = fcmp une double %294, 1.000000e+03
%296 = select i1 %293, i1 true, i1 %295
%297 = load i32, i32* %18
%298 = icmp ne i32 %297, 3
%299 = select i1 %296, i1 true, i1 %298
br i1 %299, label %300, label %303
300: ; preds = %287
%301 = load i32*, i32** @stdout
%302 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %301)
br label %303
303: ; preds = %287, %300
%304 = phi i32 [ 1, %300 ], [ %288, %287 ]
%305 = load i32*, i32** @stdout
%306 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.56, i64 0, i64 0), i64 8, i64 1, i32* %305)
%307 = bitcast i8** %19 to i8*
store i8* inttoptr (i64 -1 to i8*), i8** %19
%308 = call i32 @sprintf(i8* %30, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.57, i64 0, i64 0), i8* null)
%309 = call i32 (i8*, i8*, ...) @sscanf(i8* %30, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.57, i64 0, i64 0), i8** %19)
%310 = load i8*, i8** %19
%311 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.58, i64 0, i64 0), i8* %30, i32 %309, i8* %310)
%312 = icmp ne i32 %309, 1
%313 = load i8*, i8** %19
%314 = icmp ne i8* %313, null
%315 = select i1 %312, i1 true, i1 %314
br i1 %315, label %316, label %319
316: ; preds = %303
%317 = load i32*, i32** @stdout
%318 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %317)
br label %319
319: ; preds = %303, %316
%320 = phi i32 [ 1, %316 ], [ %304, %303 ]
%321 = load i32*, i32** @stdout
%322 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.59, i64 0, i64 0), i64 8, i64 1, i32* %321)
%323 = bitcast i32* %20 to i8*
store i32 -1, i32* %20
%324 = bitcast i32* %20 to i16*
%325 = getelementptr inbounds [2 x i16], [2 x i16]* %21, i64 0, i64 1
%326 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.60, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.61, i64 0, i64 0), i32* %20, i16* %325)
%327 = load i16, i16* %324
%328 = sext i16 %327 to i32
%329 = load i16, i16* %325
%330 = sext i16 %329 to i32
%331 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.62, i64 0, i64 0), i32 %326, i32 %328, i32 %330)
%332 = icmp ne i32 %326, 2
%333 = load i16, i16* %324
%334 = icmp ne i16 %333, 32767
%335 = select i1 %332, i1 true, i1 %334
%336 = load i16, i16* %325
%337 = icmp ne i16 %336, 1234
%338 = select i1 %335, i1 true, i1 %337
br i1 %338, label %339, label %342
339: ; preds = %319
%340 = load i32*, i32** @stdout
%341 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %340)
br label %342
342: ; preds = %319, %339
%343 = phi i32 [ 1, %339 ], [ %320, %319 ]
%344 = load i32*, i32** @stdout
%345 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.63, i64 0, i64 0), i64 8, i64 1, i32* %344)
%346 = bitcast double* %22 to i8*
store double 0x40FE240C9FBE76C9, double* %22
%347 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.64, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.65, i64 0, i64 0), double* %22)
%348 = load double, double* %22
%349 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.66, i64 0, i64 0), i32 %347, double %348)
%350 = icmp ne i32 %347, 1
%351 = load double, double* %22
%352 = fcmp une double %351, 4.660000e+03
%353 = select i1 %350, i1 true, i1 %352
br i1 %353, label %354, label %357
354: ; preds = %342
%355 = load i32*, i32** @stdout
%356 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %355)
br label %357
357: ; preds = %342, %354
%358 = phi i32 [ 1, %354 ], [ %343, %342 ]
%359 = load i32*, i32** @stdout
%360 = call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.67, i64 0, i64 0), i64 8, i64 1, i32* %359)
%361 = bitcast float* %23 to i8*
%362 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.68, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.69, i64 0, i64 0), float* %23)
%363 = icmp ne i32 %362, 1
%364 = load float, float* %23
%365 = fcmp une float %364, 1.000000e+00
%366 = select i1 %363, i1 true, i1 %365
br i1 %366, label %367, label %370
367: ; preds = %357
%368 = load i32*, i32** @stdout
%369 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %368)
br label %370
370: ; preds = %357, %367
%371 = phi i32 [ 1, %367 ], [ %358, %357 ]
%372 = load i32*, i32** @stdout
%373 = call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.70, i64 0, i64 0), i64 9, i64 1, i32* %372)
%374 = bitcast float* %24 to i8*
%375 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.71, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.72, i64 0, i64 0), float* %24)
%376 = icmp eq i32 %375, 0
br i1 %376, label %380, label %377
377: ; preds = %370
%378 = load i32*, i32** @stdout
%379 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %378)
br label %380
380: ; preds = %377, %370
%381 = phi i32 [ 1, %377 ], [ %371, %370 ]
%382 = load i32*, i32** @stdout
%383 = call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.73, i64 0, i64 0), i64 9, i64 1, i32* %382)
%384 = getelementptr inbounds [50 x i8], [50 x i8]* %25, i64 0, i64 0
%385 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.74, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.75, i64 0, i64 0), i8* %384)
%386 = icmp eq i32 %385, 1
br i1 %386, label %390, label %387
387: ; preds = %380
%388 = load i32*, i32** @stdout
%389 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %388)
br label %390
390: ; preds = %387, %380
%391 = phi i32 [ 1, %387 ], [ %381, %380 ]
%392 = load i32*, i32** @stdout
%393 = call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.76, i64 0, i64 0), i64 9, i64 1, i32* %392)
%394 = getelementptr inbounds [50 x i8], [50 x i8]* %26, i64 0, i64 0
%395 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.77, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.75, i64 0, i64 0), i8* %394)
%396 = icmp eq i32 %395, 1
br i1 %396, label %400, label %397
397: ; preds = %390
%398 = load i32*, i32** @stdout
%399 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %398)
br label %400
400: ; preds = %397, %390
%401 = phi i32 [ 1, %397 ], [ %391, %390 ]
%402 = load i32*, i32** @stdout
%403 = call i64 @fwrite(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.78, i64 0, i64 0), i64 9, i64 1, i32* %402)
%404 = bitcast float* %27 to i8*
%405 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.79, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.72, i64 0, i64 0), float* %27)
%406 = icmp eq i32 %405, 1
br i1 %406, label %407, label %411
407: ; preds = %400
%408 = load float, float* %27
%409 = call i32 @isinf(float %408)
%410 = icmp eq i32 %409, -1
br i1 %410, label %414, label %411
411: ; preds = %407, %400
%412 = load i32*, i32** @stdout
%413 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %412)
br label %414
414: ; preds = %411, %407
%415 = phi i32 [ 1, %411 ], [ %401, %407 ]
%416 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.80, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.72, i64 0, i64 0), float* %27)
%417 = icmp eq i32 %416, 1
br i1 %417, label %418, label %422
418: ; preds = %414
%419 = load float, float* %27
%420 = call i32 @isinf(float %419)
%421 = icmp eq i32 %420, 1
br i1 %421, label %425, label %422
422: ; preds = %418, %414
%423 = load i32*, i32** @stdout
%424 = call i64 @fwrite(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0), i64 13, i64 1, i32* %423)
br label %425
425: ; preds = %422, %418
%426 = phi i32 [ 1, %422 ], [ %415, %418 ]
ret i32 %426
}