#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*/ FILE;

/* Variables and functions */
scalar_t__ EOF;
int /*<<< orphan*/ SEEK_SET;
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fdopen(int, char *);
scalar_t__ fputs(char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ *freopen(char *, char *, int /*<<< orphan*/);
int fscanf(int /*<<< orphan*/ *, char *, float *, char *);
scalar_t__ fseek(int /*<<< orphan*/ *, int /*<<< orphan*/, int /*<<< orphan*/);
char *getenv(char *);
scalar_t__ memcmp(char *, char *, int);
int mkstemp(char *);
int /*<<< orphan*/ printf(char *, int);
int /*<<< orphan*/ remove(char *);
int scanf(char *, float *, char *);
int /*<<< orphan*/ sprintf(char *, char *, char const *);
int sscanf(char *, char *, ...);
int /*<<< orphan*/ stdin;
int /*<<< orphan*/ strlen(char const *);
int main(void) {
  float f;
  double d;
  char c[8];
  int result = 0;
  if (sscanf(" 0.25s x", "%e%3c", &f, c) != 2)
    do {
      result = 1;
      printf("test at line %d failed\n", 30);
    } while (0);
  else if (f != 0.25 || memcmp(c, "s x", 3) != 0)
    do {
      result = 1;
      printf("test at line %d failed\n", 32);
    } while (0);
  if (sscanf(" 1.25s x", "%as%2c", &f, c) != 2)
    do {
      result = 1;
      printf("test at line %d failed\n", 34);
    } while (0);
  else if (f != 1.25 || memcmp(c, " x", 2) != 0)
    do {
      result = 1;
      printf("test at line %d failed\n", 36);
    } while (0);
  if (sscanf(" 2.25s x", "%las%2c", &d, c) != 2)
    do {
      result = 1;
      printf("test at line %d failed\n", 38);
    } while (0);
  else if (d != 2.25 || memcmp(c, " x", 2) != 0)
    do {
      result = 1;
      printf("test at line %d failed\n", 40);
    } while (0);
  if (sscanf(" 3.25S x", "%4aS%2c", &f, c) != 2)
    do {
      result = 1;
      printf("test at line %d failed\n", 42);
    } while (0);
  else if (f != 3.25 || memcmp(c, " x", 2) != 0)
    do {
      result = 1;
      printf("test at line %d failed\n", 44);
    } while (0);
  if (sscanf(" 4.25[0-9.] x", "%a[0-9.]%2c", &f, c) != 2)
    do {
      result = 1;
      printf("test at line %d failed\n", 46);
    } while (0);
  else if (f != 4.25 || memcmp(c, " x", 2) != 0)
    do {
      result = 1;
      printf("test at line %d failed\n", 48);
    } while (0);
  if (sscanf(" 5.25[0-9.] x", "%la[0-9.]%2c", &d, c) != 2)
    do {
      result = 1;
      printf("test at line %d failed\n", 50);
    } while (0);
  else if (d != 5.25 || memcmp(c, " x", 2) != 0)
    do {
      result = 1;
      printf("test at line %d failed\n", 52);
    } while (0);
  const char *tmpdir = getenv("TMPDIR");
  if (tmpdir == NULL || tmpdir[0] == '\0')
    tmpdir = "/tmp";
  char fname[strlen(tmpdir) + sizeof "/tst-scanf15.XXXXXX"];
  sprintf(fname, "%s/tst-scanf15.XXXXXX", tmpdir);
  if (fname == NULL)
    do {
      result = 1;
      printf("test at line %d failed\n", 61);
    } while (0);
  int fd = mkstemp(fname);
  if (fd == -1)
    do {
      result = 1;
      printf("test at line %d failed\n", 66);
    } while (0);
  FILE *fp = fdopen(fd, "w+");
  if (fp == NULL)
    do {
      result = 1;
      printf("test at line %d failed\n", 70);
    } while (0);
  else {
    if (fputs(" 1.25s x", fp) == EOF)
      do {
        result = 1;
        printf("test at line %d failed\n", 74);
      } while (0);
    if (fseek(fp, 0, SEEK_SET) != 0)
      do {
        result = 1;
        printf("test at line %d failed\n", 76);
      } while (0);
    if (fscanf(fp, "%as%2c", &f, c) != 2)
      do {
        result = 1;
        printf("test at line %d failed\n", 78);
      } while (0);
    else if (f != 1.25 || memcmp(c, " x", 2) != 0)
      do {
        result = 1;
        printf("test at line %d failed\n", 80);
      } while (0);
    if (freopen(fname, "r", stdin) == NULL)
      do {
        result = 1;
        printf("test at line %d failed\n", 83);
      } while (0);
    else {
      if (scanf("%as%2c", &f, c) != 2)
        do {
          result = 1;
          printf("test at line %d failed\n", 87);
        } while (0);
      else if (f != 1.25 || memcmp(c, " x", 2) != 0)
        do {
          result = 1;
          printf("test at line %d failed\n", 89);
        } while (0);
    }
    fclose(fp);
  }
  remove(fname);
  return result;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x1c(%rbp)
lea    -0x18(%rbp),%rcx
lea    0xe1f(%rip),%rdi
lea    0xe21(%rip),%rsi
lea    -0x8(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x2,%eax
je     124e <main+0x5e>
jmp    1231 <main+0x41>
movl   $0x1,-0x1c(%rbp)
lea    0xe00(%rip),%rdi
mov    $0x1e,%esi
call   1070 <printf@plt>
jmp    12b5 <main+0xc5>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xda1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    128e <main+0x9e>
jp     128e <main+0x9e>
lea    -0x18(%rbp),%rdi
lea    0xdbb(%rip),%rsi
mov    $0x3,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     12b0 <main+0xc0>
jmp    1293 <main+0xa3>
movl   $0x1,-0x1c(%rbp)
lea    0xd9e(%rip),%rdi
mov    $0x20,%esi
call   1070 <printf@plt>
jmp    12b0 <main+0xc0>
jmp    12b5 <main+0xc5>
lea    -0x18(%rbp),%rcx
lea    0xd97(%rip),%rdi
lea    0xd99(%rip),%rsi
lea    -0x8(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x2,%eax
je     12fd <main+0x10d>
jmp    12e0 <main+0xf0>
movl   $0x1,-0x1c(%rbp)
lea    0xd51(%rip),%rdi
mov    $0x22,%esi
call   1070 <printf@plt>
jmp    1364 <main+0x174>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcfa(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    133d <main+0x14d>
jp     133d <main+0x14d>
lea    -0x18(%rbp),%rdi
lea    0xd55(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     135f <main+0x16f>
jmp    1342 <main+0x152>
movl   $0x1,-0x1c(%rbp)
lea    0xcef(%rip),%rdi
mov    $0x24,%esi
call   1070 <printf@plt>
jmp    135f <main+0x16f>
jmp    1364 <main+0x174>
lea    -0x18(%rbp),%rcx
lea    0xcf8(%rip),%rdi
lea    0xcfa(%rip),%rsi
lea    -0x10(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x2,%eax
je     13ac <main+0x1bc>
jmp    138f <main+0x19f>
movl   $0x1,-0x1c(%rbp)
lea    0xca2(%rip),%rdi
mov    $0x26,%esi
call   1070 <printf@plt>
jmp    140f <main+0x21f>
movsd  -0x10(%rbp),%xmm0
movsd  0xc57(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    13e8 <main+0x1f8>
jp     13e8 <main+0x1f8>
lea    -0x18(%rbp),%rdi
lea    0xcaa(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     140a <main+0x21a>
jmp    13ed <main+0x1fd>
movl   $0x1,-0x1c(%rbp)
lea    0xc44(%rip),%rdi
mov    $0x28,%esi
call   1070 <printf@plt>
jmp    140a <main+0x21a>
jmp    140f <main+0x21f>
lea    -0x18(%rbp),%rcx
lea    0xc5e(%rip),%rdi
lea    0xc60(%rip),%rsi
lea    -0x8(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x2,%eax
je     1457 <main+0x267>
jmp    143a <main+0x24a>
movl   $0x1,-0x1c(%rbp)
lea    0xbf7(%rip),%rdi
mov    $0x2a,%esi
call   1070 <printf@plt>
jmp    14be <main+0x2ce>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbb0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1497 <main+0x2a7>
jp     1497 <main+0x2a7>
lea    -0x18(%rbp),%rdi
lea    0xbfb(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     14b9 <main+0x2c9>
jmp    149c <main+0x2ac>
movl   $0x1,-0x1c(%rbp)
lea    0xb95(%rip),%rdi
mov    $0x2c,%esi
call   1070 <printf@plt>
jmp    14b9 <main+0x2c9>
jmp    14be <main+0x2ce>
lea    -0x18(%rbp),%rcx
lea    0xbc0(%rip),%rdi
lea    0xbc7(%rip),%rsi
lea    -0x8(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x2,%eax
je     1506 <main+0x316>
jmp    14e9 <main+0x2f9>
movl   $0x1,-0x1c(%rbp)
lea    0xb48(%rip),%rdi
mov    $0x2e,%esi
call   1070 <printf@plt>
jmp    156d <main+0x37d>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb09(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1546 <main+0x356>
jp     1546 <main+0x356>
lea    -0x18(%rbp),%rdi
lea    0xb4c(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     1568 <main+0x378>
jmp    154b <main+0x35b>
movl   $0x1,-0x1c(%rbp)
lea    0xae6(%rip),%rdi
mov    $0x30,%esi
call   1070 <printf@plt>
jmp    1568 <main+0x378>
jmp    156d <main+0x37d>
lea    -0x18(%rbp),%rcx
lea    0xb2b(%rip),%rdi
lea    0xb32(%rip),%rsi
lea    -0x10(%rbp),%rdx
mov    $0x0,%al
call   10c0 <sscanf@plt>
cmp    $0x2,%eax
je     15b5 <main+0x3c5>
jmp    1598 <main+0x3a8>
movl   $0x1,-0x1c(%rbp)
lea    0xa99(%rip),%rdi
mov    $0x32,%esi
call   1070 <printf@plt>
jmp    1618 <main+0x428>
movsd  -0x10(%rbp),%xmm0
movsd  0xa66(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    15f1 <main+0x401>
jp     15f1 <main+0x401>
lea    -0x18(%rbp),%rdi
lea    0xaa1(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     1613 <main+0x423>
jmp    15f6 <main+0x406>
movl   $0x1,-0x1c(%rbp)
lea    0xa3b(%rip),%rdi
mov    $0x34,%esi
call   1070 <printf@plt>
jmp    1613 <main+0x423>
jmp    1618 <main+0x428>
lea    0xa9f(%rip),%rdi
call   1030 <getenv@plt>
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
je     1643 <main+0x453>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    164e <main+0x45e>
lea    0xa7b(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rdi
call   1060 <strlen@plt>
movslq %eax,%rcx
mov    %rcx,%rax
add    $0x14,%rax
mov    %rsp,%rdx
mov    %rdx,-0x30(%rbp)
add    $0x23,%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rsp,%rdi
sub    %rcx,%rdi
mov    %rdi,-0x50(%rbp)
mov    %rdi,%rsp
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rdx
lea    0xa3e(%rip),%rsi
call   1110 <sprintf@plt>
mov    -0x50(%rbp),%rdi
call   10d0 <mkstemp@plt>
mov    %eax,-0x3c(%rbp)
cmpl   $0xffffffff,-0x3c(%rbp)
jne    16ce <main+0x4de>
jmp    16ac <main+0x4bc>
movl   $0x1,-0x1c(%rbp)
lea    0x985(%rip),%rdi
mov    $0x42,%esi
call   1070 <printf@plt>
jmp    16c9 <main+0x4d9>
jmp    16ce <main+0x4de>
mov    -0x3c(%rbp),%edi
lea    0xa08(%rip),%rsi
call   10f0 <fdopen@plt>
mov    %rax,-0x48(%rbp)
cmpq   $0x0,-0x48(%rbp)
jne    1713 <main+0x523>
jmp    16f1 <main+0x501>
movl   $0x1,-0x1c(%rbp)
lea    0x940(%rip),%rdi
mov    $0x46,%esi
call   1070 <printf@plt>
jmp    170e <main+0x51e>
jmp    195b <main+0x76b>
mov    -0x48(%rbp),%rsi
lea    0x939(%rip),%rdi
call   1080 <fputs@plt>
mov    0x28b6(%rip),%rcx
cmp    (%rcx),%rax
jne    175a <main+0x56a>
jmp    1738 <main+0x548>
movl   $0x1,-0x1c(%rbp)
lea    0x8f9(%rip),%rdi
mov    $0x4a,%esi
call   1070 <printf@plt>
jmp    1755 <main+0x565>
jmp    175a <main+0x56a>
mov    -0x48(%rbp),%rdi
mov    0x286b(%rip),%rax
mov    (%rax),%edx
xor    %esi,%esi
call   10e0 <fseek@plt>
cmp    $0x0,%rax
je     179f <main+0x5af>
jmp    177d <main+0x58d>
movl   $0x1,-0x1c(%rbp)
lea    0x8b4(%rip),%rdi
mov    $0x4c,%esi
call   1070 <printf@plt>
jmp    179a <main+0x5aa>
jmp    179f <main+0x5af>
mov    -0x48(%rbp),%rdi
lea    -0x18(%rbp),%rcx
lea    0x8b2(%rip),%rsi
lea    -0x8(%rbp),%rdx
call   10a0 <fscanf@plt>
cmp    $0x2,%eax
je     17e7 <main+0x5f7>
jmp    17c5 <main+0x5d5>
movl   $0x1,-0x1c(%rbp)
lea    0x86c(%rip),%rdi
mov    $0x4e,%esi
call   1070 <printf@plt>
jmp    17e2 <main+0x5f2>
jmp    1853 <main+0x663>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x810(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1827 <main+0x637>
jp     1827 <main+0x637>
lea    -0x18(%rbp),%rdi
lea    0x86b(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     184e <main+0x65e>
jmp    182c <main+0x63c>
movl   $0x1,-0x1c(%rbp)
lea    0x805(%rip),%rdi
mov    $0x50,%esi
call   1070 <printf@plt>
jmp    1849 <main+0x659>
jmp    184e <main+0x65e>
jmp    1853 <main+0x663>
mov    -0x50(%rbp),%rdi
mov    0x278a(%rip),%rax
mov    (%rax),%edx
lea    0x87c(%rip),%rsi
call   1090 <freopen@plt>
cmp    $0x0,%rax
jne    189d <main+0x6ad>
jmp    187b <main+0x68b>
movl   $0x1,-0x1c(%rbp)
lea    0x7b6(%rip),%rdi
mov    $0x53,%esi
call   1070 <printf@plt>
jmp    1898 <main+0x6a8>
jmp    1952 <main+0x762>
lea    -0x18(%rbp),%rdx
lea    0x7b8(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1100 <scanf@plt>
cmp    $0x2,%eax
je     18e1 <main+0x6f1>
jmp    18bf <main+0x6cf>
movl   $0x1,-0x1c(%rbp)
lea    0x772(%rip),%rdi
mov    $0x57,%esi
call   1070 <printf@plt>
jmp    18dc <main+0x6ec>
jmp    194d <main+0x75d>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x716(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1921 <main+0x731>
jp     1921 <main+0x731>
lea    -0x18(%rbp),%rdi
lea    0x771(%rip),%rsi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
cmp    $0x0,%rax
je     1948 <main+0x758>
jmp    1926 <main+0x736>
movl   $0x1,-0x1c(%rbp)
lea    0x70b(%rip),%rdi
mov    $0x59,%esi
call   1070 <printf@plt>
jmp    1943 <main+0x753>
jmp    1948 <main+0x758>
jmp    194d <main+0x75d>
jmp    1952 <main+0x762>
mov    -0x48(%rbp),%rdi
call   1050 <fclose@plt>
mov    -0x50(%rbp),%rdi
call   1040 <remove@plt>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x30(%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    $0x18,%rsp
lea    0xe18(%rip),%rdi
lea    0xe1a(%rip),%rsi
lea    -0x2c(%rbp),%rdx
lea    -0x34(%rbp),%rcx
xor    %eax,%eax
call   10c0 <sscanf@plt>
mov    $0x1e,%ebx
cmp    $0x2,%eax
jne    125b <main+0x6b>
movss  -0x2c(%rbp),%xmm0
mov    $0x20,%ebx
ucomiss 0xdc7(%rip),%xmm0
jne    125b <main+0x6b>
jp     125b <main+0x6b>
lea    0xde1(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x3,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     16a5 <main+0x4b5>
lea    0xdcd(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xdd1(%rip),%rdi
lea    0xdd3(%rip),%rsi
lea    -0x2c(%rbp),%rdx
lea    -0x34(%rbp),%rcx
xor    %eax,%eax
call   10c0 <sscanf@plt>
mov    $0x22,%ebx
cmp    $0x2,%eax
jne    12c5 <main+0xd5>
movss  -0x2c(%rbp),%xmm0
mov    $0x24,%ebx
ucomiss 0xd5d(%rip),%xmm0
jne    12c5 <main+0xd5>
jp     12c5 <main+0xd5>
lea    0xdbc(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     12d9 <main+0xe9>
lea    0xd63(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xd77(%rip),%rdi
lea    0xd79(%rip),%rsi
lea    -0x40(%rbp),%rdx
lea    -0x34(%rbp),%rcx
xor    %eax,%eax
call   10c0 <sscanf@plt>
mov    $0x26,%ebx
cmp    $0x2,%eax
jne    1330 <main+0x140>
movsd  -0x40(%rbp),%xmm0
mov    $0x28,%ebx
ucomisd 0xcfe(%rip),%xmm0
jne    1330 <main+0x140>
jp     1330 <main+0x140>
lea    0xd51(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     1344 <main+0x154>
lea    0xcf8(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xd1d(%rip),%rdi
lea    0xd1f(%rip),%rsi
lea    -0x2c(%rbp),%rdx
lea    -0x34(%rbp),%rcx
xor    %eax,%eax
call   10c0 <sscanf@plt>
mov    $0x2a,%ebx
cmp    $0x2,%eax
jne    139a <main+0x1aa>
movss  -0x2c(%rbp),%xmm0
mov    $0x2c,%ebx
ucomiss 0xc8c(%rip),%xmm0
jne    139a <main+0x1aa>
jp     139a <main+0x1aa>
lea    0xce7(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     13ae <main+0x1be>
lea    0xc8e(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xcc4(%rip),%rdi
lea    0xccb(%rip),%rsi
lea    -0x2c(%rbp),%rdx
lea    -0x34(%rbp),%rcx
xor    %eax,%eax
call   10c0 <sscanf@plt>
mov    $0x2e,%ebx
cmp    $0x2,%eax
jne    1404 <main+0x214>
movss  -0x2c(%rbp),%xmm0
mov    $0x30,%ebx
ucomiss 0xc26(%rip),%xmm0
jne    1404 <main+0x214>
jp     1404 <main+0x214>
lea    0xc7d(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     1418 <main+0x228>
lea    0xc24(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xc74(%rip),%rdi
lea    0xc7b(%rip),%rsi
lea    -0x40(%rbp),%rdx
lea    -0x34(%rbp),%rcx
xor    %eax,%eax
call   10c0 <sscanf@plt>
mov    $0x32,%ebx
cmp    $0x2,%eax
jne    146f <main+0x27f>
movsd  -0x40(%rbp),%xmm0
mov    $0x34,%ebx
ucomisd 0xbc7(%rip),%xmm0
jne    146f <main+0x27f>
jp     146f <main+0x27f>
lea    0xc12(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     1483 <main+0x293>
lea    0xbb9(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xc24(%rip),%rdi
call   1030 <getenv@plt>
test   %rax,%rax
je     149c <main+0x2ac>
mov    %rax,%rbx
cmpb   $0x0,(%rax)
jne    14a3 <main+0x2b3>
lea    0xc12(%rip),%rbx
mov    %rbx,%rdi
call   1060 <strlen@plt>
mov    %rsp,%r12
cltq
mov    %rsp,%r13
add    $0x23,%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%r13
mov    %r13,%rsp
lea    0xbf2(%rip),%rsi
mov    %r13,%rdi
mov    %rbx,%rdx
call   1110 <sprintf@plt>
mov    %r13,%rdi
call   10d0 <mkstemp@plt>
mov    %eax,%ebx
cmp    $0xffffffff,%eax
jne    14f9 <main+0x309>
lea    0xb46(%rip),%rdi
mov    $0x42,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xbd0(%rip),%rsi
mov    %ebx,%edi
call   10f0 <fdopen@plt>
test   %rax,%rax
je     1649 <main+0x459>
mov    %rax,%r15
lea    0xb2d(%rip),%rdi
mov    %rax,%rsi
call   1080 <fputs@plt>
mov    0x2ab7(%rip),%rcx
cmp    (%rcx),%rax
jne    1545 <main+0x355>
lea    0xafa(%rip),%rdi
mov    $0x4a,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
mov    0x2a84(%rip),%rax
mov    (%rax),%edx
mov    %r15,%rdi
xor    %esi,%esi
call   10e0 <fseek@plt>
test   %rax,%rax
je     1574 <main+0x384>
lea    0xacb(%rip),%rdi
mov    $0x4c,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
lea    0xad5(%rip),%rsi
lea    -0x2c(%rbp),%rdx
lea    -0x34(%rbp),%rcx
mov    %r15,%rdi
call   10a0 <fscanf@plt>
mov    $0x4e,%ebx
cmp    $0x2,%eax
jne    15c4 <main+0x3d4>
movss  -0x2c(%rbp),%xmm0
mov    $0x50,%ebx
ucomiss 0xa5e(%rip),%xmm0
jne    15c4 <main+0x3d4>
jp     15c4 <main+0x3d4>
lea    0xabd(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
je     15d8 <main+0x3e8>
lea    0xa64(%rip),%rdi
mov    %ebx,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
mov    0x2a09(%rip),%rax
mov    (%rax),%edx
lea    0xaeb(%rip),%rsi
mov    %r13,%rdi
call   1090 <freopen@plt>
mov    %r12,%rbx
test   %rax,%rax
je     1662 <main+0x472>
lea    0xa51(%rip),%rdi
lea    -0x2c(%rbp),%rsi
lea    -0x34(%rbp),%rdx
call   1100 <scanf@plt>
mov    $0x57,%r12d
cmp    $0x2,%eax
jne    1668 <main+0x478>
movss  -0x2c(%rbp),%xmm0
mov    $0x59,%r12d
ucomiss 0x9db(%rip),%xmm0
jne    1668 <main+0x478>
jp     1668 <main+0x478>
lea    0xa3a(%rip),%rsi
lea    -0x34(%rbp),%rdi
mov    $0x2,%edx
call   10b0 <memcmp@plt>
test   %rax,%rax
jne    1668 <main+0x478>
jmp    167d <main+0x48d>
lea    0x9df(%rip),%rdi
mov    $0x46,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
jmp    1688 <main+0x498>
mov    $0x53,%r12d
lea    0x9c0(%rip),%rdi
mov    %r12d,%esi
call   1070 <printf@plt>
mov    $0x1,%r14d
mov    %r15,%rdi
call   1050 <fclose@plt>
mov    %rbx,%r12
mov    %r13,%rdi
call   1040 <remove@plt>
mov    %r12,%rsp
mov    %r14d,%eax
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %r14d,%r14d
jmp    126f <main+0x7f>

LLVM IR (-O0):
@.str = [9 x i8] c" 0.25s x\00"
@.str.1 = [6 x i8] c"%e%3c\00"
@.str.2 = [24 x i8] c"test at line %d failed\0A\00"
@.str.3 = [4 x i8] c"s x\00"
@.str.4 = [9 x i8] c" 1.25s x\00"
@.str.5 = [7 x i8] c"%as%2c\00"
@.str.6 = [3 x i8] c" x\00"
@.str.7 = [9 x i8] c" 2.25s x\00"
@.str.8 = [8 x i8] c"%las%2c\00"
@.str.9 = [9 x i8] c" 3.25S x\00"
@.str.10 = [8 x i8] c"%4aS%2c\00"
@.str.11 = [14 x i8] c" 4.25[0-9.] x\00"
@.str.12 = [12 x i8] c"%a[0-9.]%2c\00"
@.str.13 = [14 x i8] c" 5.25[0-9.] x\00"
@.str.14 = [13 x i8] c"%la[0-9.]%2c\00"
@.str.15 = [7 x i8] c"TMPDIR\00"
@.str.16 = [5 x i8] c"/tmp\00"
@.str.17 = [22 x i8] c"%s/tst-scanf15.XXXXXX\00"
@.str.18 = [3 x i8] c"w+\00"
@EOF = global i64 0
@SEEK_SET = global i32 0
@.str.19 = [2 x i8] c"r\00"
@stdin = global i32 0
define i32 @main() {
%1 = alloca i32
%2 = alloca float
%3 = alloca double
%4 = alloca [8 x i8]
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i64
%9 = alloca i32
%10 = alloca i32*
store i32 0, i32* %1
store i32 0, i32* %5
%11 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%12 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), float* %2, i8* %11)
%13 = icmp ne i32 %12, 2
br i1 %13, label %14, label %18
14: ; preds = %0
br label %15
15: ; preds = %14
store i32 1, i32* %5
%16 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 30)
br label %17
17: ; preds = %15
br label %31
18: ; preds = %0
%19 = load float, float* %2
%20 = fpext float %19 to double
%21 = fcmp une double %20, 2.500000e-01
br i1 %21, label %26, label %22
22: ; preds = %18
%23 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%24 = call i64 @memcmp(i8* %23, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%25 = icmp ne i64 %24, 0
br i1 %25, label %26, label %30
26: ; preds = %22, %18
br label %27
27: ; preds = %26
store i32 1, i32* %5
%28 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 32)
br label %29
29: ; preds = %27
br label %30
30: ; preds = %29, %22
br label %31
31: ; preds = %30, %17
%32 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%33 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), float* %2, i8* %32)
%34 = icmp ne i32 %33, 2
br i1 %34, label %35, label %39
35: ; preds = %31
br label %36
36: ; preds = %35
store i32 1, i32* %5
%37 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 34)
br label %38
38: ; preds = %36
br label %52
39: ; preds = %31
%40 = load float, float* %2
%41 = fpext float %40 to double
%42 = fcmp une double %41, 1.250000e+00
br i1 %42, label %47, label %43
43: ; preds = %39
%44 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%45 = call i64 @memcmp(i8* %44, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%46 = icmp ne i64 %45, 0
br i1 %46, label %47, label %51
47: ; preds = %43, %39
br label %48
48: ; preds = %47
store i32 1, i32* %5
%49 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 36)
br label %50
50: ; preds = %48
br label %51
51: ; preds = %50, %43
br label %52
52: ; preds = %51, %38
%53 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%54 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), double* %3, i8* %53)
%55 = icmp ne i32 %54, 2
br i1 %55, label %56, label %60
56: ; preds = %52
br label %57
57: ; preds = %56
store i32 1, i32* %5
%58 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 38)
br label %59
59: ; preds = %57
br label %72
60: ; preds = %52
%61 = load double, double* %3
%62 = fcmp une double %61, 2.250000e+00
br i1 %62, label %67, label %63
63: ; preds = %60
%64 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%65 = call i64 @memcmp(i8* %64, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%66 = icmp ne i64 %65, 0
br i1 %66, label %67, label %71
67: ; preds = %63, %60
br label %68
68: ; preds = %67
store i32 1, i32* %5
%69 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 40)
br label %70
70: ; preds = %68
br label %71
71: ; preds = %70, %63
br label %72
72: ; preds = %71, %59
%73 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%74 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0), float* %2, i8* %73)
%75 = icmp ne i32 %74, 2
br i1 %75, label %76, label %80
76: ; preds = %72
br label %77
77: ; preds = %76
store i32 1, i32* %5
%78 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 42)
br label %79
79: ; preds = %77
br label %93
80: ; preds = %72
%81 = load float, float* %2
%82 = fpext float %81 to double
%83 = fcmp une double %82, 3.250000e+00
br i1 %83, label %88, label %84
84: ; preds = %80
%85 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%86 = call i64 @memcmp(i8* %85, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%87 = icmp ne i64 %86, 0
br i1 %87, label %88, label %92
88: ; preds = %84, %80
br label %89
89: ; preds = %88
store i32 1, i32* %5
%90 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 44)
br label %91
91: ; preds = %89
br label %92
92: ; preds = %91, %84
br label %93
93: ; preds = %92, %79
%94 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%95 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0), float* %2, i8* %94)
%96 = icmp ne i32 %95, 2
br i1 %96, label %97, label %101
97: ; preds = %93
br label %98
98: ; preds = %97
store i32 1, i32* %5
%99 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 46)
br label %100
100: ; preds = %98
br label %114
101: ; preds = %93
%102 = load float, float* %2
%103 = fpext float %102 to double
%104 = fcmp une double %103, 4.250000e+00
br i1 %104, label %109, label %105
105: ; preds = %101
%106 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%107 = call i64 @memcmp(i8* %106, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%108 = icmp ne i64 %107, 0
br i1 %108, label %109, label %113
109: ; preds = %105, %101
br label %110
110: ; preds = %109
store i32 1, i32* %5
%111 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 48)
br label %112
112: ; preds = %110
br label %113
113: ; preds = %112, %105
br label %114
114: ; preds = %113, %100
%115 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%116 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0), double* %3, i8* %115)
%117 = icmp ne i32 %116, 2
br i1 %117, label %118, label %122
118: ; preds = %114
br label %119
119: ; preds = %118
store i32 1, i32* %5
%120 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 50)
br label %121
121: ; preds = %119
br label %134
122: ; preds = %114
%123 = load double, double* %3
%124 = fcmp une double %123, 5.250000e+00
br i1 %124, label %129, label %125
125: ; preds = %122
%126 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%127 = call i64 @memcmp(i8* %126, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%128 = icmp ne i64 %127, 0
br i1 %128, label %129, label %133
129: ; preds = %125, %122
br label %130
130: ; preds = %129
store i32 1, i32* %5
%131 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 52)
br label %132
132: ; preds = %130
br label %133
133: ; preds = %132, %125
br label %134
134: ; preds = %133, %121
%135 = call i8* @getenv(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
store i8* %135, i8** %6
%136 = load i8*, i8** %6
%137 = icmp eq i8* %136, null
br i1 %137, label %144, label %138
138: ; preds = %134
%139 = load i8*, i8** %6
%140 = getelementptr inbounds i8, i8* %139, i64 0
%141 = load i8, i8* %140
%142 = sext i8 %141 to i32
%143 = icmp eq i32 %142, 0
br i1 %143, label %144, label %145
144: ; preds = %138, %134
store i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), i8** %6
br label %145
145: ; preds = %144, %138
%146 = load i8*, i8** %6
%147 = call i32 @strlen(i8* %146)
%148 = sext i32 %147 to i64
%149 = add i64 %148, 20
%150 = call i8* @llvm.stacksave()
store i8* %150, i8** %7
%151 = alloca i8, i64 %149
store i64 %149, i64* %8
%152 = load i8*, i8** %6
%153 = call i32 @sprintf(i8* %151, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.17, i64 0, i64 0), i8* %152)
%154 = call i32 @mkstemp(i8* %151)
store i32 %154, i32* %9
%155 = load i32, i32* %9
%156 = icmp eq i32 %155, -1
br i1 %156, label %157, label %162
157: ; preds = %145
br label %158
158: ; preds = %157
store i32 1, i32* %5
%159 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 66)
br label %160
160: ; preds = %158
br label %161
161: ; preds = %160
br label %162
162: ; preds = %161, %145
%163 = load i32, i32* %9
%164 = call i32* @fdopen(i32 %163, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
store i32* %164, i32** %10
%165 = load i32*, i32** %10
%166 = icmp eq i32* %165, null
br i1 %166, label %167, label %172
167: ; preds = %162
br label %168
168: ; preds = %167
store i32 1, i32* %5
%169 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 70)
br label %170
170: ; preds = %168
br label %171
171: ; preds = %170
br label %252
172: ; preds = %162
%173 = load i32*, i32** %10
%174 = call i64 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32* %173)
%175 = load i64, i64* @EOF
%176 = icmp eq i64 %174, %175
br i1 %176, label %177, label %182
177: ; preds = %172
br label %178
178: ; preds = %177
store i32 1, i32* %5
%179 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 74)
br label %180
180: ; preds = %178
br label %181
181: ; preds = %180
br label %182
182: ; preds = %181, %172
%183 = load i32*, i32** %10
%184 = load i32, i32* @SEEK_SET
%185 = call i64 @fseek(i32* %183, i32 0, i32 %184)
%186 = icmp ne i64 %185, 0
br i1 %186, label %187, label %192
187: ; preds = %182
br label %188
188: ; preds = %187
store i32 1, i32* %5
%189 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 76)
br label %190
190: ; preds = %188
br label %191
191: ; preds = %190
br label %192
192: ; preds = %191, %182
%193 = load i32*, i32** %10
%194 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%195 = call i32 @fscanf(i32* %193, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), float* %2, i8* %194)
%196 = icmp ne i32 %195, 2
br i1 %196, label %197, label %202
197: ; preds = %192
br label %198
198: ; preds = %197
store i32 1, i32* %5
%199 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 78)
br label %200
200: ; preds = %198
br label %201
201: ; preds = %200
br label %216
202: ; preds = %192
%203 = load float, float* %2
%204 = fpext float %203 to double
%205 = fcmp une double %204, 1.250000e+00
br i1 %205, label %210, label %206
206: ; preds = %202
%207 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%208 = call i64 @memcmp(i8* %207, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%209 = icmp ne i64 %208, 0
br i1 %209, label %210, label %215
210: ; preds = %206, %202
br label %211
211: ; preds = %210
store i32 1, i32* %5
%212 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 80)
br label %213
213: ; preds = %211
br label %214
214: ; preds = %213
br label %215
215: ; preds = %214, %206
br label %216
216: ; preds = %215, %201
%217 = load i32, i32* @stdin
%218 = call i32* @freopen(i8* %151, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.19, i64 0, i64 0), i32 %217)
%219 = icmp eq i32* %218, null
br i1 %219, label %220, label %225
220: ; preds = %216
br label %221
221: ; preds = %220
store i32 1, i32* %5
%222 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 83)
br label %223
223: ; preds = %221
br label %224
224: ; preds = %223
br label %249
225: ; preds = %216
%226 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%227 = call i32 @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), float* %2, i8* %226)
%228 = icmp ne i32 %227, 2
br i1 %228, label %229, label %234
229: ; preds = %225
br label %230
230: ; preds = %229
store i32 1, i32* %5
%231 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 87)
br label %232
232: ; preds = %230
br label %233
233: ; preds = %232
br label %248
234: ; preds = %225
%235 = load float, float* %2
%236 = fpext float %235 to double
%237 = fcmp une double %236, 1.250000e+00
br i1 %237, label %242, label %238
238: ; preds = %234
%239 = getelementptr inbounds [8 x i8], [8 x i8]* %4, i64 0, i64 0
%240 = call i64 @memcmp(i8* %239, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%241 = icmp ne i64 %240, 0
br i1 %241, label %242, label %247
242: ; preds = %238, %234
br label %243
243: ; preds = %242
store i32 1, i32* %5
%244 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 89)
br label %245
245: ; preds = %243
br label %246
246: ; preds = %245
br label %247
247: ; preds = %246, %238
br label %248
248: ; preds = %247, %233
br label %249
249: ; preds = %248, %224
%250 = load i32*, i32** %10
%251 = call i32 @fclose(i32* %250)
br label %252
252: ; preds = %249, %171
%253 = call i32 @remove(i8* %151)
%254 = load i32, i32* %5
store i32 %254, i32* %1
%255 = load i8*, i8** %7
%256 = load i32, i32* %1
ret i32 %256
}

LLVM IR (-O2):
@.str = [9 x i8] c" 0.25s x\00"
@.str.1 = [6 x i8] c"%e%3c\00"
@.str.2 = [24 x i8] c"test at line %d failed\0A\00"
@.str.3 = [4 x i8] c"s x\00"
@.str.4 = [9 x i8] c" 1.25s x\00"
@.str.5 = [7 x i8] c"%as%2c\00"
@.str.6 = [3 x i8] c" x\00"
@.str.7 = [9 x i8] c" 2.25s x\00"
@.str.8 = [8 x i8] c"%las%2c\00"
@.str.9 = [9 x i8] c" 3.25S x\00"
@.str.10 = [8 x i8] c"%4aS%2c\00"
@.str.11 = [14 x i8] c" 4.25[0-9.] x\00"
@.str.12 = [12 x i8] c"%a[0-9.]%2c\00"
@.str.13 = [14 x i8] c" 5.25[0-9.] x\00"
@.str.14 = [13 x i8] c"%la[0-9.]%2c\00"
@.str.15 = [7 x i8] c"TMPDIR\00"
@.str.16 = [5 x i8] c"/tmp\00"
@.str.17 = [22 x i8] c"%s/tst-scanf15.XXXXXX\00"
@.str.18 = [3 x i8] c"w+\00"
@EOF = global i64 0
@SEEK_SET = global i32 0
@.str.19 = [2 x i8] c"r\00"
@stdin = global i32 0
define i32 @main() {
%1 = alloca float
%2 = alloca double
%3 = alloca [8 x i8]
%4 = bitcast float* %1 to i8*
%5 = bitcast double* %2 to i8*
%6 = getelementptr inbounds [8 x i8], [8 x i8]* %3, i64 0, i64 0
%7 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), float* %1, i8* %6)
%8 = icmp eq i32 %7, 2
br i1 %8, label %9, label %15
9: ; preds = %0
%10 = load float, float* %1
%11 = fcmp une float %10, 2.500000e-01
br i1 %11, label %15, label %12
12: ; preds = %9
%13 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%14 = icmp eq i64 %13, 0
br i1 %14, label %18, label %15
15: ; preds = %12, %9, %0
%16 = phi i32 [ 30, %0 ], [ 32, %9 ], [ 32, %12 ]
%17 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %16)
br label %18
18: ; preds = %15, %12
%19 = phi i32 [ 0, %12 ], [ 1, %15 ]
%20 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), float* %1, i8* %6)
%21 = icmp eq i32 %20, 2
br i1 %21, label %22, label %28
22: ; preds = %18
%23 = load float, float* %1
%24 = fcmp une float %23, 1.250000e+00
br i1 %24, label %28, label %25
25: ; preds = %22
%26 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%27 = icmp eq i64 %26, 0
br i1 %27, label %31, label %28
28: ; preds = %25, %22, %18
%29 = phi i32 [ 34, %18 ], [ 36, %22 ], [ 36, %25 ]
%30 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %29)
br label %31
31: ; preds = %28, %25
%32 = phi i32 [ %19, %25 ], [ 1, %28 ]
%33 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), double* %2, i8* %6)
%34 = icmp eq i32 %33, 2
br i1 %34, label %35, label %41
35: ; preds = %31
%36 = load double, double* %2
%37 = fcmp une double %36, 2.250000e+00
br i1 %37, label %41, label %38
38: ; preds = %35
%39 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%40 = icmp eq i64 %39, 0
br i1 %40, label %44, label %41
41: ; preds = %38, %35, %31
%42 = phi i32 [ 38, %31 ], [ 40, %35 ], [ 40, %38 ]
%43 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %42)
br label %44
44: ; preds = %41, %38
%45 = phi i32 [ %32, %38 ], [ 1, %41 ]
%46 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0), float* %1, i8* %6)
%47 = icmp eq i32 %46, 2
br i1 %47, label %48, label %54
48: ; preds = %44
%49 = load float, float* %1
%50 = fcmp une float %49, 3.250000e+00
br i1 %50, label %54, label %51
51: ; preds = %48
%52 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%53 = icmp eq i64 %52, 0
br i1 %53, label %57, label %54
54: ; preds = %51, %48, %44
%55 = phi i32 [ 42, %44 ], [ 44, %48 ], [ 44, %51 ]
%56 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %55)
br label %57
57: ; preds = %54, %51
%58 = phi i32 [ %45, %51 ], [ 1, %54 ]
%59 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.12, i64 0, i64 0), float* %1, i8* %6)
%60 = icmp eq i32 %59, 2
br i1 %60, label %61, label %67
61: ; preds = %57
%62 = load float, float* %1
%63 = fcmp une float %62, 4.250000e+00
br i1 %63, label %67, label %64
64: ; preds = %61
%65 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%66 = icmp eq i64 %65, 0
br i1 %66, label %70, label %67
67: ; preds = %64, %61, %57
%68 = phi i32 [ 46, %57 ], [ 48, %61 ], [ 48, %64 ]
%69 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %68)
br label %70
70: ; preds = %67, %64
%71 = phi i32 [ %58, %64 ], [ 1, %67 ]
%72 = call i32 (i8*, i8*, ...) @sscanf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0), double* %2, i8* %6)
%73 = icmp eq i32 %72, 2
br i1 %73, label %74, label %80
74: ; preds = %70
%75 = load double, double* %2
%76 = fcmp une double %75, 5.250000e+00
br i1 %76, label %80, label %77
77: ; preds = %74
%78 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%79 = icmp eq i64 %78, 0
br i1 %79, label %83, label %80
80: ; preds = %77, %74, %70
%81 = phi i32 [ 50, %70 ], [ 52, %74 ], [ 52, %77 ]
%82 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %81)
br label %83
83: ; preds = %80, %77
%84 = phi i32 [ %71, %77 ], [ 1, %80 ]
%85 = call i8* @getenv(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.15, i64 0, i64 0))
%86 = icmp eq i8* %85, null
br i1 %86, label %90, label %87
87: ; preds = %83
%88 = load i8, i8* %85
%89 = icmp eq i8 %88, 0
br i1 %89, label %90, label %91
90: ; preds = %87, %83
br label %91
91: ; preds = %90, %87
%92 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.16, i64 0, i64 0), %90 ], [ %85, %87 ]
%93 = call i32 @strlen(i8* %92)
%94 = sext i32 %93 to i64
%95 = add nsw i64 %94, 20
%96 = call i8* @llvm.stacksave()
%97 = alloca i8, i64 %95
%98 = call i32 @sprintf(i8* %97, i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.17, i64 0, i64 0), i8* %92)
%99 = call i32 @mkstemp(i8* %97)
%100 = icmp eq i32 %99, -1
br i1 %100, label %101, label %103
101: ; preds = %91
%102 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 66)
br label %103
103: ; preds = %101, %91
%104 = phi i32 [ 1, %101 ], [ %84, %91 ]
%105 = call i32* @fdopen(i32 %99, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
%106 = icmp eq i32* %105, null
br i1 %106, label %107, label %109
107: ; preds = %103
%108 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 70)
br label %155
109: ; preds = %103
%110 = call i64 @fputs(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.4, i64 0, i64 0), i32* %105)
%111 = load i64, i64* @EOF
%112 = icmp eq i64 %110, %111
br i1 %112, label %113, label %115
113: ; preds = %109
%114 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 74)
br label %115
115: ; preds = %113, %109
%116 = phi i32 [ 1, %113 ], [ %104, %109 ]
%117 = load i32, i32* @SEEK_SET
%118 = call i64 @fseek(i32* %105, i32 0, i32 %117)
%119 = icmp eq i64 %118, 0
br i1 %119, label %122, label %120
120: ; preds = %115
%121 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 76)
br label %122
122: ; preds = %120, %115
%123 = phi i32 [ 1, %120 ], [ %116, %115 ]
%124 = call i32 @fscanf(i32* %105, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), float* %1, i8* %6)
%125 = icmp eq i32 %124, 2
br i1 %125, label %126, label %132
126: ; preds = %122
%127 = load float, float* %1
%128 = fcmp une float %127, 1.250000e+00
br i1 %128, label %132, label %129
129: ; preds = %126
%130 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%131 = icmp eq i64 %130, 0
br i1 %131, label %135, label %132
132: ; preds = %129, %126, %122
%133 = phi i32 [ 78, %122 ], [ 80, %126 ], [ 80, %129 ]
%134 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %133)
br label %135
135: ; preds = %132, %129
%136 = phi i32 [ %123, %129 ], [ 1, %132 ]
%137 = load i32, i32* @stdin
%138 = call i32* @freopen(i8* %97, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.19, i64 0, i64 0), i32 %137)
%139 = icmp eq i32* %138, null
br i1 %139, label %149, label %140
140: ; preds = %135
%141 = call i32 @scanf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i64 0, i64 0), float* %1, i8* %6)
%142 = icmp eq i32 %141, 2
br i1 %142, label %143, label %149
143: ; preds = %140
%144 = load float, float* %1
%145 = fcmp une float %144, 1.250000e+00
br i1 %145, label %149, label %146
146: ; preds = %143
%147 = call i64 @memcmp(i8* %6, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i32 2)
%148 = icmp eq i64 %147, 0
br i1 %148, label %152, label %149
149: ; preds = %146, %143, %140, %135
%150 = phi i32 [ 83, %135 ], [ 87, %140 ], [ 89, %143 ], [ 89, %146 ]
%151 = call i32 @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i32 %150)
br label %152
152: ; preds = %149, %146
%153 = phi i32 [ %136, %146 ], [ 1, %149 ]
%154 = call i32 @fclose(i32* %105)
br label %155
155: ; preds = %152, %107
%156 = phi i32 [ 1, %107 ], [ %153, %152 ]
%157 = call i32 @remove(i8* %97)
ret i32 %156
}