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

/* Variables and functions */
int /*<<< orphan*/ check_double(int, int /*<<< orphan*/, char *, int, int *);
int /*<<< orphan*/ grisu3_parse_double(char *, int /*<<< orphan*/, double *);
int /*<<< orphan*/ sprintf(char *, char *, char *, int);
int /*<<< orphan*/ strlen(char *);
int test_grisu3_print_double() {
  int fail = 0;
  char *id = "grisu3_print_double";
  double v;
  char *vector;
  char buf[1001];
  vector = "13";
  check_double((13e-2),
               ((sprintf(buf, "%se%d", vector, -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 411, &fail);
  check_double((13e-3),
               ((sprintf(buf, "%se%d", vector, -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 412, &fail);
  vector = "-13";
  check_double((-13e-2),
               ((sprintf(buf, "%se%d", vector, -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 415, &fail);
  check_double((-13e-3),
               ((sprintf(buf, "%se%d", vector, -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 416, &fail);
  vector = "-1";
  check_double((-1e-2),
               ((sprintf(buf, "%se%d", vector, -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 418, &fail);
  check_double((-1e-3),
               ((sprintf(buf, "%se%d", vector, -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 419, &fail);
  check_double((-1e1),
               ((sprintf(buf, "%se%d", "-1", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 421, &fail);
  check_double((-1e+1),
               ((sprintf(buf, "%se%d", "-1", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 422, &fail);
  check_double((-1e-0),
               ((sprintf(buf, "%se%d", "-1", -0),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 423, &fail);
  check_double((-1e-1),
               ((sprintf(buf, "%se%d", "-1", -1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 424, &fail);
  check_double((-1e-2),
               ((sprintf(buf, "%se%d", "-1", -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 425, &fail);
  check_double((-1e-3),
               ((sprintf(buf, "%se%d", "-1", -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 426, &fail);
  check_double((-1e-4),
               ((sprintf(buf, "%se%d", "-1", -4),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 427, &fail);
  check_double((-12e1),
               ((sprintf(buf, "%se%d", "-12", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 429, &fail);
  check_double((-12e+1),
               ((sprintf(buf, "%se%d", "-12", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 430, &fail);
  check_double((-12e-0),
               ((sprintf(buf, "%se%d", "-12", -0),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 431, &fail);
  check_double((-12e-1),
               ((sprintf(buf, "%se%d", "-12", -1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 432, &fail);
  check_double((-12e-2),
               ((sprintf(buf, "%se%d", "-12", -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 433, &fail);
  check_double((-12e-3),
               ((sprintf(buf, "%se%d", "-12", -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 434, &fail);
  check_double((-12e-4),
               ((sprintf(buf, "%se%d", "-12", -4),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 435, &fail);
  check_double((-123e1),
               ((sprintf(buf, "%se%d", "-123", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 437, &fail);
  check_double((-123e+1),
               ((sprintf(buf, "%se%d", "-123", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 438, &fail);
  check_double((-123e-0),
               ((sprintf(buf, "%se%d", "-123", -0),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 439, &fail);
  check_double((-123e-1),
               ((sprintf(buf, "%se%d", "-123", -1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 440, &fail);
  check_double((-123e-2),
               ((sprintf(buf, "%se%d", "-123", -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 441, &fail);
  check_double((-123e-3),
               ((sprintf(buf, "%se%d", "-123", -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 442, &fail);
  check_double((-123e-4),
               ((sprintf(buf, "%se%d", "-123", -4),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 443, &fail);
  check_double((-1234e1),
               ((sprintf(buf, "%se%d", "-1234", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 445, &fail);
  check_double((-1234e+1),
               ((sprintf(buf, "%se%d", "-1234", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 446, &fail);
  check_double((-1234e-0),
               ((sprintf(buf, "%se%d", "-1234", -0),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 447, &fail);
  check_double((-1234e-1),
               ((sprintf(buf, "%se%d", "-1234", -1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 448, &fail);
  check_double((-1234e-2),
               ((sprintf(buf, "%se%d", "-1234", -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 449, &fail);
  check_double((-1234e-3),
               ((sprintf(buf, "%se%d", "-1234", -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 450, &fail);
  check_double((-1234e-4),
               ((sprintf(buf, "%se%d", "-1234", -4),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 451, &fail);
  check_double((-12345e1),
               ((sprintf(buf, "%se%d", "-12345", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 453, &fail);
  check_double((-12345e+1),
               ((sprintf(buf, "%se%d", "-12345", 1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 454, &fail);
  check_double((-12345e-0),
               ((sprintf(buf, "%se%d", "-12345", -0),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 455, &fail);
  check_double((-12345e-1),
               ((sprintf(buf, "%se%d", "-12345", -1),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 456, &fail);
  check_double((-12345e-2),
               ((sprintf(buf, "%se%d", "-12345", -2),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 457, &fail);
  check_double((-12345e-3),
               ((sprintf(buf, "%se%d", "-12345", -3),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 458, &fail);
  check_double((-12345e-4),
               ((sprintf(buf, "%se%d", "-12345", -4),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 459, &fail);
  check_double((-12345e-5),
               ((sprintf(buf, "%se%d", "-12345", -5),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 461, &fail);
  check_double((-12345e-6),
               ((sprintf(buf, "%se%d", "-12345", -6),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 462, &fail);
  check_double((-12345e-7),
               ((sprintf(buf, "%se%d", "-12345", -7),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 463, &fail);
  check_double((-12345e-8),
               ((sprintf(buf, "%se%d", "-12345", -8),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 464, &fail);
  check_double((-12345e-9),
               ((sprintf(buf, "%se%d", "-12345", -9),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 465, &fail);
  check_double((-12345e-10),
               ((sprintf(buf, "%se%d", "-12345", -10),
                 grisu3_parse_double(buf, strlen(buf), &v), v)),
               id, 466, &fail);
  return fail;
}


x86 assembly (clang, -O0):
<test_grisu3_print_double>:
push   %rbp
mov    %rsp,%rbp
sub    $0x590,%rsp
movl   $0x0,-0x4(%rbp)
lea    0x1ea7(%rip),%rax
mov    %rax,-0x10(%rbp)
lea    0x1eb7(%rip),%rax
mov    %rax,-0x20(%rbp)
lea    -0x410(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x1e9a(%rip),%rsi
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x588(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x588(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x19b,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x1e39(%rip),%rsi
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x580(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x580(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x19c,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    0x1de9(%rip),%rax
mov    %rax,-0x20(%rbp)
lea    -0x410(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x1dcd(%rip),%rsi
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x578(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x578(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x19f,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x1d6c(%rip),%rsi
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x570(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x570(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1a0,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    0x1d20(%rip),%rax
mov    %rax,-0x20(%rbp)
lea    -0x410(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x1d00(%rip),%rsi
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x568(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x568(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1a2,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
mov    -0x20(%rbp),%rdx
lea    0x1c9f(%rip),%rsi
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x560(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x560(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1a3,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1c42(%rip),%rsi
lea    0x1c45(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x558(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x558(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffff6,%edi
mov    $0x1a5,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1bdb(%rip),%rsi
lea    0x1bde(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x550(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x550(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffff6,%edi
mov    $0x1a6,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1b74(%rip),%rsi
lea    0x1b77(%rip),%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x548(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x548(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffffff,%edi
mov    $0x1a7,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1b10(%rip),%rsi
lea    0x1b13(%rip),%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x540(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x540(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1a8,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1aac(%rip),%rsi
lea    0x1aaf(%rip),%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x538(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x538(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1a9,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1a48(%rip),%rsi
lea    0x1a4b(%rip),%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x530(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x530(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1aa,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x19e4(%rip),%rsi
lea    0x19e7(%rip),%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x528(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x528(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1ab,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1980(%rip),%rsi
lea    0x1986(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x520(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x520(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffff88,%edi
mov    $0x1ad,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1919(%rip),%rsi
lea    0x191f(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x518(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x518(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffff88,%edi
mov    $0x1ae,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x18b2(%rip),%rsi
lea    0x18b8(%rip),%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x510(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x510(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffff4,%edi
mov    $0x1af,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x184e(%rip),%rsi
lea    0x1854(%rip),%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x508(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x508(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffffff,%edi
mov    $0x1b0,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x17e7(%rip),%rsi
lea    0x17ed(%rip),%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x500(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x500(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1b1,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1783(%rip),%rsi
lea    0x1789(%rip),%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4f8(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4f8(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1b2,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x171f(%rip),%rsi
lea    0x1725(%rip),%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4f0(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4f0(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1b3,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x16bb(%rip),%rsi
lea    0x16c5(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4e8(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4e8(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffb32,%edi
mov    $0x1b5,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1654(%rip),%rsi
lea    0x165e(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4e0(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4e0(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffb32,%edi
mov    $0x1b6,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x15ed(%rip),%rsi
lea    0x15f7(%rip),%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4d8(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4d8(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffff85,%edi
mov    $0x1b7,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1589(%rip),%rsi
lea    0x1593(%rip),%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4d0(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4d0(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffff4,%edi
mov    $0x1b8,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1522(%rip),%rsi
lea    0x152c(%rip),%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4c8(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4c8(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffffff,%edi
mov    $0x1b9,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x14bb(%rip),%rsi
lea    0x14c5(%rip),%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4c0(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4c0(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1ba,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1457(%rip),%rsi
lea    0x1461(%rip),%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4b8(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4b8(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1bb,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x13f3(%rip),%rsi
lea    0x1402(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4b0(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4b0(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffcfcc,%edi
mov    $0x1bd,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x138c(%rip),%rsi
lea    0x139b(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4a8(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4a8(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffcfcc,%edi
mov    $0x1be,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1325(%rip),%rsi
lea    0x1334(%rip),%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x4a0(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x4a0(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffb2e,%edi
mov    $0x1bf,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x12c1(%rip),%rsi
lea    0x12d0(%rip),%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x498(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x498(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffff85,%edi
mov    $0x1c0,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x125a(%rip),%rsi
lea    0x1269(%rip),%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x490(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x490(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffff4,%edi
mov    $0x1c1,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x11f3(%rip),%rsi
lea    0x1202(%rip),%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x488(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x488(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffffff,%edi
mov    $0x1c2,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x118c(%rip),%rsi
lea    0x119b(%rip),%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x480(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x480(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1c3,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x1128(%rip),%rsi
lea    0x113d(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x478(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x478(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffe1dc6,%edi
mov    $0x1c5,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x10c1(%rip),%rsi
lea    0x10d6(%rip),%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x470(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x470(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffe1dc6,%edi
mov    $0x1c6,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0x105a(%rip),%rsi
lea    0x106f(%rip),%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x468(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x468(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffcfc7,%edi
mov    $0x1c7,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xff6(%rip),%rsi
lea    0x100b(%rip),%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x460(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x460(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffb2e,%edi
mov    $0x1c8,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xf8f(%rip),%rsi
lea    0xfa4(%rip),%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x458(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x458(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffff85,%edi
mov    $0x1c9,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xf28(%rip),%rsi
lea    0xf3d(%rip),%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x450(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x450(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xfffffff4,%edi
mov    $0x1ca,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xec1(%rip),%rsi
lea    0xed6(%rip),%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x448(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x448(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
mov    $0xffffffff,%edi
mov    $0x1cb,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xe5a(%rip),%rsi
lea    0xe6f(%rip),%rdx
mov    $0xfffffffb,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x440(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x440(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1cd,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xdf6(%rip),%rsi
lea    0xe0b(%rip),%rdx
mov    $0xfffffffa,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x438(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x438(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1ce,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xd92(%rip),%rsi
lea    0xda7(%rip),%rdx
mov    $0xfffffff9,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x430(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x430(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1cf,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xd2e(%rip),%rsi
lea    0xd43(%rip),%rdx
mov    $0xfffffff8,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x428(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x428(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1d0,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xcca(%rip),%rsi
lea    0xcdf(%rip),%rdx
mov    $0xfffffff7,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x420(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x420(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1d1,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
lea    -0x410(%rbp),%rdi
lea    0xc66(%rip),%rsi
lea    0xc7b(%rip),%rdx
mov    $0xfffffff6,%ecx
call   1060 <sprintf@plt>
lea    -0x410(%rbp),%rax
mov    %rax,-0x418(%rbp)
lea    -0x410(%rbp),%rdi
call   1030 <strlen@plt>
mov    -0x418(%rbp),%rdi
mov    %eax,%esi
lea    -0x18(%rbp),%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si -0x18(%rbp),%esi
mov    -0x10(%rbp),%rdx
xor    %edi,%edi
mov    $0x1d2,%ecx
lea    -0x4(%rbp),%r8
call   1040 <check_double@plt>
mov    -0x4(%rbp),%eax
add    $0x590,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_grisu3_print_double>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x408,%rsp
movl   $0x0,0xc(%rsp)
lea    0xeb4(%rip),%r14
lea    0xeb4(%rip),%rbp
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rsp,%r15
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
lea    0xe5d(%rip),%r12
lea    0xc(%rsp),%r13
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x19b,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x19c,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
lea    0xe1a(%rip),%rbp
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x19f,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1a0,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
lea    0xd99(%rip),%rbp
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1a2,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1a3,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffff6,%edi
mov    %r12,%rdx
mov    $0x1a5,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffff6,%edi
mov    %r12,%rdx
mov    $0x1a6,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffffff,%edi
mov    %r12,%rdx
mov    $0x1a7,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1a8,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1a9,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1aa,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1ab,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
lea    0xb58(%rip),%rbp
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffff88,%edi
mov    %r12,%rdx
mov    $0x1ad,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffff88,%edi
mov    %r12,%rdx
mov    $0x1ae,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffff4,%edi
mov    %r12,%rdx
mov    $0x1af,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffffff,%edi
mov    %r12,%rdx
mov    $0x1b0,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1b1,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1b2,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1b3,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
lea    0x993(%rip),%rbp
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffb32,%edi
mov    %r12,%rdx
mov    $0x1b5,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffb32,%edi
mov    %r12,%rdx
mov    $0x1b6,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffff85,%edi
mov    %r12,%rdx
mov    $0x1b7,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffff4,%edi
mov    %r12,%rdx
mov    $0x1b8,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffffff,%edi
mov    %r12,%rdx
mov    $0x1b9,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1ba,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1bb,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
lea    0x7cc(%rip),%rbp
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffcfcc,%edi
mov    %r12,%rdx
mov    $0x1bd,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffcfcc,%edi
mov    %r12,%rdx
mov    $0x1be,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffb2e,%edi
mov    %r12,%rdx
mov    $0x1bf,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffff85,%edi
mov    %r12,%rdx
mov    $0x1c0,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffff4,%edi
mov    %r12,%rdx
mov    $0x1c1,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffffff,%edi
mov    %r12,%rdx
mov    $0x1c2,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1c3,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
lea    0x603(%rip),%rbp
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffe1dc6,%edi
mov    %r12,%rdx
mov    $0x1c5,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0x1,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffe1dc6,%edi
mov    %r12,%rdx
mov    $0x1c6,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
xor    %ecx,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffcfc7,%edi
mov    %r12,%rdx
mov    $0x1c7,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xffffffff,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffb2e,%edi
mov    %r12,%rdx
mov    $0x1c8,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffe,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffff85,%edi
mov    %r12,%rdx
mov    $0x1c9,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffd,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xfffffff4,%edi
mov    %r12,%rdx
mov    $0x1ca,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffc,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
mov    $0xffffffff,%edi
mov    %r12,%rdx
mov    $0x1cb,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffb,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1cd,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffffa,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1ce,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffff9,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1cf,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffff8,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1d0,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffff7,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1d1,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
mov    %rbp,%rdx
mov    $0xfffffff6,%ecx
call   1060 <sprintf@plt>
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rbx,%rdi
mov    %eax,%esi
mov    %r15,%rdx
call   1050 <grisu3_parse_double@plt>
cvttsd2si (%rsp),%esi
xor    %edi,%edi
mov    %r12,%rdx
mov    $0x1d2,%ecx
mov    %r13,%r8
call   1040 <check_double@plt>
mov    0xc(%rsp),%eax
add    $0x408,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [20 x i8] c"grisu3_print_double\00"
@.str.1 = [3 x i8] c"13\00"
@.str.2 = [6 x i8] c"%se%d\00"
@.str.3 = [4 x i8] c"-13\00"
@.str.4 = [3 x i8] c"-1\00"
@.str.5 = [4 x i8] c"-12\00"
@.str.6 = [5 x i8] c"-123\00"
@.str.7 = [6 x i8] c"-1234\00"
@.str.8 = [7 x i8] c"-12345\00"
define i32 @test_grisu3_print_double() {
%1 = alloca i32
%2 = alloca i8*
%3 = alloca double
%4 = alloca i8*
%5 = alloca [1001 x i8]
store i32 0, i32* %1
store i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i8** %2
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8** %4
%6 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%7 = load i8*, i8** %4
%8 = call i32 @sprintf(i8* %6, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %7, i32 -2)
%9 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%10 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%11 = call i32 @strlen(i8* %10)
%12 = call i32 @grisu3_parse_double(i8* %9, i32 %11, double* %3)
%13 = load double, double* %3
%14 = fptosi double %13 to i32
%15 = load i8*, i8** %2
%16 = call i32 @check_double(i32 0, i32 %14, i8* %15, i32 411, i32* %1)
%17 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%18 = load i8*, i8** %4
%19 = call i32 @sprintf(i8* %17, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %18, i32 -3)
%20 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%21 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%22 = call i32 @strlen(i8* %21)
%23 = call i32 @grisu3_parse_double(i8* %20, i32 %22, double* %3)
%24 = load double, double* %3
%25 = fptosi double %24 to i32
%26 = load i8*, i8** %2
%27 = call i32 @check_double(i32 0, i32 %25, i8* %26, i32 412, i32* %1)
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8** %4
%28 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%29 = load i8*, i8** %4
%30 = call i32 @sprintf(i8* %28, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %29, i32 -2)
%31 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%32 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%33 = call i32 @strlen(i8* %32)
%34 = call i32 @grisu3_parse_double(i8* %31, i32 %33, double* %3)
%35 = load double, double* %3
%36 = fptosi double %35 to i32
%37 = load i8*, i8** %2
%38 = call i32 @check_double(i32 0, i32 %36, i8* %37, i32 415, i32* %1)
%39 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%40 = load i8*, i8** %4
%41 = call i32 @sprintf(i8* %39, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %40, i32 -3)
%42 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%43 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%44 = call i32 @strlen(i8* %43)
%45 = call i32 @grisu3_parse_double(i8* %42, i32 %44, double* %3)
%46 = load double, double* %3
%47 = fptosi double %46 to i32
%48 = load i8*, i8** %2
%49 = call i32 @check_double(i32 0, i32 %47, i8* %48, i32 416, i32* %1)
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8** %4
%50 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%51 = load i8*, i8** %4
%52 = call i32 @sprintf(i8* %50, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %51, i32 -2)
%53 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%54 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%55 = call i32 @strlen(i8* %54)
%56 = call i32 @grisu3_parse_double(i8* %53, i32 %55, double* %3)
%57 = load double, double* %3
%58 = fptosi double %57 to i32
%59 = load i8*, i8** %2
%60 = call i32 @check_double(i32 0, i32 %58, i8* %59, i32 418, i32* %1)
%61 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%62 = load i8*, i8** %4
%63 = call i32 @sprintf(i8* %61, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* %62, i32 -3)
%64 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%65 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%66 = call i32 @strlen(i8* %65)
%67 = call i32 @grisu3_parse_double(i8* %64, i32 %66, double* %3)
%68 = load double, double* %3
%69 = fptosi double %68 to i32
%70 = load i8*, i8** %2
%71 = call i32 @check_double(i32 0, i32 %69, i8* %70, i32 419, i32* %1)
%72 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%73 = call i32 @sprintf(i8* %72, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 1)
%74 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%75 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%76 = call i32 @strlen(i8* %75)
%77 = call i32 @grisu3_parse_double(i8* %74, i32 %76, double* %3)
%78 = load double, double* %3
%79 = fptosi double %78 to i32
%80 = load i8*, i8** %2
%81 = call i32 @check_double(i32 -10, i32 %79, i8* %80, i32 421, i32* %1)
%82 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%83 = call i32 @sprintf(i8* %82, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 1)
%84 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%85 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%86 = call i32 @strlen(i8* %85)
%87 = call i32 @grisu3_parse_double(i8* %84, i32 %86, double* %3)
%88 = load double, double* %3
%89 = fptosi double %88 to i32
%90 = load i8*, i8** %2
%91 = call i32 @check_double(i32 -10, i32 %89, i8* %90, i32 422, i32* %1)
%92 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%93 = call i32 @sprintf(i8* %92, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 0)
%94 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%95 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%96 = call i32 @strlen(i8* %95)
%97 = call i32 @grisu3_parse_double(i8* %94, i32 %96, double* %3)
%98 = load double, double* %3
%99 = fptosi double %98 to i32
%100 = load i8*, i8** %2
%101 = call i32 @check_double(i32 -1, i32 %99, i8* %100, i32 423, i32* %1)
%102 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%103 = call i32 @sprintf(i8* %102, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -1)
%104 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%105 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%106 = call i32 @strlen(i8* %105)
%107 = call i32 @grisu3_parse_double(i8* %104, i32 %106, double* %3)
%108 = load double, double* %3
%109 = fptosi double %108 to i32
%110 = load i8*, i8** %2
%111 = call i32 @check_double(i32 0, i32 %109, i8* %110, i32 424, i32* %1)
%112 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%113 = call i32 @sprintf(i8* %112, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -2)
%114 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%115 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%116 = call i32 @strlen(i8* %115)
%117 = call i32 @grisu3_parse_double(i8* %114, i32 %116, double* %3)
%118 = load double, double* %3
%119 = fptosi double %118 to i32
%120 = load i8*, i8** %2
%121 = call i32 @check_double(i32 0, i32 %119, i8* %120, i32 425, i32* %1)
%122 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%123 = call i32 @sprintf(i8* %122, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -3)
%124 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%125 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%126 = call i32 @strlen(i8* %125)
%127 = call i32 @grisu3_parse_double(i8* %124, i32 %126, double* %3)
%128 = load double, double* %3
%129 = fptosi double %128 to i32
%130 = load i8*, i8** %2
%131 = call i32 @check_double(i32 0, i32 %129, i8* %130, i32 426, i32* %1)
%132 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%133 = call i32 @sprintf(i8* %132, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -4)
%134 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%135 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%136 = call i32 @strlen(i8* %135)
%137 = call i32 @grisu3_parse_double(i8* %134, i32 %136, double* %3)
%138 = load double, double* %3
%139 = fptosi double %138 to i32
%140 = load i8*, i8** %2
%141 = call i32 @check_double(i32 0, i32 %139, i8* %140, i32 427, i32* %1)
%142 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%143 = call i32 @sprintf(i8* %142, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 1)
%144 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%145 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%146 = call i32 @strlen(i8* %145)
%147 = call i32 @grisu3_parse_double(i8* %144, i32 %146, double* %3)
%148 = load double, double* %3
%149 = fptosi double %148 to i32
%150 = load i8*, i8** %2
%151 = call i32 @check_double(i32 -120, i32 %149, i8* %150, i32 429, i32* %1)
%152 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%153 = call i32 @sprintf(i8* %152, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 1)
%154 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%155 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%156 = call i32 @strlen(i8* %155)
%157 = call i32 @grisu3_parse_double(i8* %154, i32 %156, double* %3)
%158 = load double, double* %3
%159 = fptosi double %158 to i32
%160 = load i8*, i8** %2
%161 = call i32 @check_double(i32 -120, i32 %159, i8* %160, i32 430, i32* %1)
%162 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%163 = call i32 @sprintf(i8* %162, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 0)
%164 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%165 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%166 = call i32 @strlen(i8* %165)
%167 = call i32 @grisu3_parse_double(i8* %164, i32 %166, double* %3)
%168 = load double, double* %3
%169 = fptosi double %168 to i32
%170 = load i8*, i8** %2
%171 = call i32 @check_double(i32 -12, i32 %169, i8* %170, i32 431, i32* %1)
%172 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%173 = call i32 @sprintf(i8* %172, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -1)
%174 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%175 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%176 = call i32 @strlen(i8* %175)
%177 = call i32 @grisu3_parse_double(i8* %174, i32 %176, double* %3)
%178 = load double, double* %3
%179 = fptosi double %178 to i32
%180 = load i8*, i8** %2
%181 = call i32 @check_double(i32 -1, i32 %179, i8* %180, i32 432, i32* %1)
%182 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%183 = call i32 @sprintf(i8* %182, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -2)
%184 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%185 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%186 = call i32 @strlen(i8* %185)
%187 = call i32 @grisu3_parse_double(i8* %184, i32 %186, double* %3)
%188 = load double, double* %3
%189 = fptosi double %188 to i32
%190 = load i8*, i8** %2
%191 = call i32 @check_double(i32 0, i32 %189, i8* %190, i32 433, i32* %1)
%192 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%193 = call i32 @sprintf(i8* %192, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -3)
%194 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%195 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%196 = call i32 @strlen(i8* %195)
%197 = call i32 @grisu3_parse_double(i8* %194, i32 %196, double* %3)
%198 = load double, double* %3
%199 = fptosi double %198 to i32
%200 = load i8*, i8** %2
%201 = call i32 @check_double(i32 0, i32 %199, i8* %200, i32 434, i32* %1)
%202 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%203 = call i32 @sprintf(i8* %202, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -4)
%204 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%205 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%206 = call i32 @strlen(i8* %205)
%207 = call i32 @grisu3_parse_double(i8* %204, i32 %206, double* %3)
%208 = load double, double* %3
%209 = fptosi double %208 to i32
%210 = load i8*, i8** %2
%211 = call i32 @check_double(i32 0, i32 %209, i8* %210, i32 435, i32* %1)
%212 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%213 = call i32 @sprintf(i8* %212, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 1)
%214 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%215 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%216 = call i32 @strlen(i8* %215)
%217 = call i32 @grisu3_parse_double(i8* %214, i32 %216, double* %3)
%218 = load double, double* %3
%219 = fptosi double %218 to i32
%220 = load i8*, i8** %2
%221 = call i32 @check_double(i32 -1230, i32 %219, i8* %220, i32 437, i32* %1)
%222 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%223 = call i32 @sprintf(i8* %222, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 1)
%224 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%225 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%226 = call i32 @strlen(i8* %225)
%227 = call i32 @grisu3_parse_double(i8* %224, i32 %226, double* %3)
%228 = load double, double* %3
%229 = fptosi double %228 to i32
%230 = load i8*, i8** %2
%231 = call i32 @check_double(i32 -1230, i32 %229, i8* %230, i32 438, i32* %1)
%232 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%233 = call i32 @sprintf(i8* %232, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 0)
%234 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%235 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%236 = call i32 @strlen(i8* %235)
%237 = call i32 @grisu3_parse_double(i8* %234, i32 %236, double* %3)
%238 = load double, double* %3
%239 = fptosi double %238 to i32
%240 = load i8*, i8** %2
%241 = call i32 @check_double(i32 -123, i32 %239, i8* %240, i32 439, i32* %1)
%242 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%243 = call i32 @sprintf(i8* %242, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -1)
%244 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%245 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%246 = call i32 @strlen(i8* %245)
%247 = call i32 @grisu3_parse_double(i8* %244, i32 %246, double* %3)
%248 = load double, double* %3
%249 = fptosi double %248 to i32
%250 = load i8*, i8** %2
%251 = call i32 @check_double(i32 -12, i32 %249, i8* %250, i32 440, i32* %1)
%252 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%253 = call i32 @sprintf(i8* %252, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -2)
%254 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%255 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%256 = call i32 @strlen(i8* %255)
%257 = call i32 @grisu3_parse_double(i8* %254, i32 %256, double* %3)
%258 = load double, double* %3
%259 = fptosi double %258 to i32
%260 = load i8*, i8** %2
%261 = call i32 @check_double(i32 -1, i32 %259, i8* %260, i32 441, i32* %1)
%262 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%263 = call i32 @sprintf(i8* %262, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -3)
%264 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%265 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%266 = call i32 @strlen(i8* %265)
%267 = call i32 @grisu3_parse_double(i8* %264, i32 %266, double* %3)
%268 = load double, double* %3
%269 = fptosi double %268 to i32
%270 = load i8*, i8** %2
%271 = call i32 @check_double(i32 0, i32 %269, i8* %270, i32 442, i32* %1)
%272 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%273 = call i32 @sprintf(i8* %272, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -4)
%274 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%275 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%276 = call i32 @strlen(i8* %275)
%277 = call i32 @grisu3_parse_double(i8* %274, i32 %276, double* %3)
%278 = load double, double* %3
%279 = fptosi double %278 to i32
%280 = load i8*, i8** %2
%281 = call i32 @check_double(i32 0, i32 %279, i8* %280, i32 443, i32* %1)
%282 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%283 = call i32 @sprintf(i8* %282, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 1)
%284 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%285 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%286 = call i32 @strlen(i8* %285)
%287 = call i32 @grisu3_parse_double(i8* %284, i32 %286, double* %3)
%288 = load double, double* %3
%289 = fptosi double %288 to i32
%290 = load i8*, i8** %2
%291 = call i32 @check_double(i32 -12340, i32 %289, i8* %290, i32 445, i32* %1)
%292 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%293 = call i32 @sprintf(i8* %292, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 1)
%294 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%295 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%296 = call i32 @strlen(i8* %295)
%297 = call i32 @grisu3_parse_double(i8* %294, i32 %296, double* %3)
%298 = load double, double* %3
%299 = fptosi double %298 to i32
%300 = load i8*, i8** %2
%301 = call i32 @check_double(i32 -12340, i32 %299, i8* %300, i32 446, i32* %1)
%302 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%303 = call i32 @sprintf(i8* %302, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 0)
%304 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%305 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%306 = call i32 @strlen(i8* %305)
%307 = call i32 @grisu3_parse_double(i8* %304, i32 %306, double* %3)
%308 = load double, double* %3
%309 = fptosi double %308 to i32
%310 = load i8*, i8** %2
%311 = call i32 @check_double(i32 -1234, i32 %309, i8* %310, i32 447, i32* %1)
%312 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%313 = call i32 @sprintf(i8* %312, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -1)
%314 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%315 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%316 = call i32 @strlen(i8* %315)
%317 = call i32 @grisu3_parse_double(i8* %314, i32 %316, double* %3)
%318 = load double, double* %3
%319 = fptosi double %318 to i32
%320 = load i8*, i8** %2
%321 = call i32 @check_double(i32 -123, i32 %319, i8* %320, i32 448, i32* %1)
%322 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%323 = call i32 @sprintf(i8* %322, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -2)
%324 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%325 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%326 = call i32 @strlen(i8* %325)
%327 = call i32 @grisu3_parse_double(i8* %324, i32 %326, double* %3)
%328 = load double, double* %3
%329 = fptosi double %328 to i32
%330 = load i8*, i8** %2
%331 = call i32 @check_double(i32 -12, i32 %329, i8* %330, i32 449, i32* %1)
%332 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%333 = call i32 @sprintf(i8* %332, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -3)
%334 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%335 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%336 = call i32 @strlen(i8* %335)
%337 = call i32 @grisu3_parse_double(i8* %334, i32 %336, double* %3)
%338 = load double, double* %3
%339 = fptosi double %338 to i32
%340 = load i8*, i8** %2
%341 = call i32 @check_double(i32 -1, i32 %339, i8* %340, i32 450, i32* %1)
%342 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%343 = call i32 @sprintf(i8* %342, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -4)
%344 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%345 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%346 = call i32 @strlen(i8* %345)
%347 = call i32 @grisu3_parse_double(i8* %344, i32 %346, double* %3)
%348 = load double, double* %3
%349 = fptosi double %348 to i32
%350 = load i8*, i8** %2
%351 = call i32 @check_double(i32 0, i32 %349, i8* %350, i32 451, i32* %1)
%352 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%353 = call i32 @sprintf(i8* %352, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 1)
%354 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%355 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%356 = call i32 @strlen(i8* %355)
%357 = call i32 @grisu3_parse_double(i8* %354, i32 %356, double* %3)
%358 = load double, double* %3
%359 = fptosi double %358 to i32
%360 = load i8*, i8** %2
%361 = call i32 @check_double(i32 -123450, i32 %359, i8* %360, i32 453, i32* %1)
%362 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%363 = call i32 @sprintf(i8* %362, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 1)
%364 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%365 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%366 = call i32 @strlen(i8* %365)
%367 = call i32 @grisu3_parse_double(i8* %364, i32 %366, double* %3)
%368 = load double, double* %3
%369 = fptosi double %368 to i32
%370 = load i8*, i8** %2
%371 = call i32 @check_double(i32 -123450, i32 %369, i8* %370, i32 454, i32* %1)
%372 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%373 = call i32 @sprintf(i8* %372, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 0)
%374 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%375 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%376 = call i32 @strlen(i8* %375)
%377 = call i32 @grisu3_parse_double(i8* %374, i32 %376, double* %3)
%378 = load double, double* %3
%379 = fptosi double %378 to i32
%380 = load i8*, i8** %2
%381 = call i32 @check_double(i32 -12345, i32 %379, i8* %380, i32 455, i32* %1)
%382 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%383 = call i32 @sprintf(i8* %382, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -1)
%384 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%385 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%386 = call i32 @strlen(i8* %385)
%387 = call i32 @grisu3_parse_double(i8* %384, i32 %386, double* %3)
%388 = load double, double* %3
%389 = fptosi double %388 to i32
%390 = load i8*, i8** %2
%391 = call i32 @check_double(i32 -1234, i32 %389, i8* %390, i32 456, i32* %1)
%392 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%393 = call i32 @sprintf(i8* %392, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -2)
%394 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%395 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%396 = call i32 @strlen(i8* %395)
%397 = call i32 @grisu3_parse_double(i8* %394, i32 %396, double* %3)
%398 = load double, double* %3
%399 = fptosi double %398 to i32
%400 = load i8*, i8** %2
%401 = call i32 @check_double(i32 -123, i32 %399, i8* %400, i32 457, i32* %1)
%402 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%403 = call i32 @sprintf(i8* %402, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -3)
%404 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%405 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%406 = call i32 @strlen(i8* %405)
%407 = call i32 @grisu3_parse_double(i8* %404, i32 %406, double* %3)
%408 = load double, double* %3
%409 = fptosi double %408 to i32
%410 = load i8*, i8** %2
%411 = call i32 @check_double(i32 -12, i32 %409, i8* %410, i32 458, i32* %1)
%412 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%413 = call i32 @sprintf(i8* %412, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -4)
%414 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%415 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%416 = call i32 @strlen(i8* %415)
%417 = call i32 @grisu3_parse_double(i8* %414, i32 %416, double* %3)
%418 = load double, double* %3
%419 = fptosi double %418 to i32
%420 = load i8*, i8** %2
%421 = call i32 @check_double(i32 -1, i32 %419, i8* %420, i32 459, i32* %1)
%422 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%423 = call i32 @sprintf(i8* %422, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -5)
%424 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%425 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%426 = call i32 @strlen(i8* %425)
%427 = call i32 @grisu3_parse_double(i8* %424, i32 %426, double* %3)
%428 = load double, double* %3
%429 = fptosi double %428 to i32
%430 = load i8*, i8** %2
%431 = call i32 @check_double(i32 0, i32 %429, i8* %430, i32 461, i32* %1)
%432 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%433 = call i32 @sprintf(i8* %432, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -6)
%434 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%435 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%436 = call i32 @strlen(i8* %435)
%437 = call i32 @grisu3_parse_double(i8* %434, i32 %436, double* %3)
%438 = load double, double* %3
%439 = fptosi double %438 to i32
%440 = load i8*, i8** %2
%441 = call i32 @check_double(i32 0, i32 %439, i8* %440, i32 462, i32* %1)
%442 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%443 = call i32 @sprintf(i8* %442, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -7)
%444 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%445 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%446 = call i32 @strlen(i8* %445)
%447 = call i32 @grisu3_parse_double(i8* %444, i32 %446, double* %3)
%448 = load double, double* %3
%449 = fptosi double %448 to i32
%450 = load i8*, i8** %2
%451 = call i32 @check_double(i32 0, i32 %449, i8* %450, i32 463, i32* %1)
%452 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%453 = call i32 @sprintf(i8* %452, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -8)
%454 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%455 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%456 = call i32 @strlen(i8* %455)
%457 = call i32 @grisu3_parse_double(i8* %454, i32 %456, double* %3)
%458 = load double, double* %3
%459 = fptosi double %458 to i32
%460 = load i8*, i8** %2
%461 = call i32 @check_double(i32 0, i32 %459, i8* %460, i32 464, i32* %1)
%462 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%463 = call i32 @sprintf(i8* %462, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -9)
%464 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%465 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%466 = call i32 @strlen(i8* %465)
%467 = call i32 @grisu3_parse_double(i8* %464, i32 %466, double* %3)
%468 = load double, double* %3
%469 = fptosi double %468 to i32
%470 = load i8*, i8** %2
%471 = call i32 @check_double(i32 0, i32 %469, i8* %470, i32 465, i32* %1)
%472 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%473 = call i32 @sprintf(i8* %472, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -10)
%474 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%475 = getelementptr inbounds [1001 x i8], [1001 x i8]* %5, i64 0, i64 0
%476 = call i32 @strlen(i8* %475)
%477 = call i32 @grisu3_parse_double(i8* %474, i32 %476, double* %3)
%478 = load double, double* %3
%479 = fptosi double %478 to i32
%480 = load i8*, i8** %2
%481 = call i32 @check_double(i32 0, i32 %479, i8* %480, i32 466, i32* %1)
%482 = load i32, i32* %1
ret i32 %482
}

LLVM IR (-O2):
@.str = [20 x i8] c"grisu3_print_double\00"
@.str.1 = [3 x i8] c"13\00"
@.str.2 = [6 x i8] c"%se%d\00"
@.str.3 = [4 x i8] c"-13\00"
@.str.4 = [3 x i8] c"-1\00"
@.str.5 = [4 x i8] c"-12\00"
@.str.6 = [5 x i8] c"-123\00"
@.str.7 = [6 x i8] c"-1234\00"
@.str.8 = [7 x i8] c"-12345\00"
define i32 @test_grisu3_print_double() {
%1 = alloca i32
%2 = alloca double
%3 = alloca [1001 x i8]
%4 = bitcast i32* %1 to i8*
store i32 0, i32* %1
%5 = bitcast double* %2 to i8*
%6 = getelementptr inbounds [1001 x i8], [1001 x i8]* %3, i64 0, i64 0
%7 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 -2)
%8 = call i32 @strlen(i8* %6)
%9 = call i32 @grisu3_parse_double(i8* %6, i32 %8, double* %2)
%10 = load double, double* %2
%11 = fptosi double %10 to i32
%12 = call i32 @check_double(i32 0, i32 %11, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 411, i32* %1)
%13 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 -3)
%14 = call i32 @strlen(i8* %6)
%15 = call i32 @grisu3_parse_double(i8* %6, i32 %14, double* %2)
%16 = load double, double* %2
%17 = fptosi double %16 to i32
%18 = call i32 @check_double(i32 0, i32 %17, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 412, i32* %1)
%19 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 -2)
%20 = call i32 @strlen(i8* %6)
%21 = call i32 @grisu3_parse_double(i8* %6, i32 %20, double* %2)
%22 = load double, double* %2
%23 = fptosi double %22 to i32
%24 = call i32 @check_double(i32 0, i32 %23, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 415, i32* %1)
%25 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 -3)
%26 = call i32 @strlen(i8* %6)
%27 = call i32 @grisu3_parse_double(i8* %6, i32 %26, double* %2)
%28 = load double, double* %2
%29 = fptosi double %28 to i32
%30 = call i32 @check_double(i32 0, i32 %29, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 416, i32* %1)
%31 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -2)
%32 = call i32 @strlen(i8* %6)
%33 = call i32 @grisu3_parse_double(i8* %6, i32 %32, double* %2)
%34 = load double, double* %2
%35 = fptosi double %34 to i32
%36 = call i32 @check_double(i32 0, i32 %35, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 418, i32* %1)
%37 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -3)
%38 = call i32 @strlen(i8* %6)
%39 = call i32 @grisu3_parse_double(i8* %6, i32 %38, double* %2)
%40 = load double, double* %2
%41 = fptosi double %40 to i32
%42 = call i32 @check_double(i32 0, i32 %41, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 419, i32* %1)
%43 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 1)
%44 = call i32 @strlen(i8* %6)
%45 = call i32 @grisu3_parse_double(i8* %6, i32 %44, double* %2)
%46 = load double, double* %2
%47 = fptosi double %46 to i32
%48 = call i32 @check_double(i32 -10, i32 %47, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 421, i32* %1)
%49 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 1)
%50 = call i32 @strlen(i8* %6)
%51 = call i32 @grisu3_parse_double(i8* %6, i32 %50, double* %2)
%52 = load double, double* %2
%53 = fptosi double %52 to i32
%54 = call i32 @check_double(i32 -10, i32 %53, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 422, i32* %1)
%55 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 0)
%56 = call i32 @strlen(i8* %6)
%57 = call i32 @grisu3_parse_double(i8* %6, i32 %56, double* %2)
%58 = load double, double* %2
%59 = fptosi double %58 to i32
%60 = call i32 @check_double(i32 -1, i32 %59, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 423, i32* %1)
%61 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -1)
%62 = call i32 @strlen(i8* %6)
%63 = call i32 @grisu3_parse_double(i8* %6, i32 %62, double* %2)
%64 = load double, double* %2
%65 = fptosi double %64 to i32
%66 = call i32 @check_double(i32 0, i32 %65, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 424, i32* %1)
%67 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -2)
%68 = call i32 @strlen(i8* %6)
%69 = call i32 @grisu3_parse_double(i8* %6, i32 %68, double* %2)
%70 = load double, double* %2
%71 = fptosi double %70 to i32
%72 = call i32 @check_double(i32 0, i32 %71, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 425, i32* %1)
%73 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -3)
%74 = call i32 @strlen(i8* %6)
%75 = call i32 @grisu3_parse_double(i8* %6, i32 %74, double* %2)
%76 = load double, double* %2
%77 = fptosi double %76 to i32
%78 = call i32 @check_double(i32 0, i32 %77, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 426, i32* %1)
%79 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32 -4)
%80 = call i32 @strlen(i8* %6)
%81 = call i32 @grisu3_parse_double(i8* %6, i32 %80, double* %2)
%82 = load double, double* %2
%83 = fptosi double %82 to i32
%84 = call i32 @check_double(i32 0, i32 %83, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 427, i32* %1)
%85 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 1)
%86 = call i32 @strlen(i8* %6)
%87 = call i32 @grisu3_parse_double(i8* %6, i32 %86, double* %2)
%88 = load double, double* %2
%89 = fptosi double %88 to i32
%90 = call i32 @check_double(i32 -120, i32 %89, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 429, i32* %1)
%91 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 1)
%92 = call i32 @strlen(i8* %6)
%93 = call i32 @grisu3_parse_double(i8* %6, i32 %92, double* %2)
%94 = load double, double* %2
%95 = fptosi double %94 to i32
%96 = call i32 @check_double(i32 -120, i32 %95, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 430, i32* %1)
%97 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 0)
%98 = call i32 @strlen(i8* %6)
%99 = call i32 @grisu3_parse_double(i8* %6, i32 %98, double* %2)
%100 = load double, double* %2
%101 = fptosi double %100 to i32
%102 = call i32 @check_double(i32 -12, i32 %101, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 431, i32* %1)
%103 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -1)
%104 = call i32 @strlen(i8* %6)
%105 = call i32 @grisu3_parse_double(i8* %6, i32 %104, double* %2)
%106 = load double, double* %2
%107 = fptosi double %106 to i32
%108 = call i32 @check_double(i32 -1, i32 %107, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 432, i32* %1)
%109 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -2)
%110 = call i32 @strlen(i8* %6)
%111 = call i32 @grisu3_parse_double(i8* %6, i32 %110, double* %2)
%112 = load double, double* %2
%113 = fptosi double %112 to i32
%114 = call i32 @check_double(i32 0, i32 %113, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 433, i32* %1)
%115 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -3)
%116 = call i32 @strlen(i8* %6)
%117 = call i32 @grisu3_parse_double(i8* %6, i32 %116, double* %2)
%118 = load double, double* %2
%119 = fptosi double %118 to i32
%120 = call i32 @check_double(i32 0, i32 %119, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 434, i32* %1)
%121 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i32 -4)
%122 = call i32 @strlen(i8* %6)
%123 = call i32 @grisu3_parse_double(i8* %6, i32 %122, double* %2)
%124 = load double, double* %2
%125 = fptosi double %124 to i32
%126 = call i32 @check_double(i32 0, i32 %125, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 435, i32* %1)
%127 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 1)
%128 = call i32 @strlen(i8* %6)
%129 = call i32 @grisu3_parse_double(i8* %6, i32 %128, double* %2)
%130 = load double, double* %2
%131 = fptosi double %130 to i32
%132 = call i32 @check_double(i32 -1230, i32 %131, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 437, i32* %1)
%133 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 1)
%134 = call i32 @strlen(i8* %6)
%135 = call i32 @grisu3_parse_double(i8* %6, i32 %134, double* %2)
%136 = load double, double* %2
%137 = fptosi double %136 to i32
%138 = call i32 @check_double(i32 -1230, i32 %137, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 438, i32* %1)
%139 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 0)
%140 = call i32 @strlen(i8* %6)
%141 = call i32 @grisu3_parse_double(i8* %6, i32 %140, double* %2)
%142 = load double, double* %2
%143 = fptosi double %142 to i32
%144 = call i32 @check_double(i32 -123, i32 %143, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 439, i32* %1)
%145 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -1)
%146 = call i32 @strlen(i8* %6)
%147 = call i32 @grisu3_parse_double(i8* %6, i32 %146, double* %2)
%148 = load double, double* %2
%149 = fptosi double %148 to i32
%150 = call i32 @check_double(i32 -12, i32 %149, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 440, i32* %1)
%151 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -2)
%152 = call i32 @strlen(i8* %6)
%153 = call i32 @grisu3_parse_double(i8* %6, i32 %152, double* %2)
%154 = load double, double* %2
%155 = fptosi double %154 to i32
%156 = call i32 @check_double(i32 -1, i32 %155, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 441, i32* %1)
%157 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -3)
%158 = call i32 @strlen(i8* %6)
%159 = call i32 @grisu3_parse_double(i8* %6, i32 %158, double* %2)
%160 = load double, double* %2
%161 = fptosi double %160 to i32
%162 = call i32 @check_double(i32 0, i32 %161, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 442, i32* %1)
%163 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), i32 -4)
%164 = call i32 @strlen(i8* %6)
%165 = call i32 @grisu3_parse_double(i8* %6, i32 %164, double* %2)
%166 = load double, double* %2
%167 = fptosi double %166 to i32
%168 = call i32 @check_double(i32 0, i32 %167, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 443, i32* %1)
%169 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 1)
%170 = call i32 @strlen(i8* %6)
%171 = call i32 @grisu3_parse_double(i8* %6, i32 %170, double* %2)
%172 = load double, double* %2
%173 = fptosi double %172 to i32
%174 = call i32 @check_double(i32 -12340, i32 %173, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 445, i32* %1)
%175 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 1)
%176 = call i32 @strlen(i8* %6)
%177 = call i32 @grisu3_parse_double(i8* %6, i32 %176, double* %2)
%178 = load double, double* %2
%179 = fptosi double %178 to i32
%180 = call i32 @check_double(i32 -12340, i32 %179, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 446, i32* %1)
%181 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 0)
%182 = call i32 @strlen(i8* %6)
%183 = call i32 @grisu3_parse_double(i8* %6, i32 %182, double* %2)
%184 = load double, double* %2
%185 = fptosi double %184 to i32
%186 = call i32 @check_double(i32 -1234, i32 %185, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 447, i32* %1)
%187 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -1)
%188 = call i32 @strlen(i8* %6)
%189 = call i32 @grisu3_parse_double(i8* %6, i32 %188, double* %2)
%190 = load double, double* %2
%191 = fptosi double %190 to i32
%192 = call i32 @check_double(i32 -123, i32 %191, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 448, i32* %1)
%193 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -2)
%194 = call i32 @strlen(i8* %6)
%195 = call i32 @grisu3_parse_double(i8* %6, i32 %194, double* %2)
%196 = load double, double* %2
%197 = fptosi double %196 to i32
%198 = call i32 @check_double(i32 -12, i32 %197, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 449, i32* %1)
%199 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -3)
%200 = call i32 @strlen(i8* %6)
%201 = call i32 @grisu3_parse_double(i8* %6, i32 %200, double* %2)
%202 = load double, double* %2
%203 = fptosi double %202 to i32
%204 = call i32 @check_double(i32 -1, i32 %203, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 450, i32* %1)
%205 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.7, i64 0, i64 0), i32 -4)
%206 = call i32 @strlen(i8* %6)
%207 = call i32 @grisu3_parse_double(i8* %6, i32 %206, double* %2)
%208 = load double, double* %2
%209 = fptosi double %208 to i32
%210 = call i32 @check_double(i32 0, i32 %209, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 451, i32* %1)
%211 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 1)
%212 = call i32 @strlen(i8* %6)
%213 = call i32 @grisu3_parse_double(i8* %6, i32 %212, double* %2)
%214 = load double, double* %2
%215 = fptosi double %214 to i32
%216 = call i32 @check_double(i32 -123450, i32 %215, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 453, i32* %1)
%217 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 1)
%218 = call i32 @strlen(i8* %6)
%219 = call i32 @grisu3_parse_double(i8* %6, i32 %218, double* %2)
%220 = load double, double* %2
%221 = fptosi double %220 to i32
%222 = call i32 @check_double(i32 -123450, i32 %221, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 454, i32* %1)
%223 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 0)
%224 = call i32 @strlen(i8* %6)
%225 = call i32 @grisu3_parse_double(i8* %6, i32 %224, double* %2)
%226 = load double, double* %2
%227 = fptosi double %226 to i32
%228 = call i32 @check_double(i32 -12345, i32 %227, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 455, i32* %1)
%229 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -1)
%230 = call i32 @strlen(i8* %6)
%231 = call i32 @grisu3_parse_double(i8* %6, i32 %230, double* %2)
%232 = load double, double* %2
%233 = fptosi double %232 to i32
%234 = call i32 @check_double(i32 -1234, i32 %233, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 456, i32* %1)
%235 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -2)
%236 = call i32 @strlen(i8* %6)
%237 = call i32 @grisu3_parse_double(i8* %6, i32 %236, double* %2)
%238 = load double, double* %2
%239 = fptosi double %238 to i32
%240 = call i32 @check_double(i32 -123, i32 %239, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 457, i32* %1)
%241 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -3)
%242 = call i32 @strlen(i8* %6)
%243 = call i32 @grisu3_parse_double(i8* %6, i32 %242, double* %2)
%244 = load double, double* %2
%245 = fptosi double %244 to i32
%246 = call i32 @check_double(i32 -12, i32 %245, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 458, i32* %1)
%247 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -4)
%248 = call i32 @strlen(i8* %6)
%249 = call i32 @grisu3_parse_double(i8* %6, i32 %248, double* %2)
%250 = load double, double* %2
%251 = fptosi double %250 to i32
%252 = call i32 @check_double(i32 -1, i32 %251, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 459, i32* %1)
%253 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -5)
%254 = call i32 @strlen(i8* %6)
%255 = call i32 @grisu3_parse_double(i8* %6, i32 %254, double* %2)
%256 = load double, double* %2
%257 = fptosi double %256 to i32
%258 = call i32 @check_double(i32 0, i32 %257, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 461, i32* %1)
%259 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -6)
%260 = call i32 @strlen(i8* %6)
%261 = call i32 @grisu3_parse_double(i8* %6, i32 %260, double* %2)
%262 = load double, double* %2
%263 = fptosi double %262 to i32
%264 = call i32 @check_double(i32 0, i32 %263, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 462, i32* %1)
%265 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -7)
%266 = call i32 @strlen(i8* %6)
%267 = call i32 @grisu3_parse_double(i8* %6, i32 %266, double* %2)
%268 = load double, double* %2
%269 = fptosi double %268 to i32
%270 = call i32 @check_double(i32 0, i32 %269, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 463, i32* %1)
%271 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -8)
%272 = call i32 @strlen(i8* %6)
%273 = call i32 @grisu3_parse_double(i8* %6, i32 %272, double* %2)
%274 = load double, double* %2
%275 = fptosi double %274 to i32
%276 = call i32 @check_double(i32 0, i32 %275, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 464, i32* %1)
%277 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -9)
%278 = call i32 @strlen(i8* %6)
%279 = call i32 @grisu3_parse_double(i8* %6, i32 %278, double* %2)
%280 = load double, double* %2
%281 = fptosi double %280 to i32
%282 = call i32 @check_double(i32 0, i32 %281, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 465, i32* %1)
%283 = call i32 @sprintf(i8* %6, i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i64 0, i64 0), i32 -10)
%284 = call i32 @strlen(i8* %6)
%285 = call i32 @grisu3_parse_double(i8* %6, i32 %284, double* %2)
%286 = load double, double* %2
%287 = fptosi double %286 to i32
%288 = call i32 @check_double(i32 0, i32 %287, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str, i64 0, i64 0), i32 466, i32* %1)
%289 = load i32, i32* %1
ret i32 %289
}