#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*/ draw_circle(float *, int, int, double, double, int,
                               int /*<<< orphan*/, int, double);
int /*<<< orphan*/ draw_gradient(float *, int, int, int, int, int, int, double,
                                 double, int);
int /*<<< orphan*/ draw_rectangle(float *, int, int, double, int, int, int,
                                  float);
void ortikon(float *sl, int w, int h) {
  int i;
  float s1, s2;
  draw_rectangle(sl, w, h, 0, 0, w, h, 0.6);
  draw_circle(sl, w, h, 1.0, 0.3 * w, h / 8, 0, 10, 0.95);
  draw_circle(sl, w, h, 1.0, 0.6 * w, h / 8, 0, 20, 0.95);
  draw_circle(sl, w, h, 1.0, 0.6 * w + 40, h / 8, 0, 20, 0.05);
  draw_gradient(sl, w, h, 0, h / 4, 0.3 * w, 3 * h / 4, 0.84, 0.094, 1);
  draw_rectangle(sl, w, h, 0.13 * w, h / 4, w / 20, 3 * h / 4, 0.97);
  draw_gradient(sl, w, h, 17 * w / 40, h / 4, w / 20, 3 * h / 4, 0.97, 0.6, 1);
  s1 = 0.9;
  s2 = 0.1;
  for (i = h / 4; i < h; i = i + h / 4.5) {
    draw_rectangle(sl, w, h, 0.6 * w, i, h / 9, h / 9, s2);
    draw_rectangle(sl, w, h, 0.6 * w + h / 9, i, h / 9, h / 9, s1);
    draw_rectangle(sl, w, h, 0.6 * w + 2 * h / 9, i, h / 9, h / 9, s2);
    draw_rectangle(sl, w, h, 0.6 * w, i + h / 9, h / 9, h / 9, s1);
    draw_rectangle(sl, w, h, 0.6 * w + h / 9, i + h / 9, h / 9, h / 9, s2);
    draw_rectangle(sl, w, h, 0.6 * w + 2 * h / 9, i + h / 9, h / 9, h / 9, s1);
  }
}


x86 assembly (clang, -O0):
<ortikon>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc(%rbp),%r8d
mov    -0x10(%rbp),%r9d
xorps  %xmm0,%xmm0
xor    %ecx,%ecx
movss  0xeab(%rip),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x34(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  0xeb8(%rip),%xmm1
mulsd  %xmm0,%xmm1
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x34(%rbp),%edx
mov    %eax,%ecx
movsd  0xea4(%rip),%xmm0
xor    %r8d,%r8d
mov    $0xa,%r9d
movsd  0xeab(%rip),%xmm2
call   1040 <draw_circle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  0xe4c(%rip),%xmm1
mulsd  %xmm0,%xmm1
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x30(%rbp),%edx
mov    %eax,%ecx
movsd  0xe58(%rip),%xmm0
xor    %r8d,%r8d
mov    $0x14,%r9d
movsd  0xe5f(%rip),%xmm2
call   1040 <draw_circle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xe00(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0xe2c(%rip),%xmm0
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x2c(%rbp),%edx
mov    %eax,%ecx
movsd  0xe00(%rip),%xmm0
xor    %r8d,%r8d
mov    $0x14,%r9d
movsd  0xdf7(%rip),%xmm2
call   1040 <draw_circle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%r8d
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xdba(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%r9d
imul   $0x3,-0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    -0x28(%rbp),%edx
xor    %ecx,%ecx
movsd  0xd88(%rip),%xmm0
movsd  0xd88(%rip),%xmm1
mov    %eax,(%rsp)
movl   $0x1,0x8(%rsp)
call   1050 <draw_gradient@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x24(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xd4e(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xc(%rbp),%eax
mov    $0x14,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
imul   $0x3,-0x10(%rbp),%eax
mov    $0x4,%r9d
cltd
idiv   %r9d
mov    -0x24(%rbp),%edx
mov    %eax,%r9d
movss  0xcf9(%rip),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0x11,-0xc(%rbp),%eax
mov    $0x28,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x4,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0xc(%rbp),%eax
mov    $0x14,%r9d
cltd
idiv   %r9d
mov    %eax,%r9d
imul   $0x3,-0x10(%rbp),%eax
mov    $0x4,%r10d
cltd
idiv   %r10d
mov    -0x20(%rbp),%edx
movsd  0xca8(%rip),%xmm0
movsd  0xca8(%rip),%xmm1
mov    %eax,(%rsp)
movl   $0x1,0x8(%rsp)
call   1050 <draw_gradient@plt>
movss  0xc7c(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xc6b(%rip),%xmm0
movss  %xmm0,-0x1c(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    162d <ortikon+0x4fd>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x4c(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xc4a(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0x10(%rbp),%eax
mov    $0x9,%r9d
cltd
idiv   %r9d
mov    -0x4c(%rbp),%edx
mov    %eax,%r9d
movss  -0x1c(%rbp),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x48(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
mov    -0x10(%rbp),%eax
mov    $0x9,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
movsd  0xbed(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0x10(%rbp),%eax
mov    $0x9,%r9d
cltd
idiv   %r9d
mov    -0x48(%rbp),%edx
mov    %eax,%r9d
movss  -0x18(%rbp),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x44(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
mov    -0x10(%rbp),%eax
shl    $0x1,%eax
mov    $0x9,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
movsd  0xb89(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0x10(%rbp),%eax
mov    $0x9,%r9d
cltd
idiv   %r9d
mov    -0x44(%rbp),%edx
mov    %eax,%r9d
movss  -0x1c(%rbp),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x40(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xb37(%rip),%xmm0
mulsd  %xmm1,%xmm0
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
add    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0x10(%rbp),%eax
mov    $0x9,%r9d
cltd
idiv   %r9d
mov    -0x40(%rbp),%edx
mov    %eax,%r9d
movss  -0x18(%rbp),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x3c(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
mov    -0x10(%rbp),%eax
mov    $0x9,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
movsd  0xacb(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
add    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0x10(%rbp),%eax
mov    $0x9,%r9d
cltd
idiv   %r9d
mov    -0x3c(%rbp),%edx
mov    %eax,%r9d
movss  -0x1c(%rbp),%xmm1
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0x38(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
mov    -0x10(%rbp),%eax
shl    $0x1,%eax
mov    $0x9,%ecx
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm1
movsd  0xa58(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x14(%rbp),%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
add    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x9,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
mov    -0x10(%rbp),%eax
mov    $0x9,%r9d
cltd
idiv   %r9d
mov    -0x38(%rbp),%edx
mov    %eax,%r9d
movss  -0x18(%rbp),%xmm1
call   1030 <draw_rectangle@plt>
cvtsi2sdl -0x14(%rbp),%xmm0
cvtsi2sdl -0x10(%rbp),%xmm1
movsd  0xa47(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x14(%rbp)
jmp    13a8 <ortikon+0x278>
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ortikon>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %edx,%r12d
mov    %esi,%r15d
mov    %rdi,%r14
movss  0xeb1(%rip),%xmm1
xorps  %xmm0,%xmm0
xor    %ecx,%ecx
mov    %esi,%r8d
mov    %edx,%r9d
call   1030 <draw_rectangle@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xe9b(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
lea    0x7(%r12),%ebx
test   %r12d,%r12d
cmovns %r12d,%ebx
lea    0x3(%r12),%r13d
movapd %xmm0,%xmm2
mulsd  0xe7c(%rip),%xmm2
movsd  %xmm2,0x20(%rsp)
movsd  0xe76(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,0x8(%rsp)
cmovns %r12d,%r13d
sar    $0x3,%ebx
movsd  0xe65(%rip),%xmm0
movsd  0xe65(%rip),%xmm2
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0xa,%r9d
call   1040 <draw_circle@plt>
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0xe33(%rip),%xmm0
movsd  0x20(%rsp),%xmm1
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0x14,%r9d
movsd  0xe22(%rip),%xmm2
call   1040 <draw_circle@plt>
movsd  0xe1d(%rip),%xmm2
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0xdfc(%rip),%xmm0
movsd  0x8(%rsp),%xmm1
mov    %ebx,%ecx
xor    %r8d,%r8d
mov    $0x14,%r9d
call   1040 <draw_circle@plt>
sar    $0x2,%r13d
cvttsd2si 0x18(%rsp),%r9d
lea    (%r12,%r12,2),%eax
lea    (%r12,%r12,2),%ebp
add    $0x3,%ebp
test   %eax,%eax
cmovns %eax,%ebp
sar    $0x2,%ebp
movsd  0xdd8(%rip),%xmm0
movsd  0xdd8(%rip),%xmm1
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
xor    %ecx,%ecx
mov    %r13d,%r8d
push   $0x1
push   %rbp
call   1050 <draw_gradient@plt>
add    $0x10,%rsp
movsd  0xdbe(%rip),%xmm0
mulsd  0x10(%rsp),%xmm0
movslq %r15d,%rax
imul   $0x66666667,%rax,%rbx
mov    %rax,%rsi
mov    %rax,0x8(%rsp)
mov    %rbx,%rax
shr    $0x3f,%rax
sar    $0x23,%rbx
add    %eax,%ebx
movss  0xd45(%rip),%xmm1
mov    %r14,%rdi
mov    %r12d,%edx
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    %ebp,%r9d
call   1030 <draw_rectangle@plt>
mov    0x8(%rsp),%rsi
mov    %esi,%eax
shl    $0x4,%eax
add    %r15d,%eax
cltq
imul   $0x66666667,%rax,%rcx
mov    %rcx,%rax
shr    $0x3f,%rax
sar    $0x24,%rcx
add    %eax,%ecx
movsd  0xd5a(%rip),%xmm0
mov    %r14,%rdi
mov    %r12d,%edx
mov    %r13d,%r8d
mov    %ebx,%r9d
movsd  0xd06(%rip),%xmm1
push   $0x1
push   %rbp
call   1050 <draw_gradient@plt>
add    $0x10,%rsp
cmp    %r12d,%r13d
jge    149b <ortikon+0x36b>
movslq %r12d,%rax
imul   $0x38e38e39,%rax,%rbx
mov    %rbx,%rax
shr    $0x3f,%rax
sar    $0x21,%rbx
add    %eax,%ebx
xorps  %xmm1,%xmm1
cvtsi2sd %ebx,%xmm1
movsd  0x10(%rsp),%xmm0
mulsd  0xcc5(%rip),%xmm0
lea    (%r12,%r12,1),%eax
cltq
imul   $0x38e38e39,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x21,%rax
add    %ecx,%eax
cvtsi2sd %eax,%xmm2
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
addsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %r12d,%xmm0
divsd  0xccb(%rip),%xmm0
movsd  %xmm0,0x18(%rsp)
nopl   0x0(%rax,%rax,1)
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0x20(%rsp),%xmm0
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    %ebx,%r9d
movss  0xc48(%rip),%xmm1
call   1030 <draw_rectangle@plt>
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0x10(%rsp),%xmm0
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    %ebx,%r9d
movss  0xc27(%rip),%xmm1
call   1030 <draw_rectangle@plt>
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0x8(%rsp),%xmm0
mov    %r13d,%ecx
mov    %ebx,%r8d
mov    %ebx,%r9d
movss  0xbfe(%rip),%xmm1
call   1030 <draw_rectangle@plt>
lea    (%rbx,%r13,1),%ebp
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0x20(%rsp),%xmm0
mov    %ebp,%ecx
mov    %ebx,%r8d
mov    %ebx,%r9d
movss  0xbda(%rip),%xmm1
call   1030 <draw_rectangle@plt>
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0x10(%rsp),%xmm0
mov    %ebp,%ecx
mov    %ebx,%r8d
mov    %ebx,%r9d
movss  0xbb2(%rip),%xmm1
call   1030 <draw_rectangle@plt>
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
movsd  0x8(%rsp),%xmm0
mov    %ebp,%ecx
mov    %ebx,%r8d
mov    %ebx,%r9d
movss  0xb92(%rip),%xmm1
call   1030 <draw_rectangle@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %r13d,%xmm0
addsd  0x18(%rsp),%xmm0
cvttsd2si %xmm0,%r13d
cmp    %r12d,%r13d
jl     13a0 <ortikon+0x270>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @ortikon(float* %0, i32 %1, i32 %2) {
%4 = alloca float*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca float
%9 = alloca float
store float* %0, float** %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%10 = load float*, float** %4
%11 = load i32, i32* %5
%12 = load i32, i32* %6
%13 = load i32, i32* %5
%14 = load i32, i32* %6
%15 = call i32 @draw_rectangle(float* %10, i32 %11, i32 %12, double 0.000000e+00, i32 0, i32 %13, i32 %14, float 0x3FE3333340000000)
%16 = load float*, float** %4
%17 = load i32, i32* %5
%18 = load i32, i32* %6
%19 = load i32, i32* %5
%20 = sitofp i32 %19 to double
%21 = fmul double 3.000000e-01, %20
%22 = load i32, i32* %6
%23 = sdiv i32 %22, 8
%24 = call i32 @draw_circle(float* %16, i32 %17, i32 %18, double 1.000000e+00, double %21, i32 %23, i32 0, i32 10, double 0x3FEE666666666666)
%25 = load float*, float** %4
%26 = load i32, i32* %5
%27 = load i32, i32* %6
%28 = load i32, i32* %5
%29 = sitofp i32 %28 to double
%30 = fmul double 6.000000e-01, %29
%31 = load i32, i32* %6
%32 = sdiv i32 %31, 8
%33 = call i32 @draw_circle(float* %25, i32 %26, i32 %27, double 1.000000e+00, double %30, i32 %32, i32 0, i32 20, double 0x3FEE666666666666)
%34 = load float*, float** %4
%35 = load i32, i32* %5
%36 = load i32, i32* %6
%37 = load i32, i32* %5
%38 = sitofp i32 %37 to double
%39 = call double @llvm.fmuladd.f64(double 6.000000e-01, double %38, double 4.000000e+01)
%40 = load i32, i32* %6
%41 = sdiv i32 %40, 8
%42 = call i32 @draw_circle(float* %34, i32 %35, i32 %36, double 1.000000e+00, double %39, i32 %41, i32 0, i32 20, double 5.000000e-02)
%43 = load float*, float** %4
%44 = load i32, i32* %5
%45 = load i32, i32* %6
%46 = load i32, i32* %6
%47 = sdiv i32 %46, 4
%48 = load i32, i32* %5
%49 = sitofp i32 %48 to double
%50 = fmul double 3.000000e-01, %49
%51 = fptosi double %50 to i32
%52 = load i32, i32* %6
%53 = mul nsw i32 3, %52
%54 = sdiv i32 %53, 4
%55 = call i32 @draw_gradient(float* %43, i32 %44, i32 %45, i32 0, i32 %47, i32 %51, i32 %54, double 8.400000e-01, double 9.400000e-02, i32 1)
%56 = load float*, float** %4
%57 = load i32, i32* %5
%58 = load i32, i32* %6
%59 = load i32, i32* %5
%60 = sitofp i32 %59 to double
%61 = fmul double 1.300000e-01, %60
%62 = load i32, i32* %6
%63 = sdiv i32 %62, 4
%64 = load i32, i32* %5
%65 = sdiv i32 %64, 20
%66 = load i32, i32* %6
%67 = mul nsw i32 3, %66
%68 = sdiv i32 %67, 4
%69 = call i32 @draw_rectangle(float* %56, i32 %57, i32 %58, double %61, i32 %63, i32 %65, i32 %68, float 0x3FEF0A3D80000000)
%70 = load float*, float** %4
%71 = load i32, i32* %5
%72 = load i32, i32* %6
%73 = load i32, i32* %5
%74 = mul nsw i32 17, %73
%75 = sdiv i32 %74, 40
%76 = load i32, i32* %6
%77 = sdiv i32 %76, 4
%78 = load i32, i32* %5
%79 = sdiv i32 %78, 20
%80 = load i32, i32* %6
%81 = mul nsw i32 3, %80
%82 = sdiv i32 %81, 4
%83 = call i32 @draw_gradient(float* %70, i32 %71, i32 %72, i32 %75, i32 %77, i32 %79, i32 %82, double 0x3FEF0A3D70A3D70A, double 6.000000e-01, i32 1)
store float 0x3FECCCCCC0000000, float* %8
store float 0x3FB99999A0000000, float* %9
%84 = load i32, i32* %6
%85 = sdiv i32 %84, 4
store i32 %85, i32* %7
br label %86
86: ; preds = %192, %3
%87 = load i32, i32* %7
%88 = load i32, i32* %6
%89 = icmp slt i32 %87, %88
br i1 %89, label %90, label %200
90: ; preds = %86
%91 = load float*, float** %4
%92 = load i32, i32* %5
%93 = load i32, i32* %6
%94 = load i32, i32* %5
%95 = sitofp i32 %94 to double
%96 = fmul double 6.000000e-01, %95
%97 = load i32, i32* %7
%98 = load i32, i32* %6
%99 = sdiv i32 %98, 9
%100 = load i32, i32* %6
%101 = sdiv i32 %100, 9
%102 = load float, float* %9
%103 = call i32 @draw_rectangle(float* %91, i32 %92, i32 %93, double %96, i32 %97, i32 %99, i32 %101, float %102)
%104 = load float*, float** %4
%105 = load i32, i32* %5
%106 = load i32, i32* %6
%107 = load i32, i32* %5
%108 = sitofp i32 %107 to double
%109 = load i32, i32* %6
%110 = sdiv i32 %109, 9
%111 = sitofp i32 %110 to double
%112 = call double @llvm.fmuladd.f64(double 6.000000e-01, double %108, double %111)
%113 = load i32, i32* %7
%114 = load i32, i32* %6
%115 = sdiv i32 %114, 9
%116 = load i32, i32* %6
%117 = sdiv i32 %116, 9
%118 = load float, float* %8
%119 = call i32 @draw_rectangle(float* %104, i32 %105, i32 %106, double %112, i32 %113, i32 %115, i32 %117, float %118)
%120 = load float*, float** %4
%121 = load i32, i32* %5
%122 = load i32, i32* %6
%123 = load i32, i32* %5
%124 = sitofp i32 %123 to double
%125 = load i32, i32* %6
%126 = mul nsw i32 2, %125
%127 = sdiv i32 %126, 9
%128 = sitofp i32 %127 to double
%129 = call double @llvm.fmuladd.f64(double 6.000000e-01, double %124, double %128)
%130 = load i32, i32* %7
%131 = load i32, i32* %6
%132 = sdiv i32 %131, 9
%133 = load i32, i32* %6
%134 = sdiv i32 %133, 9
%135 = load float, float* %9
%136 = call i32 @draw_rectangle(float* %120, i32 %121, i32 %122, double %129, i32 %130, i32 %132, i32 %134, float %135)
%137 = load float*, float** %4
%138 = load i32, i32* %5
%139 = load i32, i32* %6
%140 = load i32, i32* %5
%141 = sitofp i32 %140 to double
%142 = fmul double 6.000000e-01, %141
%143 = load i32, i32* %7
%144 = load i32, i32* %6
%145 = sdiv i32 %144, 9
%146 = add nsw i32 %143, %145
%147 = load i32, i32* %6
%148 = sdiv i32 %147, 9
%149 = load i32, i32* %6
%150 = sdiv i32 %149, 9
%151 = load float, float* %8
%152 = call i32 @draw_rectangle(float* %137, i32 %138, i32 %139, double %142, i32 %146, i32 %148, i32 %150, float %151)
%153 = load float*, float** %4
%154 = load i32, i32* %5
%155 = load i32, i32* %6
%156 = load i32, i32* %5
%157 = sitofp i32 %156 to double
%158 = load i32, i32* %6
%159 = sdiv i32 %158, 9
%160 = sitofp i32 %159 to double
%161 = call double @llvm.fmuladd.f64(double 6.000000e-01, double %157, double %160)
%162 = load i32, i32* %7
%163 = load i32, i32* %6
%164 = sdiv i32 %163, 9
%165 = add nsw i32 %162, %164
%166 = load i32, i32* %6
%167 = sdiv i32 %166, 9
%168 = load i32, i32* %6
%169 = sdiv i32 %168, 9
%170 = load float, float* %9
%171 = call i32 @draw_rectangle(float* %153, i32 %154, i32 %155, double %161, i32 %165, i32 %167, i32 %169, float %170)
%172 = load float*, float** %4
%173 = load i32, i32* %5
%174 = load i32, i32* %6
%175 = load i32, i32* %5
%176 = sitofp i32 %175 to double
%177 = load i32, i32* %6
%178 = mul nsw i32 2, %177
%179 = sdiv i32 %178, 9
%180 = sitofp i32 %179 to double
%181 = call double @llvm.fmuladd.f64(double 6.000000e-01, double %176, double %180)
%182 = load i32, i32* %7
%183 = load i32, i32* %6
%184 = sdiv i32 %183, 9
%185 = add nsw i32 %182, %184
%186 = load i32, i32* %6
%187 = sdiv i32 %186, 9
%188 = load i32, i32* %6
%189 = sdiv i32 %188, 9
%190 = load float, float* %8
%191 = call i32 @draw_rectangle(float* %172, i32 %173, i32 %174, double %181, i32 %185, i32 %187, i32 %189, float %190)
br label %192
192: ; preds = %90
%193 = load i32, i32* %7
%194 = sitofp i32 %193 to double
%195 = load i32, i32* %6
%196 = sitofp i32 %195 to double
%197 = fdiv double %196, 4.500000e+00
%198 = fadd double %194, %197
%199 = fptosi double %198 to i32
store i32 %199, i32* %7
br label %86
200: ; preds = %86
ret void
}

LLVM IR (-O2):
define void @ortikon(float* %0, i32 %1, i32 %2) {
%4 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double 0.000000e+00, i32 0, i32 %1, i32 %2, float 0x3FE3333340000000)
%5 = sitofp i32 %1 to double
%6 = fmul double %5, 3.000000e-01
%7 = sdiv i32 %2, 8
%8 = tail call i32 @draw_circle(float* %0, i32 %1, i32 %2, double 1.000000e+00, double %6, i32 %7, i32 0, i32 10, double 0x3FEE666666666666)
%9 = fmul double %5, 6.000000e-01
%10 = tail call i32 @draw_circle(float* %0, i32 %1, i32 %2, double 1.000000e+00, double %9, i32 %7, i32 0, i32 20, double 0x3FEE666666666666)
%11 = tail call double @llvm.fmuladd.f64(double %5, double 6.000000e-01, double 4.000000e+01)
%12 = tail call i32 @draw_circle(float* %0, i32 %1, i32 %2, double 1.000000e+00, double %11, i32 %7, i32 0, i32 20, double 5.000000e-02)
%13 = sdiv i32 %2, 4
%14 = fptosi double %6 to i32
%15 = mul nsw i32 %2, 3
%16 = sdiv i32 %15, 4
%17 = tail call i32 @draw_gradient(float* %0, i32 %1, i32 %2, i32 0, i32 %13, i32 %14, i32 %16, double 8.400000e-01, double 9.400000e-02, i32 1)
%18 = fmul double %5, 1.300000e-01
%19 = sdiv i32 %1, 20
%20 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %18, i32 %13, i32 %19, i32 %16, float 0x3FEF0A3D80000000)
%21 = mul nsw i32 %1, 17
%22 = sdiv i32 %21, 40
%23 = tail call i32 @draw_gradient(float* %0, i32 %1, i32 %2, i32 %22, i32 %13, i32 %19, i32 %16, double 0x3FEF0A3D70A3D70A, double 6.000000e-01, i32 1)
%24 = icmp slt i32 %13, %2
br i1 %24, label %25, label %48
25: ; preds = %3
%26 = sdiv i32 %2, 9
%27 = sitofp i32 %26 to double
%28 = tail call double @llvm.fmuladd.f64(double %5, double 6.000000e-01, double %27)
%29 = shl nsw i32 %2, 1
%30 = sdiv i32 %29, 9
%31 = sitofp i32 %30 to double
%32 = tail call double @llvm.fmuladd.f64(double %5, double 6.000000e-01, double %31)
%33 = sitofp i32 %2 to double
%34 = fdiv double %33, 4.500000e+00
br label %35
35: ; preds = %25, %35
%36 = phi i32 [ %13, %25 ], [ %46, %35 ]
%37 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %9, i32 %36, i32 %26, i32 %26, float 0x3FB99999A0000000)
%38 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %28, i32 %36, i32 %26, i32 %26, float 0x3FECCCCCC0000000)
%39 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %32, i32 %36, i32 %26, i32 %26, float 0x3FB99999A0000000)
%40 = add nsw i32 %36, %26
%41 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %9, i32 %40, i32 %26, i32 %26, float 0x3FECCCCCC0000000)
%42 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %28, i32 %40, i32 %26, i32 %26, float 0x3FB99999A0000000)
%43 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, double %32, i32 %40, i32 %26, i32 %26, float 0x3FECCCCCC0000000)
%44 = sitofp i32 %36 to double
%45 = fadd double %34, %44
%46 = fptosi double %45 to i32
%47 = icmp slt i32 %46, %2
br i1 %47, label %35, label %48
48: ; preds = %35, %3
ret void
}