#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*/ TIOCGWINSZ;
int /*<<< orphan*/ ioctl(int /*<<< orphan*/, int /*<<< orphan*/, short **);
scalar_t__ printf(char *, ...);
double sqrt(int);
int /*<<< orphan*/ usleep(int);
main() {
  short a[4];
  ioctl(0, TIOCGWINSZ, &a);
  int b, c, d = *a, e = a[1];
  float f, g, h, i = d / 2 + d % 2 + 1, j = d / 5 - 1, k = 0, l = e / 2,
                 m = d / 4, n = .01 * e, o = 0, p = .1;
  while (printf("\x1b[H\x1B[?25l"), !usleep(79383)) {
    for (b = c = 0;
         h = 2 * (m - c) / i, f = -.3 * (g = (l - b) / i) + .954 * h, c < d;
         c += (b = ++b % e) == 0)
      printf("\x1B[%dm ",
             g * g > 1 - h * h ? c > d - j
                                     ? b < d - c || d - c > e - b ? 40 : 100
                                 : b < j || b > e - j             ? 40
                                 : g * (g + .6) + .09 + h * h < 1 ? 100
                                                                  : 47
             : ((int)(9 - k + (.954 * g + .3 * h) / sqrt(1 - f * f)) +
                (int)(2 + f * 2)) %
                         2 ==
                     0
                 ? 107
                 : 101);
    k += p, m += o, o = m > d - 2 * j ? -.04 * d : o + .002 * d;
    n = (l += n) < i || l > e - i ? p = -p, -n : n;
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
movl   $0x0,-0x4(%rbp)
mov    0x2e7f(%rip),%rax
mov    (%rax),%esi
lea    -0xc(%rbp),%rdx
xor    %edi,%edi
call   1040 <ioctl@plt>
movswl -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
movswl -0xa(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x4c(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    -0x4c(%rbp),%eax
add    %edx,%eax
add    $0x1,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
sub    $0x1,%eax
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm0
movss  %xmm0,-0x3c(%rbp)
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xe1e(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x40(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  0xdf1(%rip),%xmm0
movss  %xmm0,-0x48(%rbp)
lea    0xe3d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    $0x13617,%edi
call   1060 <usleep@plt>
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    1241 <main+0x101>
jmp    160f <main+0x4cf>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x10(%rbp)
movss  -0x3c(%rbp),%xmm1
cvtsi2ssl -0x14(%rbp),%xmm0
subss  %xmm0,%xmm1
movss  0xd9f(%rip),%xmm0
mulss  %xmm1,%xmm0
divss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x38(%rbp),%xmm0
cvtsi2ssl -0x10(%rbp),%xmm1
subss  %xmm1,%xmm0
divss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
cvtss2sd %xmm0,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xd80(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xd6c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    1504 <main+0x3c4>
movss  -0x24(%rbp),%xmm0
mulss  -0x24(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
movss  -0x28(%rbp),%xmm2
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm1
movss  0xd12(%rip),%xmm2
addss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jbe    1405 <main+0x2c5>
cvtsi2ssl -0x14(%rbp),%xmm0
cvtsi2ssl -0x18(%rbp),%xmm1
subss  -0x30(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jbe    1360 <main+0x220>
mov    -0x10(%rbp),%ecx
mov    -0x18(%rbp),%edx
sub    -0x14(%rbp),%edx
mov    $0x1,%al
cmp    %edx,%ecx
mov    %al,-0x4d(%rbp)
jl     1345 <main+0x205>
mov    -0x18(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    -0x1c(%rbp),%ecx
sub    -0x10(%rbp),%ecx
cmp    %ecx,%eax
setg   %al
mov    %al,-0x4d(%rbp)
mov    -0x4d(%rbp),%dl
mov    $0x64,%eax
mov    $0x28,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x54(%rbp)
jmp    13fa <main+0x2ba>
cvtsi2ssl -0x10(%rbp),%xmm1
movss  -0x30(%rbp),%xmm0
ucomiss %xmm1,%xmm0
ja     138b <main+0x24b>
cvtsi2ssl -0x10(%rbp),%xmm0
cvtsi2ssl -0x1c(%rbp),%xmm1
subss  -0x30(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jbe    1398 <main+0x258>
mov    $0x28,%eax
mov    %eax,-0x58(%rbp)
jmp    13f4 <main+0x2b4>
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc9e(%rip),%xmm2
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
movsd  0xc86(%rip),%xmm0
addsd  %xmm0,%xmm1
movss  -0x28(%rbp),%xmm0
mulss  -0x28(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
addsd  %xmm0,%xmm1
movsd  0xc60(%rip),%xmm0
mov    $0x2f,%eax
mov    $0x64,%ecx
ucomisd %xmm1,%xmm0
cmova  %ecx,%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
mov    %eax,-0x5c(%rbp)
jmp    14cd <main+0x38d>
movss  0xbff(%rip),%xmm0
subss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xc03(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xbdf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movss  -0x20(%rbp),%xmm0
movss  -0x20(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm1,%xmm0
movss  0xb97(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%edi
call   1050 <sqrt@plt>
movsd  -0x70(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x68(%rbp),%xmm0
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
movss  -0x20(%rbp),%xmm0
addss  %xmm0,%xmm0
movss  0xb5c(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ecx
add    %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    $0x65,%eax
mov    $0x6b,%ecx
cmp    $0x0,%edx
cmove  %ecx,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%esi
lea    0xb8b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
cltd
idivl  -0x1c(%rbp)
mov    %edx,-0x10(%rbp)
cmp    $0x0,%edx
sete   %al
and    $0x1,%al
movzbl %al,%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
jmp    124f <main+0x10f>
movss  -0x48(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x44(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x3c(%rbp),%xmm0
cvtsi2ssl -0x18(%rbp),%xmm1
movss  -0x30(%rbp),%xmm2
addss  %xmm2,%xmm2
subss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jbe    155d <main+0x41d>
cvtsi2sdl -0x18(%rbp),%xmm1
movsd  0xae1(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1580 <main+0x440>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
cvtsi2sdl -0x18(%rbp),%xmm0
movsd  0xab5(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x40(%rbp),%xmm1
addss  -0x38(%rbp),%xmm1
movss  %xmm1,-0x38(%rbp)
movss  -0x2c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
ja     15c3 <main+0x483>
movss  -0x38(%rbp),%xmm0
cvtsi2ssl -0x1c(%rbp),%xmm1
subss  -0x2c(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jbe    15f6 <main+0x4b6>
movss  -0x48(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x40(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x7c(%rbp)
jmp    1600 <main+0x4c0>
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
jmp    1214 <main+0xd4>
mov    -0x4(%rbp),%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    0x2e80(%rip),%rax
mov    (%rax),%esi
lea    0x28(%rsp),%rdx
xor    %edi,%edi
call   1040 <ioctl@plt>
movswl 0x28(%rsp),%ebx
movswl 0x2a(%rsp),%r12d
lea    0xef8(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x13617,%edi
call   1060 <usleep@plt>
test   %eax,%eax
je     11a1 <main+0x61>
xor    %eax,%eax
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movzwl %bx,%eax
shr    $0xf,%eax
add    %ebx,%eax
movswl %ax,%ecx
and    $0xfffffffe,%eax
mov    %ebx,%edx
sub    %eax,%edx
sar    %ecx
add    %edx,%ecx
movswl %cx,%eax
add    $0x1,%eax
cvtsi2ss %eax,%xmm1
imul   $0x6667,%ebx,%eax
mov    %eax,%ecx
sar    $0x11,%ecx
shr    $0x1f,%eax
add    %ecx,%eax
add    $0xffffffff,%eax
cwtl
cvtsi2ss %eax,%xmm2
cvtsi2sd %r12d,%xmm0
mulsd  0xe1a(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
movaps %xmm0,0x60(%rsp)
lea    0x3(%rbx),%eax
test   %bx,%bx
cmovns %ebx,%eax
cwtl
sar    $0x2,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x8(%rsp)
movzwl %r12w,%eax
shr    $0xf,%eax
add    %r12d,%eax
cwtl
sar    %eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x4(%rsp)
cvtsi2ss %ebx,%xmm3
movaps %xmm3,%xmm0
subss  %xmm2,%xmm0
movss  %xmm0,0x24(%rsp)
cvtsi2ss %r12d,%xmm4
movaps %xmm4,%xmm0
subss  %xmm2,%xmm0
movss  %xmm0,0x1c(%rsp)
movss  %xmm2,0x20(%rsp)
movaps %xmm2,%xmm0
addss  %xmm2,%xmm0
xorps  %xmm2,%xmm2
cvtsi2sd %ebx,%xmm2
subss  %xmm0,%xmm3
movss  %xmm3,0x18(%rsp)
movsd  0xd9c(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  %xmm0,0x48(%rsp)
movss  %xmm1,0x10(%rsp)
subss  %xmm1,%xmm4
movss  %xmm4,0x14(%rsp)
xorpd  %xmm0,%xmm0
movss  %xmm0,0xc(%rsp)
movss  0xdb0(%rip),%xmm0
lea    0xddb(%rip),%r15
mov    $0x6b,%r14d
mulsd  0xd73(%rip),%xmm2
movsd  %xmm2,0x40(%rsp)
movss  0xd94(%rip),%xmm8
xorps  %xmm1,%xmm1
jmp    1325 <main+0x1e5>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movaps 0x70(%rsp),%xmm1
movaps %xmm1,0x30(%rsp)
movss  (%rsp),%xmm2
addss  %xmm1,%xmm2
movss  %xmm2,(%rsp)
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,0xc(%rsp)
lea    0xd77(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    $0x13617,%edi
call   1060 <usleep@plt>
movss  (%rsp),%xmm1
movaps 0x30(%rsp),%xmm0
test   %eax,%eax
movss  0xd31(%rip),%xmm8
jne    118d <main+0x4d>
movaps %xmm0,0x70(%rsp)
movss  0xd1a(%rip),%xmm0
movss  %xmm1,(%rsp)
subss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,0x50(%rsp)
xor    %r13d,%r13d
xor    %ebp,%ebp
jmp    13ed <main+0x2ad>
nop
addsd  %xmm5,%xmm6
xorps  %xmm0,%xmm0
cvtsd2ss %xmm6,%xmm0
movss  %xmm0,0x30(%rsp)
mulsd  0xcbf(%rip),%xmm3
mulsd  0xc9f(%rip),%xmm1
addsd  %xmm3,%xmm1
movsd  %xmm1,0x58(%rsp)
mulss  %xmm0,%xmm0
movaps %xmm8,%xmm1
subss  %xmm0,%xmm1
cvttss2si %xmm1,%edi
call   1050 <sqrt@plt>
movsd  0x58(%rsp),%xmm1
divsd  %xmm0,%xmm1
addsd  0x50(%rsp),%xmm1
cvttsd2si %xmm1,%eax
movss  0x30(%rsp),%xmm0
addss  %xmm0,%xmm0
addss  0xc9e(%rip),%xmm0
cvttss2si %xmm0,%ecx
add    %eax,%ecx
test   $0x1,%cl
mov    $0x65,%esi
cmove  %r14d,%esi
mov    %r15,%rdi
xor    %eax,%eax
call   1030 <printf@plt>
add    $0x1,%ebp
mov    %ebp,%eax
cltd
idiv   %r12d
mov    %edx,%ebp
cmp    $0x1,%edx
adc    $0x0,%r13d
movss  0xc63(%rip),%xmm8
xorps  %xmm2,%xmm2
cvtsi2ss %r13d,%xmm2
movss  0x8(%rsp),%xmm0
subss  %xmm2,%xmm0
addss  %xmm0,%xmm0
xorps  %xmm9,%xmm9
cvtsi2ss %ebp,%xmm9
movss  0x10(%rsp),%xmm3
divss  %xmm3,%xmm0
movss  0x4(%rsp),%xmm4
subss  %xmm9,%xmm4
divss  %xmm3,%xmm4
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
xorps  %xmm3,%xmm3
cvtss2sd %xmm0,%xmm3
movaps %xmm3,%xmm5
mulsd  0xbd2(%rip),%xmm5
movaps %xmm1,%xmm6
mulsd  0xbcf(%rip),%xmm6
cmp    %ebx,%r13d
jge    1500 <main+0x3c0>
mulss  %xmm4,%xmm4
mulss  %xmm0,%xmm0
movaps %xmm8,%xmm7
subss  %xmm0,%xmm7
ucomiss %xmm7,%xmm4
jbe    1350 <main+0x210>
ucomiss 0x24(%rsp),%xmm2
jbe    14a0 <main+0x360>
mov    %ebx,%eax
sub    %r13d,%eax
mov    %r12d,%ecx
sub    %ebp,%ecx
cmp    %ecx,%eax
mov    $0x64,%esi
mov    $0x28,%ecx
cmovg  %ecx,%esi
cmp    %eax,%ebp
cmovl  %ecx,%esi
jmp    13c8 <main+0x288>
cs nopw 0x0(%rax,%rax,1)
nop
movss  0x20(%rsp),%xmm2
ucomiss %xmm9,%xmm2
mov    $0x28,%esi
ja     13c8 <main+0x288>
ucomiss 0x1c(%rsp),%xmm9
ja     13c8 <main+0x288>
movapd %xmm1,%xmm2
addsd  0xb63(%rip),%xmm2
mulsd  %xmm1,%xmm2
addsd  0xb5f(%rip),%xmm2
cvtss2sd %xmm0,%xmm0
addsd  %xmm2,%xmm0
movsd  0xb57(%rip),%xmm1
ucomisd %xmm0,%xmm1
mov    $0x2f,%esi
mov    $0x64,%eax
cmova  %eax,%esi
jmp    13c8 <main+0x288>
nop
movss  0x8(%rsp),%xmm0
movss  0xc(%rsp),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,0x8(%rsp)
ucomiss 0x18(%rsp),%xmm0
movsd  0x48(%rsp),%xmm0
ja     1530 <main+0x3f0>
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
addsd  0x40(%rsp),%xmm0
movaps 0x60(%rsp),%xmm2
movss  0x4(%rsp),%xmm3
addss  %xmm2,%xmm3
movss  0x10(%rsp),%xmm1
ucomiss %xmm3,%xmm1
seta   %al
movss  %xmm3,0x4(%rsp)
ucomiss 0x14(%rsp),%xmm3
seta   %cl
or     %al,%cl
je     12d0 <main+0x190>
movaps 0x70(%rsp),%xmm1
movaps %xmm1,%xmm4
movaps 0xaf0(%rip),%xmm3
xorps  %xmm3,%xmm4
movaps %xmm4,0x30(%rsp)
xorps  %xmm3,%xmm2
movaps %xmm2,0x60(%rsp)
jmp    12da <main+0x19a>

LLVM IR (-O0):
@TIOCGWINSZ = global i32 0
@.str = [10 x i8] c"\1B[H\1B[?25l\00"
@.str.1 = [7 x i8] c"\1B[%dm \00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [4 x i16]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
%16 = alloca float
%17 = alloca float
store i32 0, i32* %1
%18 = load i32, i32* @TIOCGWINSZ
%19 = bitcast [4 x i16]* %2 to i16**
%20 = call i32 @ioctl(i32 0, i32 %18, i16** %19)
%21 = getelementptr inbounds [4 x i16], [4 x i16]* %2, i64 0, i64 0
%22 = load i16, i16* %21
%23 = sext i16 %22 to i32
store i32 %23, i32* %5
%24 = getelementptr inbounds [4 x i16], [4 x i16]* %2, i64 0, i64 1
%25 = load i16, i16* %24
%26 = sext i16 %25 to i32
store i32 %26, i32* %6
%27 = load i32, i32* %5
%28 = sdiv i32 %27, 2
%29 = load i32, i32* %5
%30 = srem i32 %29, 2
%31 = add nsw i32 %28, %30
%32 = add nsw i32 %31, 1
%33 = sitofp i32 %32 to float
store float %33, float* %10
%34 = load i32, i32* %5
%35 = sdiv i32 %34, 5
%36 = sub nsw i32 %35, 1
%37 = sitofp i32 %36 to float
store float %37, float* %11
store float 0.000000e+00, float* %12
%38 = load i32, i32* %6
%39 = sdiv i32 %38, 2
%40 = sitofp i32 %39 to float
store float %40, float* %13
%41 = load i32, i32* %5
%42 = sdiv i32 %41, 4
%43 = sitofp i32 %42 to float
store float %43, float* %14
%44 = load i32, i32* %6
%45 = sitofp i32 %44 to double
%46 = fmul double 1.000000e-02, %45
%47 = fptrunc double %46 to float
store float %47, float* %15
store float 0.000000e+00, float* %16
store float 0x3FB99999A0000000, float* %17
br label %48
48: ; preds = %229, %0
%49 = call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%50 = call i32 @usleep(i32 79383)
%51 = icmp ne i32 %50, 0
%52 = xor i1 %51, true
br i1 %52, label %53, label %231
53: ; preds = %48
store i32 0, i32* %4
store i32 0, i32* %3
br label %54
54: ; preds = %175, %53
%55 = load float, float* %14
%56 = load i32, i32* %4
%57 = sitofp i32 %56 to float
%58 = fsub float %55, %57
%59 = fmul float 2.000000e+00, %58
%60 = load float, float* %10
%61 = fdiv float %59, %60
store float %61, float* %9
%62 = load float, float* %13
%63 = load i32, i32* %3
%64 = sitofp i32 %63 to float
%65 = fsub float %62, %64
%66 = load float, float* %10
%67 = fdiv float %65, %66
store float %67, float* %8
%68 = fpext float %67 to double
%69 = load float, float* %9
%70 = fpext float %69 to double
%71 = fmul double 0x3FEE872B020C49BA, %70
%72 = call double @llvm.fmuladd.f64(double -3.000000e-01, double %68, double %71)
%73 = fptrunc double %72 to float
store float %73, float* %7
%74 = load i32, i32* %4
%75 = load i32, i32* %5
%76 = icmp slt i32 %74, %75
br i1 %76, label %77, label %184
77: ; preds = %54
%78 = load float, float* %8
%79 = load float, float* %8
%80 = fmul float %78, %79
%81 = load float, float* %9
%82 = load float, float* %9
%83 = fneg float %81
%84 = call float @llvm.fmuladd.f32(float %83, float %82, float 1.000000e+00)
%85 = fcmp ogt float %80, %84
br i1 %85, label %86, label %145
86: ; preds = %77
%87 = load i32, i32* %4
%88 = sitofp i32 %87 to float
%89 = load i32, i32* %5
%90 = sitofp i32 %89 to float
%91 = load float, float* %11
%92 = fsub float %90, %91
%93 = fcmp ogt float %88, %92
br i1 %93, label %94, label %112
94: ; preds = %86
%95 = load i32, i32* %3
%96 = load i32, i32* %5
%97 = load i32, i32* %4
%98 = sub nsw i32 %96, %97
%99 = icmp slt i32 %95, %98
br i1 %99, label %108, label %100
100: ; preds = %94
%101 = load i32, i32* %5
%102 = load i32, i32* %4
%103 = sub nsw i32 %101, %102
%104 = load i32, i32* %6
%105 = load i32, i32* %3
%106 = sub nsw i32 %104, %105
%107 = icmp sgt i32 %103, %106
br label %108
108: ; preds = %100, %94
%109 = phi i1 [ true, %94 ], [ %107, %100 ]
%110 = zext i1 %109 to i64
%111 = select i1 %109, i32 40, i32 100
br label %143
112: ; preds = %86
%113 = load i32, i32* %3
%114 = sitofp i32 %113 to float
%115 = load float, float* %11
%116 = fcmp olt float %114, %115
br i1 %116, label %125, label %117
117: ; preds = %112
%118 = load i32, i32* %3
%119 = sitofp i32 %118 to float
%120 = load i32, i32* %6
%121 = sitofp i32 %120 to float
%122 = load float, float* %11
%123 = fsub float %121, %122
%124 = fcmp ogt float %119, %123
br i1 %124, label %125, label %126
125: ; preds = %117, %112
br label %141
126: ; preds = %117
%127 = load float, float* %8
%128 = fpext float %127 to double
%129 = load float, float* %8
%130 = fpext float %129 to double
%131 = fadd double %130, 6.000000e-01
%132 = call double @llvm.fmuladd.f64(double %128, double %131, double 0x3FB70A3D70A3D70A)
%133 = load float, float* %9
%134 = load float, float* %9
%135 = fmul float %133, %134
%136 = fpext float %135 to double
%137 = fadd double %132, %136
%138 = fcmp olt double %137, 1.000000e+00
%139 = zext i1 %138 to i64
%140 = select i1 %138, i32 100, i32 47
br label %141
141: ; preds = %126, %125
%142 = phi i32 [ 40, %125 ], [ %140, %126 ]
br label %143
143: ; preds = %141, %108
%144 = phi i32 [ %111, %108 ], [ %142, %141 ]
br label %172
145: ; preds = %77
%146 = load float, float* %12
%147 = fsub float 9.000000e+00, %146
%148 = fpext float %147 to double
%149 = load float, float* %8
%150 = fpext float %149 to double
%151 = load float, float* %9
%152 = fpext float %151 to double
%153 = fmul double 3.000000e-01, %152
%154 = call double @llvm.fmuladd.f64(double 0x3FEE872B020C49BA, double %150, double %153)
%155 = load float, float* %7
%156 = load float, float* %7
%157 = fneg float %155
%158 = call float @llvm.fmuladd.f32(float %157, float %156, float 1.000000e+00)
%159 = fptosi float %158 to i32
%160 = call double @sqrt(i32 %159)
%161 = fdiv double %154, %160
%162 = fadd double %148, %161
%163 = fptosi double %162 to i32
%164 = load float, float* %7
%165 = call float @llvm.fmuladd.f32(float %164, float 2.000000e+00, float 2.000000e+00)
%166 = fptosi float %165 to i32
%167 = add nsw i32 %163, %166
%168 = srem i32 %167, 2
%169 = icmp eq i32 %168, 0
%170 = zext i1 %169 to i64
%171 = select i1 %169, i32 107, i32 101
br label %172
172: ; preds = %145, %143
%173 = phi i32 [ %144, %143 ], [ %171, %145 ]
%174 = call i64 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 %173)
br label %175
175: ; preds = %172
%176 = load i32, i32* %3
%177 = add nsw i32 %176, 1
store i32 %177, i32* %3
%178 = load i32, i32* %6
%179 = srem i32 %177, %178
store i32 %179, i32* %3
%180 = icmp eq i32 %179, 0
%181 = zext i1 %180 to i32
%182 = load i32, i32* %4
%183 = add nsw i32 %182, %181
store i32 %183, i32* %4
br label %54
184: ; preds = %54
%185 = load float, float* %17
%186 = load float, float* %12
%187 = fadd float %186, %185
store float %187, float* %12
%188 = load float, float* %16
%189 = load float, float* %14
%190 = fadd float %189, %188
store float %190, float* %14
%191 = load float, float* %14
%192 = load i32, i32* %5
%193 = sitofp i32 %192 to float
%194 = load float, float* %11
%195 = call float @llvm.fmuladd.f32(float -2.000000e+00, float %194, float %193)
%196 = fcmp ogt float %191, %195
br i1 %196, label %197, label %201
197: ; preds = %184
%198 = load i32, i32* %5
%199 = sitofp i32 %198 to double
%200 = fmul double -4.000000e-02, %199
br label %207
201: ; preds = %184
%202 = load float, float* %16
%203 = fpext float %202 to double
%204 = load i32, i32* %5
%205 = sitofp i32 %204 to double
%206 = call double @llvm.fmuladd.f64(double 2.000000e-03, double %205, double %203)
br label %207
207: ; preds = %201, %197
%208 = phi double [ %200, %197 ], [ %206, %201 ]
%209 = fptrunc double %208 to float
store float %209, float* %16
%210 = load float, float* %15
%211 = load float, float* %13
%212 = fadd float %211, %210
store float %212, float* %13
%213 = load float, float* %10
%214 = fcmp olt float %212, %213
br i1 %214, label %222, label %215
215: ; preds = %207
%216 = load float, float* %13
%217 = load i32, i32* %6
%218 = sitofp i32 %217 to float
%219 = load float, float* %10
%220 = fsub float %218, %219
%221 = fcmp ogt float %216, %220
br i1 %221, label %222, label %227
222: ; preds = %215, %207
%223 = load float, float* %17
%224 = fneg float %223
store float %224, float* %17
%225 = load float, float* %15
%226 = fneg float %225
br label %229
227: ; preds = %215
%228 = load float, float* %15
br label %229
229: ; preds = %227, %222
%230 = phi float [ %226, %222 ], [ %228, %227 ]
store float %230, float* %15
br label %48
231: ; preds = %48
%232 = load i32, i32* %1
ret i32 %232
}

LLVM IR (-O2):
@TIOCGWINSZ = global i32 0
@.str = [10 x i8] c"\1B[H\1B[?25l\00"
@.str.1 = [7 x i8] c"\1B[%dm \00"
define i32 @main() {
%1 = alloca i16*
%2 = bitcast i16** %1 to [4 x i16]*
%3 = bitcast i16** %1 to i8*
%4 = load i32, i32* @TIOCGWINSZ
%5 = call i32 @ioctl(i32 0, i32 %4, i16** %1)
%6 = bitcast i16** %1 to i16*
%7 = load i16, i16* %6
%8 = sext i16 %7 to i32
%9 = getelementptr inbounds [4 x i16], [4 x i16]* %2, i64 0, i64 1
%10 = load i16, i16* %9
%11 = sext i16 %10 to i32
%12 = sdiv i16 %7, 2
%13 = srem i16 %7, 2
%14 = add nsw i16 %12, %13
%15 = sext i16 %14 to i32
%16 = add nsw i32 %15, 1
%17 = sitofp i32 %16 to float
%18 = sdiv i16 %7, 5
%19 = add nsw i16 %18, -1
%20 = sitofp i16 %19 to float
%21 = call i64 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%22 = call i32 @usleep(i32 79383)
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %134
24: ; preds = %0
%25 = sitofp i16 %10 to double
%26 = fmul double %25, 1.000000e-02
%27 = fptrunc double %26 to float
%28 = sdiv i16 %7, 4
%29 = sitofp i16 %28 to float
%30 = sdiv i16 %10, 2
%31 = sitofp i16 %30 to float
%32 = sitofp i16 %7 to float
%33 = fsub float %32, %20
%34 = sitofp i16 %10 to float
%35 = fsub float %34, %20
%36 = call float @llvm.fmuladd.f32(float %20, float -2.000000e+00, float %32)
%37 = sitofp i16 %7 to double
%38 = fmul double %37, -4.000000e-02
%39 = fsub float %34, %17
br label %40
40: ; preds = %24, %115
%41 = phi float [ 0x3FB99999A0000000, %24 ], [ %129, %115 ]
%42 = phi float [ 0.000000e+00, %24 ], [ %122, %115 ]
%43 = phi float [ %27, %24 ], [ %130, %115 ]
%44 = phi float [ %29, %24 ], [ %117, %115 ]
%45 = phi float [ %31, %24 ], [ %123, %115 ]
%46 = phi float [ 0.000000e+00, %24 ], [ %116, %115 ]
%47 = fsub float 9.000000e+00, %46
%48 = fpext float %47 to double
br label %49
49: ; preds = %40, %107
%50 = phi i32 [ %114, %107 ], [ 0, %40 ]
%51 = phi i32 [ %111, %107 ], [ 0, %40 ]
%52 = sitofp i32 %50 to float
%53 = fsub float %44, %52
%54 = fmul float %53, 2.000000e+00
%55 = fdiv float %54, %17
%56 = sitofp i32 %51 to float
%57 = fsub float %45, %56
%58 = fdiv float %57, %17
%59 = fpext float %58 to double
%60 = fpext float %55 to double
%61 = fmul double %60, 0x3FEE872B020C49BA
%62 = call double @llvm.fmuladd.f64(double %59, double -3.000000e-01, double %61)
%63 = fptrunc double %62 to float
%64 = icmp slt i32 %50, %8
br i1 %64, label %65, label %115
65: ; preds = %49
%66 = fmul float %58, %58
%67 = fneg float %55
%68 = call float @llvm.fmuladd.f32(float %67, float %55, float 1.000000e+00)
%69 = fcmp ogt float %66, %68
br i1 %69, label %70, label %91
70: ; preds = %65
%71 = fcmp olt float %33, %52
br i1 %71, label %72, label %79
72: ; preds = %70
%73 = sub nsw i32 %8, %50
%74 = icmp slt i32 %51, %73
%75 = sub nsw i32 %11, %51
%76 = icmp sgt i32 %73, %75
%77 = select i1 %74, i1 true, i1 %76
%78 = select i1 %77, i32 40, i32 100
br label %107
79: ; preds = %70
%80 = fcmp olt float %56, %20
%81 = fcmp olt float %35, %56
%82 = select i1 %80, i1 true, i1 %81
br i1 %82, label %107, label %83
83: ; preds = %79
%84 = fadd double %59, 6.000000e-01
%85 = call double @llvm.fmuladd.f64(double %59, double %84, double 0x3FB70A3D70A3D70A)
%86 = fmul float %55, %55
%87 = fpext float %86 to double
%88 = fadd double %85, %87
%89 = fcmp olt double %88, 1.000000e+00
%90 = select i1 %89, i32 100, i32 47
br label %107
91: ; preds = %65
%92 = fmul double %60, 3.000000e-01
%93 = call double @llvm.fmuladd.f64(double %59, double 0x3FEE872B020C49BA, double %92)
%94 = fneg float %63
%95 = call float @llvm.fmuladd.f32(float %94, float %63, float 1.000000e+00)
%96 = fptosi float %95 to i32
%97 = call double @sqrt(i32 %96)
%98 = fdiv double %93, %97
%99 = fadd double %98, %48
%100 = fptosi double %99 to i32
%101 = call float @llvm.fmuladd.f32(float %63, float 2.000000e+00, float 2.000000e+00)
%102 = fptosi float %101 to i32
%103 = add nsw i32 %100, %102
%104 = and i32 %103, 1
%105 = icmp eq i32 %104, 0
%106 = select i1 %105, i32 107, i32 101
br label %107
107: ; preds = %72, %79, %83, %91
%108 = phi i32 [ %106, %91 ], [ %78, %72 ], [ %90, %83 ], [ 40, %79 ]
%109 = call i64 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0), i32 %108)
%110 = add nsw i32 %51, 1
%111 = srem i32 %110, %11
%112 = icmp eq i32 %111, 0
%113 = zext i1 %112 to i32
%114 = add nuw nsw i32 %50, %113
br label %49
115: ; preds = %49
%116 = fadd float %46, %41
%117 = fadd float %44, %42
%118 = fcmp ogt float %117, %36
%119 = fpext float %42 to double
%120 = call double @llvm.fmuladd.f64(double %37, double 2.000000e-03, double %119)
%121 = select i1 %118, double %38, double %120
%122 = fptrunc double %121 to float
%123 = fadd float %45, %43
%124 = fcmp olt float %123, %17
%125 = fcmp ogt float %123, %39
%126 = select i1 %124, i1 true, i1 %125
%127 = fneg float %41
%128 = fneg float %43
%129 = select i1 %126, float %127, float %41
%130 = select i1 %126, float %128, float %43
%131 = call i64 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%132 = call i32 @usleep(i32 79383)
%133 = icmp eq i32 %132, 0
br i1 %133, label %40, label %134
134: ; preds = %115, %0
ret i32 0
}