#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;

/* Variables and functions */
float FLT_EPSILON;
float FLT_MAX;
float INFINITY;
float NAN;
int /*<<< orphan*/ assert(int);
float flt_abs(float);
float flt_add(float, float);
float flt_div(float, float);
int flt_eq(float, float);
int flt_ge(float, float);
int flt_gt(float, float);
int flt_isreal(float);
int flt_iszero(float);
float flt_l2norm(float *, size_t);
int flt_le(float, float);
int flt_lt(float, float);
float flt_mul(float, float);
int flt_ne(float, float);
int flt_sgn(float);
float flt_sum(float *, size_t);
int main(void) {
  float x[] = {0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f};
  size_t n;
  assert(flt_isreal(NAN) == 0);
  assert(flt_isreal(INFINITY) == 0);
  assert(flt_isreal(1.f / 0.f) == 0);
  assert(flt_isreal(-1.f / 0.f) == 0);
  assert(flt_isreal(-0.f) == 1);
  assert(flt_isreal(1.2f) == 1);
  assert(flt_iszero(0.f) == 1);
  assert(flt_iszero(FLT_EPSILON) == 1);
  assert(flt_iszero(1.19209290e-5f) == 0);
  assert(flt_iszero(NAN) == 0);
  assert(flt_iszero(INFINITY) == 0);
  assert(flt_abs(1.f) == 1.f);
  assert(flt_abs(-1.f) == 1.f);
  assert(flt_abs(0.f) == 0.f);
  assert(flt_abs(-0.f) == 0.f);
  assert(flt_abs(-INFINITY) == INFINITY);
  assert(flt_eq(0.f, 0.f) == 1);
  assert(flt_eq(0.f, 1.f) == 0);
  assert(flt_eq(0.f, FLT_EPSILON) == 1);
  assert(flt_eq(0.f, 1.19209290e-5f) == 0);
  assert(flt_eq(0.f, NAN) == 0);
  assert(flt_eq(NAN, INFINITY) == 0);
  assert(flt_ne(0.f, 1.f) == 1);
  assert(flt_ne(1.f, 1.f) == 0);
  assert(flt_ne(0.f, FLT_EPSILON) == 0);
  assert(flt_ne(0.f, 1.19209290e-5f) == 1);
  assert(flt_gt(2.f, 1.f) == 1);
  assert(flt_gt(1.f, 1.f) == 0);
  assert(flt_gt(1.f + 1.19209290e-5f, 1.f) == 1);
  assert(flt_ge(2.f, 1.f) == 1);
  assert(flt_ge(1.f, 1.f) == 1);
  assert(flt_ge(1.f + 1.19209290e-5f, 1.f) == 1);
  assert(flt_ge(1.f - FLT_EPSILON, 1.f) == 1);
  assert(flt_lt(1.f, 2.f) == 1);
  assert(flt_lt(1.f, 1.f) == 0);
  assert(flt_lt(1.f, 1.f + 1.19209290e-5f) == 1);
  assert(flt_le(1.f, 2.f) == 1);
  assert(flt_le(1.f, 1.f) == 1);
  assert(flt_le(1.f, 1.f + 1.19209290e-5f) == 1);
  assert(flt_le(1.f, 1.f - FLT_EPSILON) == 1);
  assert(flt_sgn(0.f) == 0);
  assert(flt_sgn(1.f) == 1);
  assert(flt_sgn(-1.f) == -1);
  assert(flt_sgn(FLT_EPSILON) == 0);
  assert(flt_sgn(-FLT_EPSILON) == 0);
  assert(flt_sgn(1.19209290e-5f) == 1);
  assert(flt_sgn(-1.19209290e-5f) == -1);
  assert(flt_sgn(NAN) == 0);
  assert(flt_sgn(INFINITY) == 0);
  assert(flt_add(0.f, 0.f) == 0.f);
  assert(flt_add(1.f, 2.f) == 3.f);
  assert(flt_add(0.f, 1.19209290e-5f) == 1.19209290e-5f);
  assert(flt_add(FLT_MAX, 1.f) == FLT_MAX);
  assert(flt_add(-FLT_MAX, -1.f) == -FLT_MAX);
  assert(flt_add(FLT_MAX, FLT_MAX) == FLT_MAX);
  assert(flt_add(-FLT_MAX, -FLT_MAX) == -FLT_MAX);
  assert(flt_mul(1.f, 1.f) == 1.f);
  assert(flt_mul(2.f, 3.f) == 6.f);
  assert(flt_mul(FLT_MAX / 2.f, 2.f) == FLT_MAX);
  assert(flt_mul(FLT_MAX, 2.f) == FLT_MAX);
  assert(flt_mul(FLT_MAX, -2.f) == -FLT_MAX);
  assert(flt_mul(-FLT_MAX, 2.f) == -FLT_MAX);
  assert(flt_mul(-FLT_MAX, -2.f) == FLT_MAX);
  assert(flt_div(1.f, 1.f) == 1.f);
  assert(flt_div(4.f, 2.f) == 2.f);
  assert(flt_div(1.f, 0.f) == FLT_MAX);
  assert(flt_div(FLT_MAX, 0.5f) == FLT_MAX);
  assert(flt_div(-FLT_MAX, 0.5f) == -FLT_MAX);
  assert(flt_div(FLT_MAX, -0.5f) == -FLT_MAX);
  assert(flt_div(1.f, FLT_EPSILON) == FLT_MAX);
  assert(flt_div(1.f, -FLT_EPSILON) == -FLT_MAX);
  for (n = 0; n < sizeof(x) / sizeof(float); n++) {
    assert(flt_eq(flt_sum(x, n + 1), x[n] * (x[n] + 1) / 2.f));
  }
  n = sizeof(x) / sizeof(float);
  assert(flt_eq(flt_l2norm(x, n), 16.881943f) == 1);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x30(%rbp),%rdi
lea    0xe26(%rip),%rsi
mov    $0x28,%edx
call   10a0 <memcpy@plt>
mov    0x2dbd(%rip),%rax
movss  (%rax),%xmm0
call   1100 <flt_isreal@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2d85(%rip),%rax
movss  (%rax),%xmm0
call   1100 <flt_isreal@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xdc0(%rip),%xmm0
call   1100 <flt_isreal@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xd9f(%rip),%xmm0
call   1100 <flt_isreal@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xd7a(%rip),%xmm0
call   1100 <flt_isreal@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xd61(%rip),%xmm0
call   1100 <flt_isreal@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
call   1090 <flt_iszero@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2cc1(%rip),%rax
movss  (%rax),%xmm0
call   1090 <flt_iszero@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xcfc(%rip),%xmm0
call   1090 <flt_iszero@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2cb4(%rip),%rax
movss  (%rax),%xmm0
call   1090 <flt_iszero@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2c7c(%rip),%rax
movss  (%rax),%xmm0
call   1090 <flt_iszero@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xc7b(%rip),%xmm0
call   1120 <flt_abs@plt>
movss  0xc6e(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xc71(%rip),%xmm0
call   1120 <flt_abs@plt>
movss  0xc44(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
call   1120 <flt_abs@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xc37(%rip),%xmm0
call   1120 <flt_abs@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2bc3(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
call   1120 <flt_abs@plt>
mov    0x2ba6(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   10e0 <flt_eq@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xb8b(%rip),%xmm1
call   10e0 <flt_eq@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2b37(%rip),%rax
movss  (%rax),%xmm1
xorps  %xmm0,%xmm0
call   10e0 <flt_eq@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xb6c(%rip),%xmm1
call   10e0 <flt_eq@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2b24(%rip),%rax
movss  (%rax),%xmm1
xorps  %xmm0,%xmm0
call   10e0 <flt_eq@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2b01(%rip),%rax
movss  (%rax),%xmm0
mov    0x2ade(%rip),%rax
movss  (%rax),%xmm1
call   10e0 <flt_eq@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xada(%rip),%xmm1
call   10c0 <flt_ne@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xabd(%rip),%xmm1
movaps %xmm1,%xmm0
call   10c0 <flt_ne@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2a66(%rip),%rax
movss  (%rax),%xmm1
xorps  %xmm0,%xmm0
call   10c0 <flt_ne@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xa9b(%rip),%xmm1
call   10c0 <flt_ne@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xa66(%rip),%xmm0
movss  0xa52(%rip),%xmm1
call   1060 <flt_gt@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xa35(%rip),%xmm1
movaps %xmm1,%xmm0
call   1060 <flt_gt@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0xa41(%rip),%xmm0
movss  0xa0d(%rip),%xmm1
call   1060 <flt_gt@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x9fc(%rip),%xmm0
movss  0x9e8(%rip),%xmm1
call   1050 <flt_ge@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x9cb(%rip),%xmm1
movaps %xmm1,%xmm0
call   1050 <flt_ge@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x9d7(%rip),%xmm0
movss  0x9a3(%rip),%xmm1
call   1050 <flt_ge@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x986(%rip),%xmm0
mov    0x2947(%rip),%rax
subss  (%rax),%xmm0
movss  0x973(%rip),%xmm1
call   1050 <flt_ge@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x956(%rip),%xmm0
movss  0x95a(%rip),%xmm1
call   10f0 <flt_lt@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x931(%rip),%xmm1
movaps %xmm1,%xmm0
call   10f0 <flt_lt@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x911(%rip),%xmm0
movss  0x935(%rip),%xmm1
call   10f0 <flt_lt@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x8ec(%rip),%xmm0
movss  0x8f0(%rip),%xmm1
call   1110 <flt_le@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x8c7(%rip),%xmm1
movaps %xmm1,%xmm0
call   1110 <flt_le@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x8a7(%rip),%xmm0
movss  0x8cb(%rip),%xmm1
call   1110 <flt_le@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x882(%rip),%xmm1
mov    0x2843(%rip),%rax
subss  (%rax),%xmm1
movss  0x86f(%rip),%xmm0
call   1110 <flt_le@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x83a(%rip),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x83d(%rip),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0xffffffff,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x27c9(%rip),%rax
movss  (%rax),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x27a9(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x7d7(%rip),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x7be(%rip),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0xffffffff,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2772(%rip),%rax
movss  (%rax),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x273a(%rip),%rax
movss  (%rax),%xmm0
call   1070 <flt_sgn@plt>
cmp    $0x0,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   10d0 <flt_add@plt>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x716(%rip),%xmm0
movss  0x71a(%rip),%xmm1
call   10d0 <flt_add@plt>
movss  0x71d(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0x705(%rip),%xmm1
call   10d0 <flt_add@plt>
movss  0x6f8(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2690(%rip),%rax
movss  (%rax),%xmm0
movss  0x6ac(%rip),%xmm1
call   10d0 <flt_add@plt>
mov    0x2678(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x265c(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  0x68b(%rip),%xmm1
call   10d0 <flt_add@plt>
mov    0x2637(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x260a(%rip),%rax
movss  (%rax),%xmm0
mov    0x25ff(%rip),%rax
movss  (%rax),%xmm1
call   10d0 <flt_add@plt>
mov    0x25ef(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x25d3(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mov    0x25bb(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
call   10d0 <flt_add@plt>
mov    0x259e(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x598(%rip),%xmm1
movaps %xmm1,%xmm0
call   1130 <flt_mul@plt>
movss  0x588(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x577(%rip),%xmm0
movss  0x57f(%rip),%xmm1
call   1130 <flt_mul@plt>
movss  0x56e(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2512(%rip),%rax
movss  (%rax),%xmm0
movss  0x53a(%rip),%xmm1
divss  %xmm1,%xmm0
movss  0x52e(%rip),%xmm1
call   1130 <flt_mul@plt>
mov    0x24ee(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x24d2(%rip),%rax
movss  (%rax),%xmm0
movss  0x4fa(%rip),%xmm1
call   1130 <flt_mul@plt>
mov    0x24ba(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x249e(%rip),%rax
movss  (%rax),%xmm0
movss  0x4ce(%rip),%xmm1
call   1130 <flt_mul@plt>
mov    0x2486(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2459(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  0x474(%rip),%xmm1
call   1130 <flt_mul@plt>
mov    0x2434(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2407(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  0x42a(%rip),%xmm1
call   1130 <flt_mul@plt>
mov    0x23e2(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x3ed(%rip),%xmm1
movaps %xmm1,%xmm0
call   10b0 <flt_div@plt>
movss  0x3dd(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x3d0(%rip),%xmm0
movss  0x3c4(%rip),%xmm1
call   10b0 <flt_div@plt>
movss  0x3b7(%rip),%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movss  0x38e(%rip),%xmm0
xorps  %xmm1,%xmm1
call   10b0 <flt_div@plt>
mov    0x2357(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x233b(%rip),%rax
movss  (%rax),%xmm0
movss  0x35f(%rip),%xmm1
call   10b0 <flt_div@plt>
mov    0x2323(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2307(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  0x31e(%rip),%xmm1
call   10b0 <flt_div@plt>
mov    0x22e2(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x22b5(%rip),%rax
movss  (%rax),%xmm0
movss  0x2d5(%rip),%xmm1
call   10b0 <flt_div@plt>
mov    0x229d(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x2260(%rip),%rax
movss  (%rax),%xmm1
movss  0x28c(%rip),%xmm0
call   10b0 <flt_div@plt>
mov    0x2258(%rip),%rax
ucomiss (%rax),%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
mov    0x222c(%rip),%rax
movss  (%rax),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
movss  0x24b(%rip),%xmm0
call   10b0 <flt_div@plt>
mov    0x2217(%rip),%rax
movss  (%rax),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
ucomiss %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
movq   $0x0,-0x38(%rbp)
cmpq   $0xa,-0x38(%rbp)
jae    1e54 <main+0xc44>
lea    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
add    $0x1,%rsi
call   1030 <flt_sum@plt>
mov    -0x38(%rbp),%rax
movss  -0x30(%rbp,%rax,4),%xmm1
mov    -0x38(%rbp),%rax
movss  0x1df(%rip),%xmm2
addss  -0x30(%rbp,%rax,4),%xmm2
mulss  %xmm2,%xmm1
movss  0x1d9(%rip),%xmm2
divss  %xmm2,%xmm1
call   10e0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1def <main+0xbdf>
movq   $0xa,-0x38(%rbp)
lea    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
call   1040 <flt_l2norm@plt>
movss  0x1cf(%rip),%xmm1
call   10e0 <flt_eq@plt>
cmp    $0x1,%eax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1080 <assert@plt>
xor    %eax,%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    0xe5e(%rip),%rax
mov    %rax,0x20(%rsp)
movaps 0xe42(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe26(%rip),%xmm0
movaps %xmm0,(%rsp)
mov    0x2dc3(%rip),%r14
movss  (%r14),%xmm0
call   10f0 <flt_isreal@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
mov    0x2d8d(%rip),%r15
movss  (%r15),%xmm0
call   10f0 <flt_isreal@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xd8e(%rip),%xmm0
call   10f0 <flt_isreal@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xd78(%rip),%xmm0
call   10f0 <flt_isreal@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xd62(%rip),%xmm0
call   10f0 <flt_isreal@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xd4b(%rip),%xmm0
call   10f0 <flt_isreal@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
call   1090 <flt_iszero@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
mov    0x2cd7(%rip),%r12
movss  (%r12),%xmm0
call   1090 <flt_iszero@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xcfe(%rip),%xmm0
call   1090 <flt_iszero@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r14),%xmm0
call   1090 <flt_iszero@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r15),%xmm0
call   1090 <flt_iszero@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xcba(%rip),%xmm0
call   1110 <flt_abs@plt>
cmpeqss 0xcac(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0xc9c(%rip),%xmm0
call   1110 <flt_abs@plt>
cmpeqss 0xc8a(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
call   1110 <flt_abs@plt>
cmpeqss 0xc9d(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0xc4d(%rip),%xmm0
call   1110 <flt_abs@plt>
cmpeqss 0xc7b(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%r15),%xmm0
movss  0xc26(%rip),%xmm1
xorps  %xmm1,%xmm0
call   1110 <flt_abs@plt>
cmpeqss (%r15),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   10d0 <flt_eq@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xbf4(%rip),%xmm1
call   10d0 <flt_eq@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r12),%xmm1
xorps  %xmm0,%xmm0
call   10d0 <flt_eq@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xbb7(%rip),%xmm1
call   10d0 <flt_eq@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r14),%xmm1
xorps  %xmm0,%xmm0
call   10d0 <flt_eq@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r14),%xmm0
movss  (%r15),%xmm1
call   10d0 <flt_eq@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xb68(%rip),%xmm1
call   10b0 <flt_ne@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xb4d(%rip),%xmm0
movaps %xmm0,%xmm1
call   10b0 <flt_ne@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r12),%xmm1
xorps  %xmm0,%xmm0
call   10b0 <flt_ne@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0xb0e(%rip),%xmm1
call   10b0 <flt_ne@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xaff(%rip),%xmm0
movss  0xaef(%rip),%xmm1
call   1060 <flt_gt@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xad4(%rip),%xmm0
movaps %xmm0,%xmm1
call   1060 <flt_gt@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xac3(%rip),%xmm0
movss  0xaaf(%rip),%xmm1
call   1060 <flt_gt@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xa9c(%rip),%xmm0
movss  0xa8c(%rip),%xmm1
call   1050 <flt_ge@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xa71(%rip),%xmm0
movaps %xmm0,%xmm1
call   1050 <flt_ge@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xa5f(%rip),%xmm0
movss  0xa4b(%rip),%xmm1
call   1050 <flt_ge@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xa30(%rip),%xmm1
movaps %xmm1,%xmm0
subss  (%r12),%xmm0
call   1050 <flt_ge@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0xa0c(%rip),%xmm0
movss  0xa0c(%rip),%xmm1
call   10e0 <flt_lt@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x9e9(%rip),%xmm0
movaps %xmm0,%xmm1
call   10e0 <flt_lt@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x9cc(%rip),%xmm0
movss  0x9d0(%rip),%xmm1
call   10e0 <flt_lt@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x9a9(%rip),%xmm0
movss  0x9a9(%rip),%xmm1
call   1100 <flt_le@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x986(%rip),%xmm0
movaps %xmm0,%xmm1
call   1100 <flt_le@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x968(%rip),%xmm0
movss  0x96c(%rip),%xmm1
call   1100 <flt_le@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x945(%rip),%xmm0
movaps %xmm0,%xmm1
subss  (%r12),%xmm1
call   1100 <flt_le@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x90c(%rip),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x8f5(%rip),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
cmp    $0xffffffff,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r12),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r12),%xmm0
movss  0x8ac(%rip),%xmm1
xorps  %xmm1,%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x897(%rip),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
movss  0x890(%rip),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
cmp    $0xffffffff,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r14),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
movss  (%r15),%xmm0
call   1070 <flt_sgn@plt>
xor    %edi,%edi
test   %eax,%eax
sete   %dil
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   10c0 <flt_add@plt>
cmpeqss 0x85b(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0x817(%rip),%xmm0
movss  0x817(%rip),%xmm1
call   10c0 <flt_add@plt>
cmpeqss 0x815(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
xorps  %xmm0,%xmm0
movss  0x7e6(%rip),%xmm1
call   10c0 <flt_add@plt>
cmpeqss 0x7d8(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
mov    0x278d(%rip),%rbx
movss  (%rbx),%xmm0
movss  0x7bd(%rip),%xmm1
call   10c0 <flt_add@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x78f(%rip),%xmm1
xorps  %xmm1,%xmm0
movss  0x794(%rip),%xmm1
call   10c0 <flt_add@plt>
movss  (%rbx),%xmm1
movss  0x773(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movaps %xmm0,%xmm1
call   10c0 <flt_add@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x736(%rip),%xmm1
xorps  %xmm1,%xmm0
movaps %xmm0,%xmm1
call   10c0 <flt_add@plt>
movss  (%rbx),%xmm1
movss  0x71f(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0x70f(%rip),%xmm0
movaps %xmm0,%xmm1
call   1120 <flt_mul@plt>
cmpeqss 0x6fe(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0x6f2(%rip),%xmm0
movss  0x6f6(%rip),%xmm1
call   1120 <flt_mul@plt>
cmpeqss 0x6ec(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
mulss  0x6d8(%rip),%xmm0
movss  0x6bc(%rip),%xmm1
call   1120 <flt_mul@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x69a(%rip),%xmm1
call   1120 <flt_mul@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x690(%rip),%xmm1
call   1120 <flt_mul@plt>
movss  (%rbx),%xmm1
movss  0x653(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x633(%rip),%xmm1
xorps  %xmm1,%xmm0
movss  0x63c(%rip),%xmm1
call   1120 <flt_mul@plt>
movss  (%rbx),%xmm1
movss  0x617(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x5f7(%rip),%xmm1
xorps  %xmm1,%xmm0
movss  0x618(%rip),%xmm1
call   1120 <flt_mul@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0x5da(%rip),%xmm0
movaps %xmm0,%xmm1
call   10a0 <flt_div@plt>
cmpeqss 0x5c9(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  0x5d9(%rip),%xmm0
movss  0x5b5(%rip),%xmm1
call   10a0 <flt_div@plt>
cmpeqss 0x5a7(%rip),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
xorps  %xmm1,%xmm1
movss  0x588(%rip),%xmm0
call   10a0 <flt_div@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x582(%rip),%xmm1
call   10a0 <flt_div@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x538(%rip),%xmm1
xorps  %xmm1,%xmm0
movss  0x555(%rip),%xmm1
call   10a0 <flt_div@plt>
movss  (%rbx),%xmm1
movss  0x51c(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%rbx),%xmm0
movss  0x530(%rip),%xmm1
call   10a0 <flt_div@plt>
movss  (%rbx),%xmm1
movss  0x4eb(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%r12),%xmm1
movss  0x4d5(%rip),%xmm0
call   10a0 <flt_div@plt>
cmpeqss (%rbx),%xmm0
movd   %xmm0,%edi
and    $0x1,%edi
call   1080 <assert@plt>
movss  (%r12),%xmm1
movss  0x4a5(%rip),%xmm0
xorps  %xmm0,%xmm1
movss  0x4a6(%rip),%xmm0
call   10a0 <flt_div@plt>
movss  (%rbx),%xmm1
movss  0x489(%rip),%xmm2
xorps  %xmm2,%xmm1
cmpeqss %xmm0,%xmm1
movd   %xmm1,%edi
and    $0x1,%edi
call   1080 <assert@plt>
mov    %rsp,%rbx
mov    $0x1,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  (%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x461(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x471(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x2,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x4(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x42b(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x43b(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x3,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x8(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x3f5(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x405(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x4,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0xc(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x3bf(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x3cf(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x5,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x10(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x389(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x399(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x6,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x14(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x353(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x363(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x7,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x18(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x31d(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x32d(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x8,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x1c(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x2e7(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x2f7(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0x9,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x20(%rsp),%xmm2
movaps %xmm2,%xmm1
addss  0x2b1(%rip),%xmm1
mulss  %xmm2,%xmm1
mulss  0x2c1(%rip),%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0xa,%esi
mov    %rbx,%rdi
call   1030 <flt_sum@plt>
movss  0x24(%rsp),%xmm1
movss  0x27e(%rip),%xmm2
addss  %xmm1,%xmm2
mulss  %xmm1,%xmm2
mulss  0x28a(%rip),%xmm2
movaps %xmm2,%xmm1
call   10d0 <flt_eq@plt>
mov    %eax,%edi
call   1080 <assert@plt>
mov    $0xa,%esi
mov    %rbx,%rdi
call   1040 <flt_l2norm@plt>
movss  0x276(%rip),%xmm1
call   10d0 <flt_eq@plt>
xor    %edi,%edi
cmp    $0x1,%eax
sete   %dil
call   1080 <assert@plt>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.main.x = [10 x float] [float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00, float 8.000000e+00, float 9.000000e+00]
@NAN = global float 0.000000e+00
@INFINITY = global float 0.000000e+00
@FLT_EPSILON = global float 0.000000e+00
@FLT_MAX = global float 0.000000e+00
define i32 @main() {
%1 = alloca i32
%2 = alloca [10 x float]
%3 = alloca i64
store i32 0, i32* %1
%4 = bitcast [10 x float]* %2 to i8*
%5 = load float, float* @NAN
%6 = call i32 @flt_isreal(float %5)
%7 = icmp eq i32 %6, 0
%8 = zext i1 %7 to i32
%9 = call i32 @assert(i32 %8)
%10 = load float, float* @INFINITY
%11 = call i32 @flt_isreal(float %10)
%12 = icmp eq i32 %11, 0
%13 = zext i1 %12 to i32
%14 = call i32 @assert(i32 %13)
%15 = call i32 @flt_isreal(float 0x7FF0000000000000)
%16 = icmp eq i32 %15, 0
%17 = zext i1 %16 to i32
%18 = call i32 @assert(i32 %17)
%19 = call i32 @flt_isreal(float 0xFFF0000000000000)
%20 = icmp eq i32 %19, 0
%21 = zext i1 %20 to i32
%22 = call i32 @assert(i32 %21)
%23 = call i32 @flt_isreal(float -0.000000e+00)
%24 = icmp eq i32 %23, 1
%25 = zext i1 %24 to i32
%26 = call i32 @assert(i32 %25)
%27 = call i32 @flt_isreal(float 0x3FF3333340000000)
%28 = icmp eq i32 %27, 1
%29 = zext i1 %28 to i32
%30 = call i32 @assert(i32 %29)
%31 = call i32 @flt_iszero(float 0.000000e+00)
%32 = icmp eq i32 %31, 1
%33 = zext i1 %32 to i32
%34 = call i32 @assert(i32 %33)
%35 = load float, float* @FLT_EPSILON
%36 = call i32 @flt_iszero(float %35)
%37 = icmp eq i32 %36, 1
%38 = zext i1 %37 to i32
%39 = call i32 @assert(i32 %38)
%40 = call i32 @flt_iszero(float 0x3EE9000000000000)
%41 = icmp eq i32 %40, 0
%42 = zext i1 %41 to i32
%43 = call i32 @assert(i32 %42)
%44 = load float, float* @NAN
%45 = call i32 @flt_iszero(float %44)
%46 = icmp eq i32 %45, 0
%47 = zext i1 %46 to i32
%48 = call i32 @assert(i32 %47)
%49 = load float, float* @INFINITY
%50 = call i32 @flt_iszero(float %49)
%51 = icmp eq i32 %50, 0
%52 = zext i1 %51 to i32
%53 = call i32 @assert(i32 %52)
%54 = call float @flt_abs(float 1.000000e+00)
%55 = fcmp oeq float %54, 1.000000e+00
%56 = zext i1 %55 to i32
%57 = call i32 @assert(i32 %56)
%58 = call float @flt_abs(float -1.000000e+00)
%59 = fcmp oeq float %58, 1.000000e+00
%60 = zext i1 %59 to i32
%61 = call i32 @assert(i32 %60)
%62 = call float @flt_abs(float 0.000000e+00)
%63 = fcmp oeq float %62, 0.000000e+00
%64 = zext i1 %63 to i32
%65 = call i32 @assert(i32 %64)
%66 = call float @flt_abs(float -0.000000e+00)
%67 = fcmp oeq float %66, 0.000000e+00
%68 = zext i1 %67 to i32
%69 = call i32 @assert(i32 %68)
%70 = load float, float* @INFINITY
%71 = fneg float %70
%72 = call float @flt_abs(float %71)
%73 = load float, float* @INFINITY
%74 = fcmp oeq float %72, %73
%75 = zext i1 %74 to i32
%76 = call i32 @assert(i32 %75)
%77 = call i32 @flt_eq(float 0.000000e+00, float 0.000000e+00)
%78 = icmp eq i32 %77, 1
%79 = zext i1 %78 to i32
%80 = call i32 @assert(i32 %79)
%81 = call i32 @flt_eq(float 0.000000e+00, float 1.000000e+00)
%82 = icmp eq i32 %81, 0
%83 = zext i1 %82 to i32
%84 = call i32 @assert(i32 %83)
%85 = load float, float* @FLT_EPSILON
%86 = call i32 @flt_eq(float 0.000000e+00, float %85)
%87 = icmp eq i32 %86, 1
%88 = zext i1 %87 to i32
%89 = call i32 @assert(i32 %88)
%90 = call i32 @flt_eq(float 0.000000e+00, float 0x3EE9000000000000)
%91 = icmp eq i32 %90, 0
%92 = zext i1 %91 to i32
%93 = call i32 @assert(i32 %92)
%94 = load float, float* @NAN
%95 = call i32 @flt_eq(float 0.000000e+00, float %94)
%96 = icmp eq i32 %95, 0
%97 = zext i1 %96 to i32
%98 = call i32 @assert(i32 %97)
%99 = load float, float* @NAN
%100 = load float, float* @INFINITY
%101 = call i32 @flt_eq(float %99, float %100)
%102 = icmp eq i32 %101, 0
%103 = zext i1 %102 to i32
%104 = call i32 @assert(i32 %103)
%105 = call i32 @flt_ne(float 0.000000e+00, float 1.000000e+00)
%106 = icmp eq i32 %105, 1
%107 = zext i1 %106 to i32
%108 = call i32 @assert(i32 %107)
%109 = call i32 @flt_ne(float 1.000000e+00, float 1.000000e+00)
%110 = icmp eq i32 %109, 0
%111 = zext i1 %110 to i32
%112 = call i32 @assert(i32 %111)
%113 = load float, float* @FLT_EPSILON
%114 = call i32 @flt_ne(float 0.000000e+00, float %113)
%115 = icmp eq i32 %114, 0
%116 = zext i1 %115 to i32
%117 = call i32 @assert(i32 %116)
%118 = call i32 @flt_ne(float 0.000000e+00, float 0x3EE9000000000000)
%119 = icmp eq i32 %118, 1
%120 = zext i1 %119 to i32
%121 = call i32 @assert(i32 %120)
%122 = call i32 @flt_gt(float 2.000000e+00, float 1.000000e+00)
%123 = icmp eq i32 %122, 1
%124 = zext i1 %123 to i32
%125 = call i32 @assert(i32 %124)
%126 = call i32 @flt_gt(float 1.000000e+00, float 1.000000e+00)
%127 = icmp eq i32 %126, 0
%128 = zext i1 %127 to i32
%129 = call i32 @assert(i32 %128)
%130 = call i32 @flt_gt(float 0x3FF0000C80000000, float 1.000000e+00)
%131 = icmp eq i32 %130, 1
%132 = zext i1 %131 to i32
%133 = call i32 @assert(i32 %132)
%134 = call i32 @flt_ge(float 2.000000e+00, float 1.000000e+00)
%135 = icmp eq i32 %134, 1
%136 = zext i1 %135 to i32
%137 = call i32 @assert(i32 %136)
%138 = call i32 @flt_ge(float 1.000000e+00, float 1.000000e+00)
%139 = icmp eq i32 %138, 1
%140 = zext i1 %139 to i32
%141 = call i32 @assert(i32 %140)
%142 = call i32 @flt_ge(float 0x3FF0000C80000000, float 1.000000e+00)
%143 = icmp eq i32 %142, 1
%144 = zext i1 %143 to i32
%145 = call i32 @assert(i32 %144)
%146 = load float, float* @FLT_EPSILON
%147 = fsub float 1.000000e+00, %146
%148 = call i32 @flt_ge(float %147, float 1.000000e+00)
%149 = icmp eq i32 %148, 1
%150 = zext i1 %149 to i32
%151 = call i32 @assert(i32 %150)
%152 = call i32 @flt_lt(float 1.000000e+00, float 2.000000e+00)
%153 = icmp eq i32 %152, 1
%154 = zext i1 %153 to i32
%155 = call i32 @assert(i32 %154)
%156 = call i32 @flt_lt(float 1.000000e+00, float 1.000000e+00)
%157 = icmp eq i32 %156, 0
%158 = zext i1 %157 to i32
%159 = call i32 @assert(i32 %158)
%160 = call i32 @flt_lt(float 1.000000e+00, float 0x3FF0000C80000000)
%161 = icmp eq i32 %160, 1
%162 = zext i1 %161 to i32
%163 = call i32 @assert(i32 %162)
%164 = call i32 @flt_le(float 1.000000e+00, float 2.000000e+00)
%165 = icmp eq i32 %164, 1
%166 = zext i1 %165 to i32
%167 = call i32 @assert(i32 %166)
%168 = call i32 @flt_le(float 1.000000e+00, float 1.000000e+00)
%169 = icmp eq i32 %168, 1
%170 = zext i1 %169 to i32
%171 = call i32 @assert(i32 %170)
%172 = call i32 @flt_le(float 1.000000e+00, float 0x3FF0000C80000000)
%173 = icmp eq i32 %172, 1
%174 = zext i1 %173 to i32
%175 = call i32 @assert(i32 %174)
%176 = load float, float* @FLT_EPSILON
%177 = fsub float 1.000000e+00, %176
%178 = call i32 @flt_le(float 1.000000e+00, float %177)
%179 = icmp eq i32 %178, 1
%180 = zext i1 %179 to i32
%181 = call i32 @assert(i32 %180)
%182 = call i32 @flt_sgn(float 0.000000e+00)
%183 = icmp eq i32 %182, 0
%184 = zext i1 %183 to i32
%185 = call i32 @assert(i32 %184)
%186 = call i32 @flt_sgn(float 1.000000e+00)
%187 = icmp eq i32 %186, 1
%188 = zext i1 %187 to i32
%189 = call i32 @assert(i32 %188)
%190 = call i32 @flt_sgn(float -1.000000e+00)
%191 = icmp eq i32 %190, -1
%192 = zext i1 %191 to i32
%193 = call i32 @assert(i32 %192)
%194 = load float, float* @FLT_EPSILON
%195 = call i32 @flt_sgn(float %194)
%196 = icmp eq i32 %195, 0
%197 = zext i1 %196 to i32
%198 = call i32 @assert(i32 %197)
%199 = load float, float* @FLT_EPSILON
%200 = fneg float %199
%201 = call i32 @flt_sgn(float %200)
%202 = icmp eq i32 %201, 0
%203 = zext i1 %202 to i32
%204 = call i32 @assert(i32 %203)
%205 = call i32 @flt_sgn(float 0x3EE9000000000000)
%206 = icmp eq i32 %205, 1
%207 = zext i1 %206 to i32
%208 = call i32 @assert(i32 %207)
%209 = call i32 @flt_sgn(float 0xBEE9000000000000)
%210 = icmp eq i32 %209, -1
%211 = zext i1 %210 to i32
%212 = call i32 @assert(i32 %211)
%213 = load float, float* @NAN
%214 = call i32 @flt_sgn(float %213)
%215 = icmp eq i32 %214, 0
%216 = zext i1 %215 to i32
%217 = call i32 @assert(i32 %216)
%218 = load float, float* @INFINITY
%219 = call i32 @flt_sgn(float %218)
%220 = icmp eq i32 %219, 0
%221 = zext i1 %220 to i32
%222 = call i32 @assert(i32 %221)
%223 = call float @flt_add(float 0.000000e+00, float 0.000000e+00)
%224 = fcmp oeq float %223, 0.000000e+00
%225 = zext i1 %224 to i32
%226 = call i32 @assert(i32 %225)
%227 = call float @flt_add(float 1.000000e+00, float 2.000000e+00)
%228 = fcmp oeq float %227, 3.000000e+00
%229 = zext i1 %228 to i32
%230 = call i32 @assert(i32 %229)
%231 = call float @flt_add(float 0.000000e+00, float 0x3EE9000000000000)
%232 = fcmp oeq float %231, 0x3EE9000000000000
%233 = zext i1 %232 to i32
%234 = call i32 @assert(i32 %233)
%235 = load float, float* @FLT_MAX
%236 = call float @flt_add(float %235, float 1.000000e+00)
%237 = load float, float* @FLT_MAX
%238 = fcmp oeq float %236, %237
%239 = zext i1 %238 to i32
%240 = call i32 @assert(i32 %239)
%241 = load float, float* @FLT_MAX
%242 = fneg float %241
%243 = call float @flt_add(float %242, float -1.000000e+00)
%244 = load float, float* @FLT_MAX
%245 = fneg float %244
%246 = fcmp oeq float %243, %245
%247 = zext i1 %246 to i32
%248 = call i32 @assert(i32 %247)
%249 = load float, float* @FLT_MAX
%250 = load float, float* @FLT_MAX
%251 = call float @flt_add(float %249, float %250)
%252 = load float, float* @FLT_MAX
%253 = fcmp oeq float %251, %252
%254 = zext i1 %253 to i32
%255 = call i32 @assert(i32 %254)
%256 = load float, float* @FLT_MAX
%257 = fneg float %256
%258 = load float, float* @FLT_MAX
%259 = fneg float %258
%260 = call float @flt_add(float %257, float %259)
%261 = load float, float* @FLT_MAX
%262 = fneg float %261
%263 = fcmp oeq float %260, %262
%264 = zext i1 %263 to i32
%265 = call i32 @assert(i32 %264)
%266 = call float @flt_mul(float 1.000000e+00, float 1.000000e+00)
%267 = fcmp oeq float %266, 1.000000e+00
%268 = zext i1 %267 to i32
%269 = call i32 @assert(i32 %268)
%270 = call float @flt_mul(float 2.000000e+00, float 3.000000e+00)
%271 = fcmp oeq float %270, 6.000000e+00
%272 = zext i1 %271 to i32
%273 = call i32 @assert(i32 %272)
%274 = load float, float* @FLT_MAX
%275 = fdiv float %274, 2.000000e+00
%276 = call float @flt_mul(float %275, float 2.000000e+00)
%277 = load float, float* @FLT_MAX
%278 = fcmp oeq float %276, %277
%279 = zext i1 %278 to i32
%280 = call i32 @assert(i32 %279)
%281 = load float, float* @FLT_MAX
%282 = call float @flt_mul(float %281, float 2.000000e+00)
%283 = load float, float* @FLT_MAX
%284 = fcmp oeq float %282, %283
%285 = zext i1 %284 to i32
%286 = call i32 @assert(i32 %285)
%287 = load float, float* @FLT_MAX
%288 = call float @flt_mul(float %287, float -2.000000e+00)
%289 = load float, float* @FLT_MAX
%290 = fneg float %289
%291 = fcmp oeq float %288, %290
%292 = zext i1 %291 to i32
%293 = call i32 @assert(i32 %292)
%294 = load float, float* @FLT_MAX
%295 = fneg float %294
%296 = call float @flt_mul(float %295, float 2.000000e+00)
%297 = load float, float* @FLT_MAX
%298 = fneg float %297
%299 = fcmp oeq float %296, %298
%300 = zext i1 %299 to i32
%301 = call i32 @assert(i32 %300)
%302 = load float, float* @FLT_MAX
%303 = fneg float %302
%304 = call float @flt_mul(float %303, float -2.000000e+00)
%305 = load float, float* @FLT_MAX
%306 = fcmp oeq float %304, %305
%307 = zext i1 %306 to i32
%308 = call i32 @assert(i32 %307)
%309 = call float @flt_div(float 1.000000e+00, float 1.000000e+00)
%310 = fcmp oeq float %309, 1.000000e+00
%311 = zext i1 %310 to i32
%312 = call i32 @assert(i32 %311)
%313 = call float @flt_div(float 4.000000e+00, float 2.000000e+00)
%314 = fcmp oeq float %313, 2.000000e+00
%315 = zext i1 %314 to i32
%316 = call i32 @assert(i32 %315)
%317 = call float @flt_div(float 1.000000e+00, float 0.000000e+00)
%318 = load float, float* @FLT_MAX
%319 = fcmp oeq float %317, %318
%320 = zext i1 %319 to i32
%321 = call i32 @assert(i32 %320)
%322 = load float, float* @FLT_MAX
%323 = call float @flt_div(float %322, float 5.000000e-01)
%324 = load float, float* @FLT_MAX
%325 = fcmp oeq float %323, %324
%326 = zext i1 %325 to i32
%327 = call i32 @assert(i32 %326)
%328 = load float, float* @FLT_MAX
%329 = fneg float %328
%330 = call float @flt_div(float %329, float 5.000000e-01)
%331 = load float, float* @FLT_MAX
%332 = fneg float %331
%333 = fcmp oeq float %330, %332
%334 = zext i1 %333 to i32
%335 = call i32 @assert(i32 %334)
%336 = load float, float* @FLT_MAX
%337 = call float @flt_div(float %336, float -5.000000e-01)
%338 = load float, float* @FLT_MAX
%339 = fneg float %338
%340 = fcmp oeq float %337, %339
%341 = zext i1 %340 to i32
%342 = call i32 @assert(i32 %341)
%343 = load float, float* @FLT_EPSILON
%344 = call float @flt_div(float 1.000000e+00, float %343)
%345 = load float, float* @FLT_MAX
%346 = fcmp oeq float %344, %345
%347 = zext i1 %346 to i32
%348 = call i32 @assert(i32 %347)
%349 = load float, float* @FLT_EPSILON
%350 = fneg float %349
%351 = call float @flt_div(float 1.000000e+00, float %350)
%352 = load float, float* @FLT_MAX
%353 = fneg float %352
%354 = fcmp oeq float %351, %353
%355 = zext i1 %354 to i32
%356 = call i32 @assert(i32 %355)
store i64 0, i64* %3
br label %357
357: ; preds = %376, %0
%358 = load i64, i64* %3
%359 = icmp ult i64 %358, 10
br i1 %359, label %360, label %379
360: ; preds = %357
%361 = getelementptr inbounds [10 x float], [10 x float]* %2, i64 0, i64 0
%362 = load i64, i64* %3
%363 = add i64 %362, 1
%364 = call float @flt_sum(float* %361, i64 %363)
%365 = load i64, i64* %3
%366 = getelementptr inbounds [10 x float], [10 x float]* %2, i64 0, i64 %365
%367 = load float, float* %366
%368 = load i64, i64* %3
%369 = getelementptr inbounds [10 x float], [10 x float]* %2, i64 0, i64 %368
%370 = load float, float* %369
%371 = fadd float %370, 1.000000e+00
%372 = fmul float %367, %371
%373 = fdiv float %372, 2.000000e+00
%374 = call i32 @flt_eq(float %364, float %373)
%375 = call i32 @assert(i32 %374)
br label %376
376: ; preds = %360
%377 = load i64, i64* %3
%378 = add i64 %377, 1
store i64 %378, i64* %3
br label %357
379: ; preds = %357
store i64 10, i64* %3
%380 = getelementptr inbounds [10 x float], [10 x float]* %2, i64 0, i64 0
%381 = load i64, i64* %3
%382 = call float @flt_l2norm(float* %380, i64 %381)
%383 = call i32 @flt_eq(float %382, float 0x4030E1C700000000)
%384 = icmp eq i32 %383, 1
%385 = zext i1 %384 to i32
%386 = call i32 @assert(i32 %385)
ret i32 0
}

LLVM IR (-O2):
@__const.main.x = [10 x float] [float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00, float 8.000000e+00, float 9.000000e+00]
@NAN = global float 0.000000e+00
@INFINITY = global float 0.000000e+00
@FLT_EPSILON = global float 0.000000e+00
@FLT_MAX = global float 0.000000e+00
define i32 @main() {
%1 = alloca [10 x float]
%2 = bitcast [10 x float]* %1 to i8*
%3 = load float, float* @NAN
%4 = tail call i32 @flt_isreal(float %3)
%5 = icmp eq i32 %4, 0
%6 = zext i1 %5 to i32
%7 = tail call i32 @assert(i32 %6)
%8 = load float, float* @INFINITY
%9 = tail call i32 @flt_isreal(float %8)
%10 = icmp eq i32 %9, 0
%11 = zext i1 %10 to i32
%12 = tail call i32 @assert(i32 %11)
%13 = tail call i32 @flt_isreal(float 0x7FF0000000000000)
%14 = icmp eq i32 %13, 0
%15 = zext i1 %14 to i32
%16 = tail call i32 @assert(i32 %15)
%17 = tail call i32 @flt_isreal(float 0xFFF0000000000000)
%18 = icmp eq i32 %17, 0
%19 = zext i1 %18 to i32
%20 = tail call i32 @assert(i32 %19)
%21 = tail call i32 @flt_isreal(float -0.000000e+00)
%22 = icmp eq i32 %21, 1
%23 = zext i1 %22 to i32
%24 = tail call i32 @assert(i32 %23)
%25 = tail call i32 @flt_isreal(float 0x3FF3333340000000)
%26 = icmp eq i32 %25, 1
%27 = zext i1 %26 to i32
%28 = tail call i32 @assert(i32 %27)
%29 = tail call i32 @flt_iszero(float 0.000000e+00)
%30 = icmp eq i32 %29, 1
%31 = zext i1 %30 to i32
%32 = tail call i32 @assert(i32 %31)
%33 = load float, float* @FLT_EPSILON
%34 = tail call i32 @flt_iszero(float %33)
%35 = icmp eq i32 %34, 1
%36 = zext i1 %35 to i32
%37 = tail call i32 @assert(i32 %36)
%38 = tail call i32 @flt_iszero(float 0x3EE9000000000000)
%39 = icmp eq i32 %38, 0
%40 = zext i1 %39 to i32
%41 = tail call i32 @assert(i32 %40)
%42 = load float, float* @NAN
%43 = tail call i32 @flt_iszero(float %42)
%44 = icmp eq i32 %43, 0
%45 = zext i1 %44 to i32
%46 = tail call i32 @assert(i32 %45)
%47 = load float, float* @INFINITY
%48 = tail call i32 @flt_iszero(float %47)
%49 = icmp eq i32 %48, 0
%50 = zext i1 %49 to i32
%51 = tail call i32 @assert(i32 %50)
%52 = tail call float @flt_abs(float 1.000000e+00)
%53 = fcmp oeq float %52, 1.000000e+00
%54 = zext i1 %53 to i32
%55 = tail call i32 @assert(i32 %54)
%56 = tail call float @flt_abs(float -1.000000e+00)
%57 = fcmp oeq float %56, 1.000000e+00
%58 = zext i1 %57 to i32
%59 = tail call i32 @assert(i32 %58)
%60 = tail call float @flt_abs(float 0.000000e+00)
%61 = fcmp oeq float %60, 0.000000e+00
%62 = zext i1 %61 to i32
%63 = tail call i32 @assert(i32 %62)
%64 = tail call float @flt_abs(float -0.000000e+00)
%65 = fcmp oeq float %64, 0.000000e+00
%66 = zext i1 %65 to i32
%67 = tail call i32 @assert(i32 %66)
%68 = load float, float* @INFINITY
%69 = fneg float %68
%70 = tail call float @flt_abs(float %69)
%71 = load float, float* @INFINITY
%72 = fcmp oeq float %70, %71
%73 = zext i1 %72 to i32
%74 = tail call i32 @assert(i32 %73)
%75 = tail call i32 @flt_eq(float 0.000000e+00, float 0.000000e+00)
%76 = icmp eq i32 %75, 1
%77 = zext i1 %76 to i32
%78 = tail call i32 @assert(i32 %77)
%79 = tail call i32 @flt_eq(float 0.000000e+00, float 1.000000e+00)
%80 = icmp eq i32 %79, 0
%81 = zext i1 %80 to i32
%82 = tail call i32 @assert(i32 %81)
%83 = load float, float* @FLT_EPSILON
%84 = tail call i32 @flt_eq(float 0.000000e+00, float %83)
%85 = icmp eq i32 %84, 1
%86 = zext i1 %85 to i32
%87 = tail call i32 @assert(i32 %86)
%88 = tail call i32 @flt_eq(float 0.000000e+00, float 0x3EE9000000000000)
%89 = icmp eq i32 %88, 0
%90 = zext i1 %89 to i32
%91 = tail call i32 @assert(i32 %90)
%92 = load float, float* @NAN
%93 = tail call i32 @flt_eq(float 0.000000e+00, float %92)
%94 = icmp eq i32 %93, 0
%95 = zext i1 %94 to i32
%96 = tail call i32 @assert(i32 %95)
%97 = load float, float* @NAN
%98 = load float, float* @INFINITY
%99 = tail call i32 @flt_eq(float %97, float %98)
%100 = icmp eq i32 %99, 0
%101 = zext i1 %100 to i32
%102 = tail call i32 @assert(i32 %101)
%103 = tail call i32 @flt_ne(float 0.000000e+00, float 1.000000e+00)
%104 = icmp eq i32 %103, 1
%105 = zext i1 %104 to i32
%106 = tail call i32 @assert(i32 %105)
%107 = tail call i32 @flt_ne(float 1.000000e+00, float 1.000000e+00)
%108 = icmp eq i32 %107, 0
%109 = zext i1 %108 to i32
%110 = tail call i32 @assert(i32 %109)
%111 = load float, float* @FLT_EPSILON
%112 = tail call i32 @flt_ne(float 0.000000e+00, float %111)
%113 = icmp eq i32 %112, 0
%114 = zext i1 %113 to i32
%115 = tail call i32 @assert(i32 %114)
%116 = tail call i32 @flt_ne(float 0.000000e+00, float 0x3EE9000000000000)
%117 = icmp eq i32 %116, 1
%118 = zext i1 %117 to i32
%119 = tail call i32 @assert(i32 %118)
%120 = tail call i32 @flt_gt(float 2.000000e+00, float 1.000000e+00)
%121 = icmp eq i32 %120, 1
%122 = zext i1 %121 to i32
%123 = tail call i32 @assert(i32 %122)
%124 = tail call i32 @flt_gt(float 1.000000e+00, float 1.000000e+00)
%125 = icmp eq i32 %124, 0
%126 = zext i1 %125 to i32
%127 = tail call i32 @assert(i32 %126)
%128 = tail call i32 @flt_gt(float 0x3FF0000C80000000, float 1.000000e+00)
%129 = icmp eq i32 %128, 1
%130 = zext i1 %129 to i32
%131 = tail call i32 @assert(i32 %130)
%132 = tail call i32 @flt_ge(float 2.000000e+00, float 1.000000e+00)
%133 = icmp eq i32 %132, 1
%134 = zext i1 %133 to i32
%135 = tail call i32 @assert(i32 %134)
%136 = tail call i32 @flt_ge(float 1.000000e+00, float 1.000000e+00)
%137 = icmp eq i32 %136, 1
%138 = zext i1 %137 to i32
%139 = tail call i32 @assert(i32 %138)
%140 = tail call i32 @flt_ge(float 0x3FF0000C80000000, float 1.000000e+00)
%141 = icmp eq i32 %140, 1
%142 = zext i1 %141 to i32
%143 = tail call i32 @assert(i32 %142)
%144 = load float, float* @FLT_EPSILON
%145 = fsub float 1.000000e+00, %144
%146 = tail call i32 @flt_ge(float %145, float 1.000000e+00)
%147 = icmp eq i32 %146, 1
%148 = zext i1 %147 to i32
%149 = tail call i32 @assert(i32 %148)
%150 = tail call i32 @flt_lt(float 1.000000e+00, float 2.000000e+00)
%151 = icmp eq i32 %150, 1
%152 = zext i1 %151 to i32
%153 = tail call i32 @assert(i32 %152)
%154 = tail call i32 @flt_lt(float 1.000000e+00, float 1.000000e+00)
%155 = icmp eq i32 %154, 0
%156 = zext i1 %155 to i32
%157 = tail call i32 @assert(i32 %156)
%158 = tail call i32 @flt_lt(float 1.000000e+00, float 0x3FF0000C80000000)
%159 = icmp eq i32 %158, 1
%160 = zext i1 %159 to i32
%161 = tail call i32 @assert(i32 %160)
%162 = tail call i32 @flt_le(float 1.000000e+00, float 2.000000e+00)
%163 = icmp eq i32 %162, 1
%164 = zext i1 %163 to i32
%165 = tail call i32 @assert(i32 %164)
%166 = tail call i32 @flt_le(float 1.000000e+00, float 1.000000e+00)
%167 = icmp eq i32 %166, 1
%168 = zext i1 %167 to i32
%169 = tail call i32 @assert(i32 %168)
%170 = tail call i32 @flt_le(float 1.000000e+00, float 0x3FF0000C80000000)
%171 = icmp eq i32 %170, 1
%172 = zext i1 %171 to i32
%173 = tail call i32 @assert(i32 %172)
%174 = load float, float* @FLT_EPSILON
%175 = fsub float 1.000000e+00, %174
%176 = tail call i32 @flt_le(float 1.000000e+00, float %175)
%177 = icmp eq i32 %176, 1
%178 = zext i1 %177 to i32
%179 = tail call i32 @assert(i32 %178)
%180 = tail call i32 @flt_sgn(float 0.000000e+00)
%181 = icmp eq i32 %180, 0
%182 = zext i1 %181 to i32
%183 = tail call i32 @assert(i32 %182)
%184 = tail call i32 @flt_sgn(float 1.000000e+00)
%185 = icmp eq i32 %184, 1
%186 = zext i1 %185 to i32
%187 = tail call i32 @assert(i32 %186)
%188 = tail call i32 @flt_sgn(float -1.000000e+00)
%189 = icmp eq i32 %188, -1
%190 = zext i1 %189 to i32
%191 = tail call i32 @assert(i32 %190)
%192 = load float, float* @FLT_EPSILON
%193 = tail call i32 @flt_sgn(float %192)
%194 = icmp eq i32 %193, 0
%195 = zext i1 %194 to i32
%196 = tail call i32 @assert(i32 %195)
%197 = load float, float* @FLT_EPSILON
%198 = fneg float %197
%199 = tail call i32 @flt_sgn(float %198)
%200 = icmp eq i32 %199, 0
%201 = zext i1 %200 to i32
%202 = tail call i32 @assert(i32 %201)
%203 = tail call i32 @flt_sgn(float 0x3EE9000000000000)
%204 = icmp eq i32 %203, 1
%205 = zext i1 %204 to i32
%206 = tail call i32 @assert(i32 %205)
%207 = tail call i32 @flt_sgn(float 0xBEE9000000000000)
%208 = icmp eq i32 %207, -1
%209 = zext i1 %208 to i32
%210 = tail call i32 @assert(i32 %209)
%211 = load float, float* @NAN
%212 = tail call i32 @flt_sgn(float %211)
%213 = icmp eq i32 %212, 0
%214 = zext i1 %213 to i32
%215 = tail call i32 @assert(i32 %214)
%216 = load float, float* @INFINITY
%217 = tail call i32 @flt_sgn(float %216)
%218 = icmp eq i32 %217, 0
%219 = zext i1 %218 to i32
%220 = tail call i32 @assert(i32 %219)
%221 = tail call float @flt_add(float 0.000000e+00, float 0.000000e+00)
%222 = fcmp oeq float %221, 0.000000e+00
%223 = zext i1 %222 to i32
%224 = tail call i32 @assert(i32 %223)
%225 = tail call float @flt_add(float 1.000000e+00, float 2.000000e+00)
%226 = fcmp oeq float %225, 3.000000e+00
%227 = zext i1 %226 to i32
%228 = tail call i32 @assert(i32 %227)
%229 = tail call float @flt_add(float 0.000000e+00, float 0x3EE9000000000000)
%230 = fcmp oeq float %229, 0x3EE9000000000000
%231 = zext i1 %230 to i32
%232 = tail call i32 @assert(i32 %231)
%233 = load float, float* @FLT_MAX
%234 = tail call float @flt_add(float %233, float 1.000000e+00)
%235 = load float, float* @FLT_MAX
%236 = fcmp oeq float %234, %235
%237 = zext i1 %236 to i32
%238 = tail call i32 @assert(i32 %237)
%239 = load float, float* @FLT_MAX
%240 = fneg float %239
%241 = tail call float @flt_add(float %240, float -1.000000e+00)
%242 = load float, float* @FLT_MAX
%243 = fneg float %242
%244 = fcmp oeq float %241, %243
%245 = zext i1 %244 to i32
%246 = tail call i32 @assert(i32 %245)
%247 = load float, float* @FLT_MAX
%248 = tail call float @flt_add(float %247, float %247)
%249 = load float, float* @FLT_MAX
%250 = fcmp oeq float %248, %249
%251 = zext i1 %250 to i32
%252 = tail call i32 @assert(i32 %251)
%253 = load float, float* @FLT_MAX
%254 = fneg float %253
%255 = tail call float @flt_add(float %254, float %254)
%256 = load float, float* @FLT_MAX
%257 = fneg float %256
%258 = fcmp oeq float %255, %257
%259 = zext i1 %258 to i32
%260 = tail call i32 @assert(i32 %259)
%261 = tail call float @flt_mul(float 1.000000e+00, float 1.000000e+00)
%262 = fcmp oeq float %261, 1.000000e+00
%263 = zext i1 %262 to i32
%264 = tail call i32 @assert(i32 %263)
%265 = tail call float @flt_mul(float 2.000000e+00, float 3.000000e+00)
%266 = fcmp oeq float %265, 6.000000e+00
%267 = zext i1 %266 to i32
%268 = tail call i32 @assert(i32 %267)
%269 = load float, float* @FLT_MAX
%270 = fmul float %269, 5.000000e-01
%271 = tail call float @flt_mul(float %270, float 2.000000e+00)
%272 = load float, float* @FLT_MAX
%273 = fcmp oeq float %271, %272
%274 = zext i1 %273 to i32
%275 = tail call i32 @assert(i32 %274)
%276 = load float, float* @FLT_MAX
%277 = tail call float @flt_mul(float %276, float 2.000000e+00)
%278 = load float, float* @FLT_MAX
%279 = fcmp oeq float %277, %278
%280 = zext i1 %279 to i32
%281 = tail call i32 @assert(i32 %280)
%282 = load float, float* @FLT_MAX
%283 = tail call float @flt_mul(float %282, float -2.000000e+00)
%284 = load float, float* @FLT_MAX
%285 = fneg float %284
%286 = fcmp oeq float %283, %285
%287 = zext i1 %286 to i32
%288 = tail call i32 @assert(i32 %287)
%289 = load float, float* @FLT_MAX
%290 = fneg float %289
%291 = tail call float @flt_mul(float %290, float 2.000000e+00)
%292 = load float, float* @FLT_MAX
%293 = fneg float %292
%294 = fcmp oeq float %291, %293
%295 = zext i1 %294 to i32
%296 = tail call i32 @assert(i32 %295)
%297 = load float, float* @FLT_MAX
%298 = fneg float %297
%299 = tail call float @flt_mul(float %298, float -2.000000e+00)
%300 = load float, float* @FLT_MAX
%301 = fcmp oeq float %299, %300
%302 = zext i1 %301 to i32
%303 = tail call i32 @assert(i32 %302)
%304 = tail call float @flt_div(float 1.000000e+00, float 1.000000e+00)
%305 = fcmp oeq float %304, 1.000000e+00
%306 = zext i1 %305 to i32
%307 = tail call i32 @assert(i32 %306)
%308 = tail call float @flt_div(float 4.000000e+00, float 2.000000e+00)
%309 = fcmp oeq float %308, 2.000000e+00
%310 = zext i1 %309 to i32
%311 = tail call i32 @assert(i32 %310)
%312 = tail call float @flt_div(float 1.000000e+00, float 0.000000e+00)
%313 = load float, float* @FLT_MAX
%314 = fcmp oeq float %312, %313
%315 = zext i1 %314 to i32
%316 = tail call i32 @assert(i32 %315)
%317 = load float, float* @FLT_MAX
%318 = tail call float @flt_div(float %317, float 5.000000e-01)
%319 = load float, float* @FLT_MAX
%320 = fcmp oeq float %318, %319
%321 = zext i1 %320 to i32
%322 = tail call i32 @assert(i32 %321)
%323 = load float, float* @FLT_MAX
%324 = fneg float %323
%325 = tail call float @flt_div(float %324, float 5.000000e-01)
%326 = load float, float* @FLT_MAX
%327 = fneg float %326
%328 = fcmp oeq float %325, %327
%329 = zext i1 %328 to i32
%330 = tail call i32 @assert(i32 %329)
%331 = load float, float* @FLT_MAX
%332 = tail call float @flt_div(float %331, float -5.000000e-01)
%333 = load float, float* @FLT_MAX
%334 = fneg float %333
%335 = fcmp oeq float %332, %334
%336 = zext i1 %335 to i32
%337 = tail call i32 @assert(i32 %336)
%338 = load float, float* @FLT_EPSILON
%339 = tail call float @flt_div(float 1.000000e+00, float %338)
%340 = load float, float* @FLT_MAX
%341 = fcmp oeq float %339, %340
%342 = zext i1 %341 to i32
%343 = tail call i32 @assert(i32 %342)
%344 = load float, float* @FLT_EPSILON
%345 = fneg float %344
%346 = tail call float @flt_div(float 1.000000e+00, float %345)
%347 = load float, float* @FLT_MAX
%348 = fneg float %347
%349 = fcmp oeq float %346, %348
%350 = zext i1 %349 to i32
%351 = tail call i32 @assert(i32 %350)
%352 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 0
%353 = call float @flt_sum(float* %352, i64 1)
%354 = load float, float* %352
%355 = fadd float %354, 1.000000e+00
%356 = fmul float %354, %355
%357 = fmul float %356, 5.000000e-01
%358 = call i32 @flt_eq(float %353, float %357)
%359 = call i32 @assert(i32 %358)
%360 = call float @flt_sum(float* %352, i64 2)
%361 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 1
%362 = load float, float* %361
%363 = fadd float %362, 1.000000e+00
%364 = fmul float %362, %363
%365 = fmul float %364, 5.000000e-01
%366 = call i32 @flt_eq(float %360, float %365)
%367 = call i32 @assert(i32 %366)
%368 = call float @flt_sum(float* %352, i64 3)
%369 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 2
%370 = load float, float* %369
%371 = fadd float %370, 1.000000e+00
%372 = fmul float %370, %371
%373 = fmul float %372, 5.000000e-01
%374 = call i32 @flt_eq(float %368, float %373)
%375 = call i32 @assert(i32 %374)
%376 = call float @flt_sum(float* %352, i64 4)
%377 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 3
%378 = load float, float* %377
%379 = fadd float %378, 1.000000e+00
%380 = fmul float %378, %379
%381 = fmul float %380, 5.000000e-01
%382 = call i32 @flt_eq(float %376, float %381)
%383 = call i32 @assert(i32 %382)
%384 = call float @flt_sum(float* %352, i64 5)
%385 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 4
%386 = load float, float* %385
%387 = fadd float %386, 1.000000e+00
%388 = fmul float %386, %387
%389 = fmul float %388, 5.000000e-01
%390 = call i32 @flt_eq(float %384, float %389)
%391 = call i32 @assert(i32 %390)
%392 = call float @flt_sum(float* %352, i64 6)
%393 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 5
%394 = load float, float* %393
%395 = fadd float %394, 1.000000e+00
%396 = fmul float %394, %395
%397 = fmul float %396, 5.000000e-01
%398 = call i32 @flt_eq(float %392, float %397)
%399 = call i32 @assert(i32 %398)
%400 = call float @flt_sum(float* %352, i64 7)
%401 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 6
%402 = load float, float* %401
%403 = fadd float %402, 1.000000e+00
%404 = fmul float %402, %403
%405 = fmul float %404, 5.000000e-01
%406 = call i32 @flt_eq(float %400, float %405)
%407 = call i32 @assert(i32 %406)
%408 = call float @flt_sum(float* %352, i64 8)
%409 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 7
%410 = load float, float* %409
%411 = fadd float %410, 1.000000e+00
%412 = fmul float %410, %411
%413 = fmul float %412, 5.000000e-01
%414 = call i32 @flt_eq(float %408, float %413)
%415 = call i32 @assert(i32 %414)
%416 = call float @flt_sum(float* %352, i64 9)
%417 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 8
%418 = load float, float* %417
%419 = fadd float %418, 1.000000e+00
%420 = fmul float %418, %419
%421 = fmul float %420, 5.000000e-01
%422 = call i32 @flt_eq(float %416, float %421)
%423 = call i32 @assert(i32 %422)
%424 = call float @flt_sum(float* %352, i64 10)
%425 = getelementptr inbounds [10 x float], [10 x float]* %1, i64 0, i64 9
%426 = load float, float* %425
%427 = fadd float %426, 1.000000e+00
%428 = fmul float %426, %427
%429 = fmul float %428, 5.000000e-01
%430 = call i32 @flt_eq(float %424, float %429)
%431 = call i32 @assert(i32 %430)
%432 = call float @flt_l2norm(float* %352, i64 10)
%433 = call i32 @flt_eq(float %432, float 0x4030E1C700000000)
%434 = icmp eq i32 %433, 1
%435 = zext i1 %434 to i32
%436 = call i32 @assert(i32 %435)
ret i32 0
}