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

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ x;
typedef int uint64_t;

/* Variables and functions */
void check_fail(char *, char *, int);
int /*<<< orphan*/ fadd(long double, long double);
int /*<<< orphan*/ fdiv(long double, long double);
int /*<<< orphan*/ fmul(long double, long double);
int /*<<< orphan*/ fsub(long double, long double);
long double make(int, int, int, int);
void nanz(void) {
  {
    long double x[7];
    int i, j, n = 0;
    x[n++] = make(0, 32000, 0x95132b76effc, 0xd79035214b4f8d53);
    x[n++] = make(1, 32001, 0xbe71d7a51587, 0x30601c6815d6c3ac);
    x[n++] = make(0, 32767, 0, 1);
    x[n++] = make(0, 32767, (uint64_t)1 << 46, 0);
    x[n++] = make(1, 32767, (uint64_t)1 << 47, 0);
    x[n++] = make(1, 32767, 0x7596c7099ad5, 0xe25fed2c58f73fc9);
    x[n++] = make(0, 32767, 0x835d143360f9, 0x5e315efb35630666);
    ((n == sizeof(x) / sizeof(*x))
         ? (void)0
         : check_fail("n == sizeof(x) / sizeof(*x)",
                      "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                      "outputs/2022-01-22/02-19-57/repos/alfonsokim/tinycc/"
                      "refs/heads/dev/lib/testfp.c",
                      181));
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        fadd(x[i], x[j]);
        fsub(x[i], x[j]);
        fmul(x[i], x[j]);
        fdiv(x[i], x[j]);
      }
    }
  }
  {
    long double x[6];
    int i, j, n = 0;
    x[n++] = make(1, 32000, 0x62acda85f700, 0x47b6c9f35edc4044);
    x[n++] = make(0, 32001, 0x94b7abf55af7, 0x9f425fe354428e19);
    x[n++] = make(0, 32767, 0, 0);
    x[n++] = make(1, 32767, 0, 0);
    x[n++] = make(0, 0, 0, 0);
    x[n++] = make(1, 0, 0, 0);
    ((n == sizeof(x) / sizeof(*x))
         ? (void)0
         : check_fail("n == sizeof(x) / sizeof(*x)",
                      "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                      "outputs/2022-01-22/02-19-57/repos/alfonsokim/tinycc/"
                      "refs/heads/dev/lib/testfp.c",
                      202));
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        fadd(x[i], x[j]);
        fsub(x[i], x[j]);
        fmul(x[i], x[j]);
        fdiv(x[i], x[j]);
      }
    }
  }
}


x86 assembly (clang, -O0):
<nanz>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
movl   $0x0,-0x7c(%rbp)
xor    %edi,%edi
mov    %edi,-0xf4(%rbp)
mov    $0x7d00,%esi
mov    $0x2b76effc,%edx
mov    $0x4b4f8d53,%ecx
call   1080 <make@plt>
movslq -0x7c(%rbp),%rax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
mov    $0x1,%edi
mov    %edi,-0xf8(%rbp)
mov    $0x7d01,%esi
mov    $0xd7a51587,%edx
mov    $0x15d6c3ac,%ecx
call   1080 <make@plt>
mov    -0xf8(%rbp),%ecx
mov    -0xf4(%rbp),%edx
movslq -0x7c(%rbp),%rax
mov    %eax,%esi
add    $0x1,%esi
mov    %esi,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
mov    $0x7fff,%esi
mov    %esi,-0xf0(%rbp)
mov    %edx,%edi
call   1080 <make@plt>
mov    -0xf4(%rbp),%ecx
mov    -0xf0(%rbp),%esi
movslq -0x7c(%rbp),%rax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
mov    %ecx,%edi
call   1080 <make@plt>
mov    -0xf8(%rbp),%edi
mov    -0xf4(%rbp),%ecx
mov    -0xf0(%rbp),%esi
movslq -0x7c(%rbp),%rax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
call   1080 <make@plt>
mov    -0xf8(%rbp),%edi
mov    -0xf0(%rbp),%esi
movslq -0x7c(%rbp),%rax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
mov    $0xc7099ad5,%edx
mov    $0x58f73fc9,%ecx
call   1080 <make@plt>
mov    -0xf4(%rbp),%edi
mov    -0xf0(%rbp),%esi
movslq -0x7c(%rbp),%rax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
mov    $0x143360f9,%edx
mov    $0x35630666,%ecx
call   1080 <make@plt>
movslq -0x7c(%rbp),%rax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x7c(%rbp)
shl    $0x4,%rax
fstpt  -0x70(%rbp,%rax,1)
movslq -0x7c(%rbp),%rax
cmp    $0x7,%rax
jne    12ca <nanz+0x16a>
jmp    12e2 <nanz+0x182>
lea    0xd2f(%rip),%rdi
lea    0xd44(%rip),%rsi
mov    $0xb5,%edx
call   1070 <check_fail@plt>
movl   $0x0,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x7c(%rbp),%eax
jge    13bd <nanz+0x25d>
movl   $0x0,-0x78(%rbp)
mov    -0x78(%rbp),%eax
cmp    -0x7c(%rbp),%eax
jge    13aa <nanz+0x24a>
movslq -0x74(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
movslq -0x78(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1050 <fadd@plt>
movslq -0x74(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
movslq -0x78(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1060 <fsub@plt>
movslq -0x74(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
movslq -0x78(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <fmul@plt>
movslq -0x74(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
movslq -0x78(%rbp),%rax
shl    $0x4,%rax
fldt   -0x70(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1030 <fdiv@plt>
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    12fc <nanz+0x19c>
jmp    13af <nanz+0x24f>
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    12e9 <nanz+0x189>
movl   $0x0,-0xec(%rbp)
mov    $0x1,%edi
mov    %edi,-0x100(%rbp)
mov    $0x7d00,%esi
mov    $0xda85f700,%edx
mov    $0x5edc4044,%ecx
call   1080 <make@plt>
movslq -0xec(%rbp),%rax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0xec(%rbp)
shl    $0x4,%rax
fstpt  -0xe0(%rbp,%rax,1)
xor    %edi,%edi
mov    %edi,-0xfc(%rbp)
mov    $0x7d01,%esi
mov    $0xabf55af7,%edx
mov    $0x54428e19,%ecx
call   1080 <make@plt>
mov    -0xfc(%rbp),%ecx
movslq -0xec(%rbp),%rax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0xec(%rbp)
shl    $0x4,%rax
fstpt  -0xe0(%rbp,%rax,1)
mov    $0x7fff,%esi
mov    %esi,-0x104(%rbp)
mov    %ecx,%edi
mov    %ecx,%edx
call   1080 <make@plt>
mov    -0x104(%rbp),%esi
mov    -0x100(%rbp),%edi
mov    -0xfc(%rbp),%ecx
movslq -0xec(%rbp),%rax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0xec(%rbp)
shl    $0x4,%rax
fstpt  -0xe0(%rbp,%rax,1)
mov    %ecx,%edx
call   1080 <make@plt>
mov    -0xfc(%rbp),%ecx
movslq -0xec(%rbp),%rax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0xec(%rbp)
shl    $0x4,%rax
fstpt  -0xe0(%rbp,%rax,1)
mov    %ecx,%edi
mov    %ecx,%esi
mov    %ecx,%edx
call   1080 <make@plt>
mov    -0x100(%rbp),%edi
mov    -0xfc(%rbp),%ecx
movslq -0xec(%rbp),%rax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0xec(%rbp)
shl    $0x4,%rax
fstpt  -0xe0(%rbp,%rax,1)
mov    %ecx,%esi
mov    %ecx,%edx
call   1080 <make@plt>
movslq -0xec(%rbp),%rax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0xec(%rbp)
shl    $0x4,%rax
fstpt  -0xe0(%rbp,%rax,1)
movslq -0xec(%rbp),%rax
cmp    $0x6,%rax
jne    151f <nanz+0x3bf>
jmp    1537 <nanz+0x3d7>
lea    0xada(%rip),%rdi
lea    0xaef(%rip),%rsi
mov    $0xca,%edx
call   1070 <check_fail@plt>
movl   $0x0,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
cmp    -0xec(%rbp),%eax
jge    1660 <nanz+0x500>
movl   $0x0,-0xe8(%rbp)
mov    -0xe8(%rbp),%eax
cmp    -0xec(%rbp),%eax
jge    1647 <nanz+0x4e7>
movslq -0xe4(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
movslq -0xe8(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1050 <fadd@plt>
movslq -0xe4(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
movslq -0xe8(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1060 <fsub@plt>
movslq -0xe4(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
movslq -0xe8(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1040 <fmul@plt>
movslq -0xe4(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
movslq -0xe8(%rbp),%rax
shl    $0x4,%rax
fldt   -0xe0(%rbp,%rax,1)
mov    %rsp,%rax
fstpt  0x10(%rax)
fstpt  (%rax)
call   1030 <fdiv@plt>
mov    -0xe8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe8(%rbp)
jmp    155d <nanz+0x3fd>
jmp    164c <nanz+0x4ec>
mov    -0xe4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe4(%rbp)
jmp    1541 <nanz+0x3e1>
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<nanz>:
push   %rbx
sub    $0xf0,%rsp
xor    %edi,%edi
mov    $0x7d00,%esi
mov    $0x2b76effc,%edx
mov    $0x4b4f8d53,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x2c(%rsp)
fstpt  0x80(%rsp)
mov    $0x1,%edi
mov    $0x7d01,%esi
mov    $0xd7a51587,%edx
mov    $0x15d6c3ac,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x68(%rsp)
fstpt  0x90(%rsp)
xor    %edi,%edi
mov    $0x7fff,%esi
xor    %edx,%edx
mov    $0x1,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x5c(%rsp)
fstpt  0xa0(%rsp)
xor    %edi,%edi
mov    $0x7fff,%esi
xor    %ecx,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x50(%rsp)
fstpt  0xb0(%rsp)
mov    $0x1,%edi
mov    $0x7fff,%esi
xor    %ecx,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x44(%rsp)
fstpt  0xc0(%rsp)
mov    $0x1,%edi
mov    $0x7fff,%esi
mov    $0xc7099ad5,%edx
mov    $0x58f73fc9,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x38(%rsp)
fstpt  0xd0(%rsp)
xor    %edi,%edi
mov    $0x7fff,%esi
mov    $0x143360f9,%edx
mov    $0x35630666,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x74(%rsp)
fstpt  0xe0(%rsp)
mov    $0x10,%ebx
fldt   0x2c(%rsp)
nopl   0x0(%rax)
fld    %st(0)
fstpt  0x20(%rsp)
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x74(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x74(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x74(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x74(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
cmp    $0x70,%rbx
je     1498 <nanz+0x348>
fldt   0x80(%rsp,%rbx,1)
add    $0x10,%rbx
jmp    1250 <nanz+0x100>
mov    $0x1,%edi
mov    $0x7d00,%esi
mov    $0xda85f700,%edx
mov    $0x5edc4044,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x2c(%rsp)
fstpt  0x80(%rsp)
xor    %edi,%edi
mov    $0x7d01,%esi
mov    $0xabf55af7,%edx
mov    $0x54428e19,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x68(%rsp)
fstpt  0x90(%rsp)
xor    %edi,%edi
mov    $0x7fff,%esi
xor    %edx,%edx
xor    %ecx,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x5c(%rsp)
fstpt  0xa0(%rsp)
mov    $0x1,%edi
mov    $0x7fff,%esi
xor    %edx,%edx
xor    %ecx,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x50(%rsp)
fstpt  0xb0(%rsp)
xor    %edi,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x44(%rsp)
fstpt  0xc0(%rsp)
mov    $0x1,%edi
xor    %esi,%esi
xor    %edx,%edx
xor    %ecx,%ecx
call   1070 <make@plt>
fld    %st(0)
fstpt  0x38(%rsp)
fstpt  0xd0(%rsp)
mov    $0x10,%ebx
fldt   0x2c(%rsp)
xchg   %ax,%ax
fld    %st(0)
fstpt  0x20(%rsp)
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x2c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x68(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x5c(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x50(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x44(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1050 <fadd@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1060 <fsub@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1040 <fmul@plt>
fldt   0x38(%rsp)
fstpt  0x10(%rsp)
fldt   0x20(%rsp)
fstpt  (%rsp)
call   1030 <fdiv@plt>
cmp    $0x60,%rbx
je     1758 <nanz+0x608>
fldt   0x80(%rsp,%rbx,1)
add    $0x10,%rbx
jmp    1560 <nanz+0x410>
add    $0xf0,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [28 x i8] c"n == sizeof(x) / sizeof(*x)\00"
@.str.1 = [136 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/alfonsokim/tinycc/refs/heads/dev/lib/testfp.c\00"
define void @nanz() {
%1 = alloca [7 x x86_fp80]
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca [6 x x86_fp80]
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i32 0, i32* %4
%9 = call x86_fp80 @make(i32 0, i32 32000, i32 729214972, i32 1263504723)
%10 = load i32, i32* %4
%11 = add nsw i32 %10, 1
store i32 %11, i32* %4
%12 = sext i32 %10 to i64
%13 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %12
store x86_fp80 %9, x86_fp80* %13
%14 = call x86_fp80 @make(i32 1, i32 32001, i32 -677046905, i32 366396332)
%15 = load i32, i32* %4
%16 = add nsw i32 %15, 1
store i32 %16, i32* %4
%17 = sext i32 %15 to i64
%18 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %17
store x86_fp80 %14, x86_fp80* %18
%19 = call x86_fp80 @make(i32 0, i32 32767, i32 0, i32 1)
%20 = load i32, i32* %4
%21 = add nsw i32 %20, 1
store i32 %21, i32* %4
%22 = sext i32 %20 to i64
%23 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %22
store x86_fp80 %19, x86_fp80* %23
%24 = call x86_fp80 @make(i32 0, i32 32767, i32 poison, i32 0)
%25 = load i32, i32* %4
%26 = add nsw i32 %25, 1
store i32 %26, i32* %4
%27 = sext i32 %25 to i64
%28 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %27
store x86_fp80 %24, x86_fp80* %28
%29 = call x86_fp80 @make(i32 1, i32 32767, i32 poison, i32 0)
%30 = load i32, i32* %4
%31 = add nsw i32 %30, 1
store i32 %31, i32* %4
%32 = sext i32 %30 to i64
%33 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %32
store x86_fp80 %29, x86_fp80* %33
%34 = call x86_fp80 @make(i32 1, i32 32767, i32 -955671851, i32 1492598729)
%35 = load i32, i32* %4
%36 = add nsw i32 %35, 1
store i32 %36, i32* %4
%37 = sext i32 %35 to i64
%38 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %37
store x86_fp80 %34, x86_fp80* %38
%39 = call x86_fp80 @make(i32 0, i32 32767, i32 338911481, i32 895682150)
%40 = load i32, i32* %4
%41 = add nsw i32 %40, 1
store i32 %41, i32* %4
%42 = sext i32 %40 to i64
%43 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %42
store x86_fp80 %39, x86_fp80* %43
%44 = load i32, i32* %4
%45 = sext i32 %44 to i64
%46 = icmp eq i64 %45, 7
br i1 %46, label %47, label %48
47: ; preds = %0
br label %49
48: ; preds = %0
br label %49
49: ; preds = %48, %47
store i32 0, i32* %2
br label %50
50: ; preds = %100, %49
%51 = load i32, i32* %2
%52 = load i32, i32* %4
%53 = icmp slt i32 %51, %52
br i1 %53, label %54, label %103
54: ; preds = %50
store i32 0, i32* %3
br label %55
55: ; preds = %96, %54
%56 = load i32, i32* %3
%57 = load i32, i32* %4
%58 = icmp slt i32 %56, %57
br i1 %58, label %59, label %99
59: ; preds = %55
%60 = load i32, i32* %2
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %61
%63 = load x86_fp80, x86_fp80* %62
%64 = load i32, i32* %3
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %65
%67 = load x86_fp80, x86_fp80* %66
%68 = call i32 @fadd(x86_fp80 %63, x86_fp80 %67)
%69 = load i32, i32* %2
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %70
%72 = load x86_fp80, x86_fp80* %71
%73 = load i32, i32* %3
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %74
%76 = load x86_fp80, x86_fp80* %75
%77 = call i32 @fsub(x86_fp80 %72, x86_fp80 %76)
%78 = load i32, i32* %2
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %79
%81 = load x86_fp80, x86_fp80* %80
%82 = load i32, i32* %3
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %83
%85 = load x86_fp80, x86_fp80* %84
%86 = call i32 @fmul(x86_fp80 %81, x86_fp80 %85)
%87 = load i32, i32* %2
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %88
%90 = load x86_fp80, x86_fp80* %89
%91 = load i32, i32* %3
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %92
%94 = load x86_fp80, x86_fp80* %93
%95 = call i32 @fdiv(x86_fp80 %90, x86_fp80 %94)
br label %96
96: ; preds = %59
%97 = load i32, i32* %3
%98 = add nsw i32 %97, 1
store i32 %98, i32* %3
br label %55
99: ; preds = %55
br label %100
100: ; preds = %99
%101 = load i32, i32* %2
%102 = add nsw i32 %101, 1
store i32 %102, i32* %2
br label %50
103: ; preds = %50
store i32 0, i32* %8
%104 = call x86_fp80 @make(i32 1, i32 32000, i32 -628754688, i32 1591492676)
%105 = load i32, i32* %8
%106 = add nsw i32 %105, 1
store i32 %106, i32* %8
%107 = sext i32 %105 to i64
%108 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %107
store x86_fp80 %104, x86_fp80* %108
%109 = call x86_fp80 @make(i32 0, i32 32001, i32 -1409983753, i32 1413647897)
%110 = load i32, i32* %8
%111 = add nsw i32 %110, 1
store i32 %111, i32* %8
%112 = sext i32 %110 to i64
%113 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %112
store x86_fp80 %109, x86_fp80* %113
%114 = call x86_fp80 @make(i32 0, i32 32767, i32 0, i32 0)
%115 = load i32, i32* %8
%116 = add nsw i32 %115, 1
store i32 %116, i32* %8
%117 = sext i32 %115 to i64
%118 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %117
store x86_fp80 %114, x86_fp80* %118
%119 = call x86_fp80 @make(i32 1, i32 32767, i32 0, i32 0)
%120 = load i32, i32* %8
%121 = add nsw i32 %120, 1
store i32 %121, i32* %8
%122 = sext i32 %120 to i64
%123 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %122
store x86_fp80 %119, x86_fp80* %123
%124 = call x86_fp80 @make(i32 0, i32 0, i32 0, i32 0)
%125 = load i32, i32* %8
%126 = add nsw i32 %125, 1
store i32 %126, i32* %8
%127 = sext i32 %125 to i64
%128 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %127
store x86_fp80 %124, x86_fp80* %128
%129 = call x86_fp80 @make(i32 1, i32 0, i32 0, i32 0)
%130 = load i32, i32* %8
%131 = add nsw i32 %130, 1
store i32 %131, i32* %8
%132 = sext i32 %130 to i64
%133 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %132
store x86_fp80 %129, x86_fp80* %133
%134 = load i32, i32* %8
%135 = sext i32 %134 to i64
%136 = icmp eq i64 %135, 6
br i1 %136, label %137, label %138
137: ; preds = %103
br label %139
138: ; preds = %103
br label %139
139: ; preds = %138, %137
store i32 0, i32* %6
br label %140
140: ; preds = %190, %139
%141 = load i32, i32* %6
%142 = load i32, i32* %8
%143 = icmp slt i32 %141, %142
br i1 %143, label %144, label %193
144: ; preds = %140
store i32 0, i32* %7
br label %145
145: ; preds = %186, %144
%146 = load i32, i32* %7
%147 = load i32, i32* %8
%148 = icmp slt i32 %146, %147
br i1 %148, label %149, label %189
149: ; preds = %145
%150 = load i32, i32* %6
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %151
%153 = load x86_fp80, x86_fp80* %152
%154 = load i32, i32* %7
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %155
%157 = load x86_fp80, x86_fp80* %156
%158 = call i32 @fadd(x86_fp80 %153, x86_fp80 %157)
%159 = load i32, i32* %6
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %160
%162 = load x86_fp80, x86_fp80* %161
%163 = load i32, i32* %7
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %164
%166 = load x86_fp80, x86_fp80* %165
%167 = call i32 @fsub(x86_fp80 %162, x86_fp80 %166)
%168 = load i32, i32* %6
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %169
%171 = load x86_fp80, x86_fp80* %170
%172 = load i32, i32* %7
%173 = sext i32 %172 to i64
%174 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %173
%175 = load x86_fp80, x86_fp80* %174
%176 = call i32 @fmul(x86_fp80 %171, x86_fp80 %175)
%177 = load i32, i32* %6
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %178
%180 = load x86_fp80, x86_fp80* %179
%181 = load i32, i32* %7
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %5, i64 0, i64 %182
%184 = load x86_fp80, x86_fp80* %183
%185 = call i32 @fdiv(x86_fp80 %180, x86_fp80 %184)
br label %186
186: ; preds = %149
%187 = load i32, i32* %7
%188 = add nsw i32 %187, 1
store i32 %188, i32* %7
br label %145
189: ; preds = %145
br label %190
190: ; preds = %189
%191 = load i32, i32* %6
%192 = add nsw i32 %191, 1
store i32 %192, i32* %6
br label %140
193: ; preds = %140
ret void
}

LLVM IR (-O2):
define void @nanz() {
%1 = alloca [7 x x86_fp80]
%2 = alloca [6 x x86_fp80]
%3 = bitcast [7 x x86_fp80]* %1 to i8*
%4 = tail call x86_fp80 @make(i32 0, i32 32000, i32 729214972, i32 1263504723)
%5 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 0
store x86_fp80 %4, x86_fp80* %5
%6 = tail call x86_fp80 @make(i32 1, i32 32001, i32 -677046905, i32 366396332)
%7 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 1
store x86_fp80 %6, x86_fp80* %7
%8 = tail call x86_fp80 @make(i32 0, i32 32767, i32 0, i32 1)
%9 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 2
store x86_fp80 %8, x86_fp80* %9
%10 = tail call x86_fp80 @make(i32 0, i32 32767, i32 poison, i32 0)
%11 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 3
store x86_fp80 %10, x86_fp80* %11
%12 = tail call x86_fp80 @make(i32 1, i32 32767, i32 poison, i32 0)
%13 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 4
store x86_fp80 %12, x86_fp80* %13
%14 = tail call x86_fp80 @make(i32 1, i32 32767, i32 -955671851, i32 1492598729)
%15 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 5
store x86_fp80 %14, x86_fp80* %15
%16 = tail call x86_fp80 @make(i32 0, i32 32767, i32 338911481, i32 895682150)
%17 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 6
store x86_fp80 %16, x86_fp80* %17
br label %18
18: ; preds = %51, %0
%19 = phi x86_fp80 [ %4, %0 ], [ %53, %51 ]
%20 = phi i64 [ 0, %0 ], [ %49, %51 ]
%21 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %4)
%22 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %4)
%23 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %4)
%24 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %4)
%25 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %6)
%26 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %6)
%27 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %6)
%28 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %6)
%29 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %8)
%30 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %8)
%31 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %8)
%32 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %8)
%33 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %10)
%34 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %10)
%35 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %10)
%36 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %10)
%37 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %12)
%38 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %12)
%39 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %12)
%40 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %12)
%41 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %14)
%42 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %14)
%43 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %14)
%44 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %14)
%45 = tail call i32 @fadd(x86_fp80 %19, x86_fp80 %16)
%46 = tail call i32 @fsub(x86_fp80 %19, x86_fp80 %16)
%47 = tail call i32 @fmul(x86_fp80 %19, x86_fp80 %16)
%48 = tail call i32 @fdiv(x86_fp80 %19, x86_fp80 %16)
%49 = add nuw nsw i64 %20, 1
%50 = icmp eq i64 %49, 7
br i1 %50, label %54, label %51
51: ; preds = %18
%52 = getelementptr inbounds [7 x x86_fp80], [7 x x86_fp80]* %1, i64 0, i64 %49
%53 = load x86_fp80, x86_fp80* %52
br label %18
54: ; preds = %18
%55 = bitcast [6 x x86_fp80]* %2 to i8*
%56 = tail call x86_fp80 @make(i32 1, i32 32000, i32 -628754688, i32 1591492676)
%57 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 0
store x86_fp80 %56, x86_fp80* %57
%58 = tail call x86_fp80 @make(i32 0, i32 32001, i32 -1409983753, i32 1413647897)
%59 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 1
store x86_fp80 %58, x86_fp80* %59
%60 = tail call x86_fp80 @make(i32 0, i32 32767, i32 0, i32 0)
%61 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 2
store x86_fp80 %60, x86_fp80* %61
%62 = tail call x86_fp80 @make(i32 1, i32 32767, i32 0, i32 0)
%63 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 3
store x86_fp80 %62, x86_fp80* %63
%64 = tail call x86_fp80 @make(i32 0, i32 0, i32 0, i32 0)
%65 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 4
store x86_fp80 %64, x86_fp80* %65
%66 = tail call x86_fp80 @make(i32 1, i32 0, i32 0, i32 0)
%67 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 5
store x86_fp80 %66, x86_fp80* %67
br label %68
68: ; preds = %97, %54
%69 = phi x86_fp80 [ %56, %54 ], [ %99, %97 ]
%70 = phi i64 [ 0, %54 ], [ %95, %97 ]
%71 = tail call i32 @fadd(x86_fp80 %69, x86_fp80 %56)
%72 = tail call i32 @fsub(x86_fp80 %69, x86_fp80 %56)
%73 = tail call i32 @fmul(x86_fp80 %69, x86_fp80 %56)
%74 = tail call i32 @fdiv(x86_fp80 %69, x86_fp80 %56)
%75 = tail call i32 @fadd(x86_fp80 %69, x86_fp80 %58)
%76 = tail call i32 @fsub(x86_fp80 %69, x86_fp80 %58)
%77 = tail call i32 @fmul(x86_fp80 %69, x86_fp80 %58)
%78 = tail call i32 @fdiv(x86_fp80 %69, x86_fp80 %58)
%79 = tail call i32 @fadd(x86_fp80 %69, x86_fp80 %60)
%80 = tail call i32 @fsub(x86_fp80 %69, x86_fp80 %60)
%81 = tail call i32 @fmul(x86_fp80 %69, x86_fp80 %60)
%82 = tail call i32 @fdiv(x86_fp80 %69, x86_fp80 %60)
%83 = tail call i32 @fadd(x86_fp80 %69, x86_fp80 %62)
%84 = tail call i32 @fsub(x86_fp80 %69, x86_fp80 %62)
%85 = tail call i32 @fmul(x86_fp80 %69, x86_fp80 %62)
%86 = tail call i32 @fdiv(x86_fp80 %69, x86_fp80 %62)
%87 = tail call i32 @fadd(x86_fp80 %69, x86_fp80 %64)
%88 = tail call i32 @fsub(x86_fp80 %69, x86_fp80 %64)
%89 = tail call i32 @fmul(x86_fp80 %69, x86_fp80 %64)
%90 = tail call i32 @fdiv(x86_fp80 %69, x86_fp80 %64)
%91 = tail call i32 @fadd(x86_fp80 %69, x86_fp80 %66)
%92 = tail call i32 @fsub(x86_fp80 %69, x86_fp80 %66)
%93 = tail call i32 @fmul(x86_fp80 %69, x86_fp80 %66)
%94 = tail call i32 @fdiv(x86_fp80 %69, x86_fp80 %66)
%95 = add nuw nsw i64 %70, 1
%96 = icmp eq i64 %95, 6
br i1 %96, label %100, label %97
97: ; preds = %68
%98 = getelementptr inbounds [6 x x86_fp80], [6 x x86_fp80]* %2, i64 0, i64 %95
%99 = load x86_fp80, x86_fp80* %98
br label %68
100: ; preds = %68
ret void
}