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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ abort();
int d2s(double);
unsigned int d2u(double);
int f2s(float);
unsigned int f2u(float);
test_float_to_integer() {
  if (f2u(0.0) != 0)
    abort();
  if (f2u(0.999) != 0)
    abort();
  if (f2u(1.0) != 1)
    abort();
  if (f2u(1.99) != 1)
    abort();
  if (f2u((float)((~0U) >> 1)) != (~0U) >> 1 &&
      f2u((float)((~0U) >> 1)) != ((~0U) >> 1) + 1)
    abort();
  if (f2u((float)~((~0U) >> 1)) != ~((~0U) >> 1))
    abort();
  if (sizeof(double) >= 8) {
    if (d2u(0.0) != 0)
      abort();
    if (d2u(0.999) != 0)
      abort();
    if (d2u(1.0) != 1)
      abort();
    if (d2u(1.99) != 1)
      abort();
    if (d2u((double)(~0U)) != ~0U)
      abort();
    if (d2u((double)((~0U) >> 1)) != (~0U) >> 1)
      abort();
    if (d2u((double)~((~0U) >> 1)) != ~((~0U) >> 1))
      abort();
  }
  if (f2s(0.0) != 0)
    abort();
  if (f2s(0.999) != 0)
    abort();
  if (f2s(1.0) != 1)
    abort();
  if (f2s(1.99) != 1)
    abort();
  if (f2s(-0.999) != 0)
    abort();
  if (f2s(-1.0) != -1)
    abort();
  if (f2s(-1.99) != -1)
    abort();
  if (f2s((float)(int)~((~0U) >> 1)) != (int)~((~0U) >> 1))
    abort();
  if (sizeof(double) >= 8) {
    if (d2s(0.0) != 0)
      abort();
    if (d2s(0.999) != 0)
      abort();
    if (d2s(1.0) != 1)
      abort();
    if (d2s(1.99) != 1)
      abort();
    if (d2s(-0.999) != 0)
      abort();
    if (d2s(-1.0) != -1)
      abort();
    if (d2s(-1.99) != -1)
      abort();
    if (d2s((double)((~0U) >> 1)) != (~0U) >> 1)
      abort();
    if (d2s((double)(int)~((~0U) >> 1)) != (int)~((~0U) >> 1))
      abort();
  }
}


x86 assembly (clang, -O0):
<test_float_to_integer>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
xorps  %xmm0,%xmm0
call   1070 <f2u@plt>
cmp    $0x0,%eax
je     1170 <test_float_to_integer+0x20>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xe88(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x0,%eax
je     118d <test_float_to_integer+0x3d>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xe6f(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x1,%eax
je     11aa <test_float_to_integer+0x5a>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xe56(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x1,%eax
je     11c7 <test_float_to_integer+0x77>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xe3d(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x7fffffff,%eax
je     11fe <test_float_to_integer+0xae>
movss  0xe25(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x80000000,%eax
je     11fe <test_float_to_integer+0xae>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xe06(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x80000000,%eax
je     121d <test_float_to_integer+0xcd>
mov    $0x0,%al
call   1030 <abort@plt>
xorps  %xmm0,%xmm0
call   1040 <d2u@plt>
cmp    $0x0,%eax
je     1235 <test_float_to_integer+0xe5>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xde3(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x0,%eax
je     1252 <test_float_to_integer+0x102>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xdce(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x1,%eax
je     126f <test_float_to_integer+0x11f>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xdb9(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x1,%eax
je     128c <test_float_to_integer+0x13c>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xda4(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0xffffffff,%eax
je     12a9 <test_float_to_integer+0x159>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xd8f(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x7fffffff,%eax
je     12c8 <test_float_to_integer+0x178>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xd78(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x80000000,%eax
je     12e7 <test_float_to_integer+0x197>
mov    $0x0,%al
call   1030 <abort@plt>
xorps  %xmm0,%xmm0
call   1060 <f2s@plt>
cmp    $0x0,%eax
je     12ff <test_float_to_integer+0x1af>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xcf9(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x0,%eax
je     131c <test_float_to_integer+0x1cc>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xce0(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x1,%eax
je     1339 <test_float_to_integer+0x1e9>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xcc7(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x1,%eax
je     1356 <test_float_to_integer+0x206>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xcb2(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x0,%eax
je     1373 <test_float_to_integer+0x223>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xc99(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0xffffffff,%eax
je     1390 <test_float_to_integer+0x240>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xc80(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0xffffffff,%eax
je     13ad <test_float_to_integer+0x25d>
mov    $0x0,%al
call   1030 <abort@plt>
movss  0xc67(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x80000000,%eax
je     13cc <test_float_to_integer+0x27c>
mov    $0x0,%al
call   1030 <abort@plt>
xorps  %xmm0,%xmm0
call   1050 <d2s@plt>
cmp    $0x0,%eax
je     13e4 <test_float_to_integer+0x294>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xc34(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x0,%eax
je     1401 <test_float_to_integer+0x2b1>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xc1f(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x1,%eax
je     141e <test_float_to_integer+0x2ce>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xc0a(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x1,%eax
je     143b <test_float_to_integer+0x2eb>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xc0d(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x0,%eax
je     1458 <test_float_to_integer+0x308>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xbf8(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0xffffffff,%eax
je     1475 <test_float_to_integer+0x325>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xbe3(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0xffffffff,%eax
je     1492 <test_float_to_integer+0x342>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xba6(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x7fffffff,%eax
je     14b1 <test_float_to_integer+0x361>
mov    $0x0,%al
call   1030 <abort@plt>
movsd  0xbaf(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x80000000,%eax
je     14d0 <test_float_to_integer+0x380>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x4(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_float_to_integer>:
push   %rax
xorps  %xmm0,%xmm0
call   1070 <f2u@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xe97(%rip),%xmm0
call   1070 <f2u@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xe86(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xe74(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xe62(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x7fffffff,%eax
je     11ce <test_float_to_integer+0x7e>
movss  0xe4e(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x80000000,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xe36(%rip),%xmm0
call   1070 <f2u@plt>
cmp    $0x80000000,%eax
jne    13cf <test_float_to_integer+0x27f>
xorps  %xmm0,%xmm0
call   1040 <d2u@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xe22(%rip),%xmm0
call   1040 <d2u@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xe15(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xe07(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xdf9(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0xffffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xdeb(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x7fffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xddb(%rip),%xmm0
call   1040 <d2u@plt>
cmp    $0x80000000,%eax
jne    13cf <test_float_to_integer+0x27f>
xorps  %xmm0,%xmm0
call   1060 <f2s@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd6b(%rip),%xmm0
call   1060 <f2s@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd5a(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd48(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd3a(%rip),%xmm0
call   1060 <f2s@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd29(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0xffffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd17(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0xffffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movss  0xd05(%rip),%xmm0
call   1060 <f2s@plt>
cmp    $0x80000000,%eax
jne    13cf <test_float_to_integer+0x27f>
xorps  %xmm0,%xmm0
call   1050 <d2s@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xce1(%rip),%xmm0
call   1050 <d2s@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xcd4(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xcca(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x1,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xcd8(%rip),%xmm0
call   1050 <d2s@plt>
test   %eax,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xccf(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0xffffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xcc5(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0xffffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xc93(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x7fffffff,%eax
jne    13cf <test_float_to_integer+0x27f>
movsd  0xca7(%rip),%xmm0
call   1050 <d2s@plt>
cmp    $0x80000000,%eax
jne    13cf <test_float_to_integer+0x27f>
pop    %rcx
ret
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
define i32 @test_float_to_integer() {
%1 = alloca i32
%2 = call i32 @f2u(float 0.000000e+00)
%3 = icmp ne i32 %2, 0
br i1 %3, label %4, label %6
4: ; preds = %0
%5 = call i32 (...) @abort()
unreachable
6: ; preds = %0
%7 = call i32 @f2u(float 0x3FEFF7CEE0000000)
%8 = icmp ne i32 %7, 0
br i1 %8, label %9, label %11
9: ; preds = %6
%10 = call i32 (...) @abort()
unreachable
11: ; preds = %6
%12 = call i32 @f2u(float 1.000000e+00)
%13 = icmp ne i32 %12, 1
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = call i32 (...) @abort()
unreachable
16: ; preds = %11
%17 = call i32 @f2u(float 0x3FFFD70A40000000)
%18 = icmp ne i32 %17, 1
br i1 %18, label %19, label %21
19: ; preds = %16
%20 = call i32 (...) @abort()
unreachable
21: ; preds = %16
%22 = call i32 @f2u(float 0x41E0000000000000)
%23 = icmp ne i32 %22, 2147483647
br i1 %23, label %24, label %29
24: ; preds = %21
%25 = call i32 @f2u(float 0x41E0000000000000)
%26 = icmp ne i32 %25, -2147483648
br i1 %26, label %27, label %29
27: ; preds = %24
%28 = call i32 (...) @abort()
unreachable
29: ; preds = %24, %21
%30 = call i32 @f2u(float 0x41E0000000000000)
%31 = icmp ne i32 %30, -2147483648
br i1 %31, label %32, label %34
32: ; preds = %29
%33 = call i32 (...) @abort()
unreachable
34: ; preds = %29
%35 = call i32 @d2u(double 0.000000e+00)
%36 = icmp ne i32 %35, 0
br i1 %36, label %37, label %39
37: ; preds = %34
%38 = call i32 (...) @abort()
unreachable
39: ; preds = %34
%40 = call i32 @d2u(double 0x3FEFF7CED916872B)
%41 = icmp ne i32 %40, 0
br i1 %41, label %42, label %44
42: ; preds = %39
%43 = call i32 (...) @abort()
unreachable
44: ; preds = %39
%45 = call i32 @d2u(double 1.000000e+00)
%46 = icmp ne i32 %45, 1
br i1 %46, label %47, label %49
47: ; preds = %44
%48 = call i32 (...) @abort()
unreachable
49: ; preds = %44
%50 = call i32 @d2u(double 1.990000e+00)
%51 = icmp ne i32 %50, 1
br i1 %51, label %52, label %54
52: ; preds = %49
%53 = call i32 (...) @abort()
unreachable
54: ; preds = %49
%55 = call i32 @d2u(double 0x41EFFFFFFFE00000)
%56 = icmp ne i32 %55, -1
br i1 %56, label %57, label %59
57: ; preds = %54
%58 = call i32 (...) @abort()
unreachable
59: ; preds = %54
%60 = call i32 @d2u(double 0x41DFFFFFFFC00000)
%61 = icmp ne i32 %60, 2147483647
br i1 %61, label %62, label %64
62: ; preds = %59
%63 = call i32 (...) @abort()
unreachable
64: ; preds = %59
%65 = call i32 @d2u(double 0x41E0000000000000)
%66 = icmp ne i32 %65, -2147483648
br i1 %66, label %67, label %69
67: ; preds = %64
%68 = call i32 (...) @abort()
unreachable
69: ; preds = %64
%70 = call i32 @f2s(float 0.000000e+00)
%71 = icmp ne i32 %70, 0
br i1 %71, label %72, label %74
72: ; preds = %69
%73 = call i32 (...) @abort()
unreachable
74: ; preds = %69
%75 = call i32 @f2s(float 0x3FEFF7CEE0000000)
%76 = icmp ne i32 %75, 0
br i1 %76, label %77, label %79
77: ; preds = %74
%78 = call i32 (...) @abort()
unreachable
79: ; preds = %74
%80 = call i32 @f2s(float 1.000000e+00)
%81 = icmp ne i32 %80, 1
br i1 %81, label %82, label %84
82: ; preds = %79
%83 = call i32 (...) @abort()
unreachable
84: ; preds = %79
%85 = call i32 @f2s(float 0x3FFFD70A40000000)
%86 = icmp ne i32 %85, 1
br i1 %86, label %87, label %89
87: ; preds = %84
%88 = call i32 (...) @abort()
unreachable
89: ; preds = %84
%90 = call i32 @f2s(float 0xBFEFF7CEE0000000)
%91 = icmp ne i32 %90, 0
br i1 %91, label %92, label %94
92: ; preds = %89
%93 = call i32 (...) @abort()
unreachable
94: ; preds = %89
%95 = call i32 @f2s(float -1.000000e+00)
%96 = icmp ne i32 %95, -1
br i1 %96, label %97, label %99
97: ; preds = %94
%98 = call i32 (...) @abort()
unreachable
99: ; preds = %94
%100 = call i32 @f2s(float 0xBFFFD70A40000000)
%101 = icmp ne i32 %100, -1
br i1 %101, label %102, label %104
102: ; preds = %99
%103 = call i32 (...) @abort()
unreachable
104: ; preds = %99
%105 = call i32 @f2s(float 0xC1E0000000000000)
%106 = icmp ne i32 %105, -2147483648
br i1 %106, label %107, label %109
107: ; preds = %104
%108 = call i32 (...) @abort()
unreachable
109: ; preds = %104
%110 = call i32 @d2s(double 0.000000e+00)
%111 = icmp ne i32 %110, 0
br i1 %111, label %112, label %114
112: ; preds = %109
%113 = call i32 (...) @abort()
unreachable
114: ; preds = %109
%115 = call i32 @d2s(double 0x3FEFF7CED916872B)
%116 = icmp ne i32 %115, 0
br i1 %116, label %117, label %119
117: ; preds = %114
%118 = call i32 (...) @abort()
unreachable
119: ; preds = %114
%120 = call i32 @d2s(double 1.000000e+00)
%121 = icmp ne i32 %120, 1
br i1 %121, label %122, label %124
122: ; preds = %119
%123 = call i32 (...) @abort()
unreachable
124: ; preds = %119
%125 = call i32 @d2s(double 1.990000e+00)
%126 = icmp ne i32 %125, 1
br i1 %126, label %127, label %129
127: ; preds = %124
%128 = call i32 (...) @abort()
unreachable
129: ; preds = %124
%130 = call i32 @d2s(double 0xBFEFF7CED916872B)
%131 = icmp ne i32 %130, 0
br i1 %131, label %132, label %134
132: ; preds = %129
%133 = call i32 (...) @abort()
unreachable
134: ; preds = %129
%135 = call i32 @d2s(double -1.000000e+00)
%136 = icmp ne i32 %135, -1
br i1 %136, label %137, label %139
137: ; preds = %134
%138 = call i32 (...) @abort()
unreachable
139: ; preds = %134
%140 = call i32 @d2s(double -1.990000e+00)
%141 = icmp ne i32 %140, -1
br i1 %141, label %142, label %144
142: ; preds = %139
%143 = call i32 (...) @abort()
unreachable
144: ; preds = %139
%145 = call i32 @d2s(double 0x41DFFFFFFFC00000)
%146 = icmp ne i32 %145, 2147483647
br i1 %146, label %147, label %149
147: ; preds = %144
%148 = call i32 (...) @abort()
unreachable
149: ; preds = %144
%150 = call i32 @d2s(double 0xC1E0000000000000)
%151 = icmp ne i32 %150, -2147483648
br i1 %151, label %152, label %154
152: ; preds = %149
%153 = call i32 (...) @abort()
unreachable
154: ; preds = %149
%155 = load i32, i32* %1
ret i32 %155
}

LLVM IR (-O2):
define i32 @test_float_to_integer() {
%1 = tail call i32 @f2u(float 0.000000e+00)
%2 = icmp eq i32 %1, 0
br i1 %2, label %5, label %3
3: ; preds = %0
%4 = tail call i32 (...) @abort()
unreachable
5: ; preds = %0
%6 = tail call i32 @f2u(float 0x3FEFF7CEE0000000)
%7 = icmp eq i32 %6, 0
br i1 %7, label %10, label %8
8: ; preds = %5
%9 = tail call i32 (...) @abort()
unreachable
10: ; preds = %5
%11 = tail call i32 @f2u(float 1.000000e+00)
%12 = icmp eq i32 %11, 1
br i1 %12, label %15, label %13
13: ; preds = %10
%14 = tail call i32 (...) @abort()
unreachable
15: ; preds = %10
%16 = tail call i32 @f2u(float 0x3FFFD70A40000000)
%17 = icmp eq i32 %16, 1
br i1 %17, label %20, label %18
18: ; preds = %15
%19 = tail call i32 (...) @abort()
unreachable
20: ; preds = %15
%21 = tail call i32 @f2u(float 0x41E0000000000000)
%22 = icmp eq i32 %21, 2147483647
br i1 %22, label %28, label %23
23: ; preds = %20
%24 = tail call i32 @f2u(float 0x41E0000000000000)
%25 = icmp eq i32 %24, -2147483648
br i1 %25, label %28, label %26
26: ; preds = %23
%27 = tail call i32 (...) @abort()
unreachable
28: ; preds = %23, %20
%29 = tail call i32 @f2u(float 0x41E0000000000000)
%30 = icmp eq i32 %29, -2147483648
br i1 %30, label %33, label %31
31: ; preds = %28
%32 = tail call i32 (...) @abort()
unreachable
33: ; preds = %28
%34 = tail call i32 @d2u(double 0.000000e+00)
%35 = icmp eq i32 %34, 0
br i1 %35, label %38, label %36
36: ; preds = %33
%37 = tail call i32 (...) @abort()
unreachable
38: ; preds = %33
%39 = tail call i32 @d2u(double 0x3FEFF7CED916872B)
%40 = icmp eq i32 %39, 0
br i1 %40, label %43, label %41
41: ; preds = %38
%42 = tail call i32 (...) @abort()
unreachable
43: ; preds = %38
%44 = tail call i32 @d2u(double 1.000000e+00)
%45 = icmp eq i32 %44, 1
br i1 %45, label %48, label %46
46: ; preds = %43
%47 = tail call i32 (...) @abort()
unreachable
48: ; preds = %43
%49 = tail call i32 @d2u(double 1.990000e+00)
%50 = icmp eq i32 %49, 1
br i1 %50, label %53, label %51
51: ; preds = %48
%52 = tail call i32 (...) @abort()
unreachable
53: ; preds = %48
%54 = tail call i32 @d2u(double 0x41EFFFFFFFE00000)
%55 = icmp eq i32 %54, -1
br i1 %55, label %58, label %56
56: ; preds = %53
%57 = tail call i32 (...) @abort()
unreachable
58: ; preds = %53
%59 = tail call i32 @d2u(double 0x41DFFFFFFFC00000)
%60 = icmp eq i32 %59, 2147483647
br i1 %60, label %63, label %61
61: ; preds = %58
%62 = tail call i32 (...) @abort()
unreachable
63: ; preds = %58
%64 = tail call i32 @d2u(double 0x41E0000000000000)
%65 = icmp eq i32 %64, -2147483648
br i1 %65, label %68, label %66
66: ; preds = %63
%67 = tail call i32 (...) @abort()
unreachable
68: ; preds = %63
%69 = tail call i32 @f2s(float 0.000000e+00)
%70 = icmp eq i32 %69, 0
br i1 %70, label %73, label %71
71: ; preds = %68
%72 = tail call i32 (...) @abort()
unreachable
73: ; preds = %68
%74 = tail call i32 @f2s(float 0x3FEFF7CEE0000000)
%75 = icmp eq i32 %74, 0
br i1 %75, label %78, label %76
76: ; preds = %73
%77 = tail call i32 (...) @abort()
unreachable
78: ; preds = %73
%79 = tail call i32 @f2s(float 1.000000e+00)
%80 = icmp eq i32 %79, 1
br i1 %80, label %83, label %81
81: ; preds = %78
%82 = tail call i32 (...) @abort()
unreachable
83: ; preds = %78
%84 = tail call i32 @f2s(float 0x3FFFD70A40000000)
%85 = icmp eq i32 %84, 1
br i1 %85, label %88, label %86
86: ; preds = %83
%87 = tail call i32 (...) @abort()
unreachable
88: ; preds = %83
%89 = tail call i32 @f2s(float 0xBFEFF7CEE0000000)
%90 = icmp eq i32 %89, 0
br i1 %90, label %93, label %91
91: ; preds = %88
%92 = tail call i32 (...) @abort()
unreachable
93: ; preds = %88
%94 = tail call i32 @f2s(float -1.000000e+00)
%95 = icmp eq i32 %94, -1
br i1 %95, label %98, label %96
96: ; preds = %93
%97 = tail call i32 (...) @abort()
unreachable
98: ; preds = %93
%99 = tail call i32 @f2s(float 0xBFFFD70A40000000)
%100 = icmp eq i32 %99, -1
br i1 %100, label %103, label %101
101: ; preds = %98
%102 = tail call i32 (...) @abort()
unreachable
103: ; preds = %98
%104 = tail call i32 @f2s(float 0xC1E0000000000000)
%105 = icmp eq i32 %104, -2147483648
br i1 %105, label %108, label %106
106: ; preds = %103
%107 = tail call i32 (...) @abort()
unreachable
108: ; preds = %103
%109 = tail call i32 @d2s(double 0.000000e+00)
%110 = icmp eq i32 %109, 0
br i1 %110, label %113, label %111
111: ; preds = %108
%112 = tail call i32 (...) @abort()
unreachable
113: ; preds = %108
%114 = tail call i32 @d2s(double 0x3FEFF7CED916872B)
%115 = icmp eq i32 %114, 0
br i1 %115, label %118, label %116
116: ; preds = %113
%117 = tail call i32 (...) @abort()
unreachable
118: ; preds = %113
%119 = tail call i32 @d2s(double 1.000000e+00)
%120 = icmp eq i32 %119, 1
br i1 %120, label %123, label %121
121: ; preds = %118
%122 = tail call i32 (...) @abort()
unreachable
123: ; preds = %118
%124 = tail call i32 @d2s(double 1.990000e+00)
%125 = icmp eq i32 %124, 1
br i1 %125, label %128, label %126
126: ; preds = %123
%127 = tail call i32 (...) @abort()
unreachable
128: ; preds = %123
%129 = tail call i32 @d2s(double 0xBFEFF7CED916872B)
%130 = icmp eq i32 %129, 0
br i1 %130, label %133, label %131
131: ; preds = %128
%132 = tail call i32 (...) @abort()
unreachable
133: ; preds = %128
%134 = tail call i32 @d2s(double -1.000000e+00)
%135 = icmp eq i32 %134, -1
br i1 %135, label %138, label %136
136: ; preds = %133
%137 = tail call i32 (...) @abort()
unreachable
138: ; preds = %133
%139 = tail call i32 @d2s(double -1.990000e+00)
%140 = icmp eq i32 %139, -1
br i1 %140, label %143, label %141
141: ; preds = %138
%142 = tail call i32 (...) @abort()
unreachable
143: ; preds = %138
%144 = tail call i32 @d2s(double 0x41DFFFFFFFC00000)
%145 = icmp eq i32 %144, 2147483647
br i1 %145, label %148, label %146
146: ; preds = %143
%147 = tail call i32 (...) @abort()
unreachable
148: ; preds = %143
%149 = tail call i32 @d2s(double 0xC1E0000000000000)
%150 = icmp eq i32 %149, -2147483648
br i1 %150, label %153, label %151
151: ; preds = %148
%152 = tail call i32 (...) @abort()
unreachable
153: ; preds = %148
ret i32 undef
}