#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*/ lf4;
typedef int /*<<< orphan*/ lf3;
typedef int /*<<< orphan*/ lf2;
typedef int /*<<< orphan*/ lf1;

/* Variables and functions */
int /*<<< orphan*/ dispF(float *, int, int, int, int, int, float, char *,
                         double);
int /*<<< orphan*/ draw_rectangle(float *, int, int, int, int, int, int,
                                  double);
int /*<<< orphan*/ draw_sweep_1(float *, int, int, int, int, int, int, float,
                                float, float, int, int);
int /*<<< orphan*/ draw_sweep_2(float *, int, int, int, int, int, int, float,
                                float, float, int, int);
void sweep_h(float *sl, int w, int h, int a, float amp, int lps, float ar,
             float sf, float ef) {
  float xl, nf;
  float lf1[] = {0.05, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7};
  float lf2[] = {0.05, 0.07, 0.1, 0.15, 0.3, 0.7};
  float lf3[] = {100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0, 900.0};
  float lf4[] = {10.0, 25.0, 50.0, 100.0, 200.0, 400.0, 800.0};
  int i, x, y;
  for (x = 0; x < w * h; x++)
    sl[x] = 0.0;
  if (a == 0)
    draw_sweep_2(sl, w, h, w / 16, h / 8, 14 * w / 16, 6 * h / 8, sf, ef, amp,
                 1, lps);
  else
    draw_sweep_1(sl, w, h, w / 16, h / 8, 14 * w / 16, 6 * h / 8, sf, ef, amp,
                 1, lps);
  if (lps == 0) {
    for (i = 0; i < sizeof(lf1) / sizeof(float); i++) {
      xl = (lf1[i] - sf) / (ef - sf);
      if ((xl >= 0.0) && (xl <= 1.0)) {
        y = 7 * h / 8 + 25;
        x = w / 16 + xl * (14 * w / 16);
        draw_rectangle(sl, w, h, x, y - 20, 3, 10, 0.9);
        dispF(sl, w, h, x - 20, y + 6, 6, lf1[i], "%5.2f", 0.9);
      }
    }
    for (i = 0; i < sizeof(lf3) / sizeof(float); i++) {
      nf = lf3[i] / (float)h;
      if (a == 0)
        nf = nf * ar;
      xl = (nf - sf) / (ef - sf);
      if ((xl >= 0.0) && (xl <= 1.0)) {
        y = h / 8 - 25;
        x = w / 16 + xl * (14 * w / 16);
        draw_rectangle(sl, w, h, x, y + 8, 3, 10, 0.9);
        dispF(sl, w, h, x - 20, y + 2, 6, lf3[i], "%4.0f", 0.9);
      }
    }
  } else {
    for (i = 0; i < sizeof(lf2) / sizeof(float); i++) {
      xl = (1.0 / lf2[i] - 1.0 / sf) / (1.0 / ef - 1.0 / sf);
      if ((xl >= 0.0) && (xl <= 1.0)) {
        y = 7 * h / 8 + 25;
        x = w / 16 + xl * (14 * w / 16);
        draw_rectangle(sl, w, h, x, y - 20, 3, 10, 0.9);
        dispF(sl, w, h, x - 20, y + 6, 6, lf2[i], "%5.2f", 0.9);
      }
    }
    for (i = 0; i < sizeof(lf4) / sizeof(float); i++) {
      nf = lf4[i] / (float)h;
      if (a == 0)
        nf = nf * ar;
      xl = (1.0 / nf - 1.0 / sf) / (1.0 / ef - 1.0 / sf);
      if ((xl >= 0.0) && (xl <= 1.0)) {
        y = h / 8 - 25;
        x = w / 16 + xl * (14 * w / 16);
        draw_rectangle(sl, w, h, x, y + 8, 3, 10, 0.9);
        dispF(sl, w, h, x - 20, y + 2, 6, lf4[i], "%4.0f", 0.9);
      }
    }
  }
}


x86 assembly (clang, -O0):
<sweep_h>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
movss  %xmm0,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
movss  %xmm1,-0x20(%rbp)
movss  %xmm2,-0x24(%rbp)
movss  %xmm3,-0x28(%rbp)
mov    0xe89(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    0xe86(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    0xe83(%rip),%rax
mov    %rax,-0x40(%rbp)
mov    0xe81(%rip),%eax
mov    %eax,-0x38(%rbp)
mov    0xe7f(%rip),%rax
mov    %rax,-0x70(%rbp)
mov    0xe7c(%rip),%rax
mov    %rax,-0x68(%rbp)
mov    0xe79(%rip),%rax
mov    %rax,-0x60(%rbp)
lea    -0xa0(%rbp),%rdi
lea    0xe77(%rip),%rsi
mov    $0x24,%edx
call   1060 <memcpy@plt>
mov    0xe96(%rip),%rax
mov    %rax,-0xc0(%rbp)
mov    0xe90(%rip),%rax
mov    %rax,-0xb8(%rbp)
mov    0xe8a(%rip),%rax
mov    %rax,-0xb0(%rbp)
mov    0xe85(%rip),%eax
mov    %eax,-0xa8(%rbp)
movl   $0x0,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
mov    -0xc(%rbp),%ecx
imul   -0x10(%rbp),%ecx
cmp    %ecx,%eax
jge    125f <sweep_h+0x10f>
mov    -0x8(%rbp),%rax
movslq -0xc8(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    1223 <sweep_h+0xd3>
cmpl   $0x0,-0x14(%rbp)
jne    12ea <sweep_h+0x19a>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x8,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
imul   $0xe,-0xc(%rbp),%eax
mov    $0x10,%r9d
cltd
idiv   %r9d
mov    %eax,%r9d
imul   $0x6,-0x10(%rbp),%eax
mov    $0x8,%r10d
cltd
idiv   %r10d
mov    -0xd0(%rbp),%edx
mov    %eax,%r10d
movss  -0x24(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
mov    -0x1c(%rbp),%eax
mov    %r10d,(%rsp)
movl   $0x1,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1070 <draw_sweep_2@plt>
jmp    1366 <sweep_h+0x216>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x10(%rbp),%eax
mov    $0x8,%r8d
cltd
idiv   %r8d
mov    %eax,%r8d
imul   $0xe,-0xc(%rbp),%eax
mov    $0x10,%r9d
cltd
idiv   %r9d
mov    %eax,%r9d
imul   $0x6,-0x10(%rbp),%eax
mov    $0x8,%r10d
cltd
idiv   %r10d
mov    -0xd4(%rbp),%edx
mov    %eax,%r10d
movss  -0x24(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
movss  -0x18(%rbp),%xmm2
mov    -0x1c(%rbp),%eax
mov    %r10d,(%rsp)
movl   $0x1,0x8(%rsp)
mov    %eax,0x10(%rsp)
call   1050 <draw_sweep_1@plt>
cmpl   $0x0,-0x1c(%rbp)
jne    164c <sweep_h+0x4fc>
movl   $0x0,-0xc4(%rbp)
movslq -0xc4(%rbp),%rax
cmp    $0x7,%rax
jae    14c3 <sweep_h+0x373>
movslq -0xc4(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
subss  -0x24(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
subss  -0x24(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     14aa <sweep_h+0x35a>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc29(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     14aa <sweep_h+0x35a>
imul   $0x7,-0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
add    $0x19,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm1
movss  -0x2c(%rbp),%xmm0
imul   $0xe,-0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xc8(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
mov    -0xcc(%rbp),%r8d
sub    $0x14,%r8d
mov    $0x3,%r9d
movsd  0xbb3(%rip),%xmm0
movl   $0xa,(%rsp)
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
sub    $0x14,%ecx
mov    -0xcc(%rbp),%r8d
add    $0x6,%r8d
movslq -0xc4(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
mov    $0x6,%r9d
lea    0xc03(%rip),%rax
movsd  0xb67(%rip),%xmm1
mov    %rax,(%rsp)
call   1040 <dispF@plt>
jmp    14af <sweep_h+0x35f>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    137a <sweep_h+0x22a>
movl   $0x0,-0xc4(%rbp)
movslq -0xc4(%rbp),%rax
cmp    $0x9,%rax
jae    1647 <sweep_h+0x4f7>
movslq -0xc4(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
cvtsi2ssl -0x10(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x30(%rbp)
cmpl   $0x0,-0x14(%rbp)
jne    1515 <sweep_h+0x3c5>
movss  -0x30(%rbp),%xmm0
mulss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
subss  -0x24(%rbp),%xmm0
movss  -0x28(%rbp),%xmm1
subss  -0x24(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     162e <sweep_h+0x4de>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xaa7(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     162e <sweep_h+0x4de>
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
sub    $0x19,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm1
movss  -0x2c(%rbp),%xmm0
imul   $0xe,-0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xc8(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
mov    -0xcc(%rbp),%r8d
add    $0x8,%r8d
mov    $0x3,%r9d
movsd  0xa32(%rip),%xmm0
movl   $0xa,(%rsp)
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
sub    $0x14,%ecx
mov    -0xcc(%rbp),%r8d
add    $0x2,%r8d
movslq -0xc4(%rbp),%rax
movss  -0xa0(%rbp,%rax,4),%xmm0
ff ff
mov    $0x6,%r9d
lea    0xa85(%rip),%rax
movsd  0x9e3(%rip),%xmm1
mov    %rax,(%rsp)
call   1040 <dispF@plt>
jmp    1633 <sweep_h+0x4e3>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    14cd <sweep_h+0x37d>
jmp    19c0 <sweep_h+0x870>
movl   $0x0,-0xc4(%rbp)
movslq -0xc4(%rbp),%rax
cmp    $0x6,%rax
jae    17eb <sweep_h+0x69b>
movslq -0xc4(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x980(%rip),%xmm0
divsd  %xmm1,%xmm0
movss  -0x24(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x96b(%rip),%xmm1
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x952(%rip),%xmm1
divsd  %xmm2,%xmm1
movss  -0x24(%rbp),%xmm2
cvtss2sd %xmm2,%xmm3
movsd  0x93d(%rip),%xmm2
divsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     17d2 <sweep_h+0x682>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x901(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     17d2 <sweep_h+0x682>
imul   $0x7,-0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
add    $0x19,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm1
movss  -0x2c(%rbp),%xmm0
imul   $0xe,-0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xc8(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
mov    -0xcc(%rbp),%r8d
sub    $0x14,%r8d
mov    $0x3,%r9d
movsd  0x88b(%rip),%xmm0
movl   $0xa,(%rsp)
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
sub    $0x14,%ecx
mov    -0xcc(%rbp),%r8d
add    $0x6,%r8d
movslq -0xc4(%rbp),%rax
movss  -0x70(%rbp,%rax,4),%xmm0
mov    $0x6,%r9d
lea    0x8db(%rip),%rax
movsd  0x83f(%rip),%xmm1
mov    %rax,(%rsp)
call   1040 <dispF@plt>
jmp    17d7 <sweep_h+0x687>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    1656 <sweep_h+0x506>
movl   $0x0,-0xc4(%rbp)
movslq -0xc4(%rbp),%rax
cmp    $0x7,%rax
jae    19bb <sweep_h+0x86b>
movslq -0xc4(%rbp),%rax
movss  -0xc0(%rbp,%rax,4),%xmm0
ff ff
cvtsi2ssl -0x10(%rbp),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x30(%rbp)
cmpl   $0x0,-0x14(%rbp)
jne    183d <sweep_h+0x6ed>
movss  -0x30(%rbp),%xmm0
mulss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x7b2(%rip),%xmm0
divsd  %xmm1,%xmm0
movss  -0x24(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x79d(%rip),%xmm1
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movss  -0x28(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x784(%rip),%xmm1
divsd  %xmm2,%xmm1
movss  -0x24(%rbp),%xmm2
cvtss2sd %xmm2,%xmm3
movsd  0x76f(%rip),%xmm2
divsd  %xmm3,%xmm2
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     19a2 <sweep_h+0x852>
movss  -0x2c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x733(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     19a2 <sweep_h+0x852>
mov    -0x10(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
sub    $0x19,%eax
mov    %eax,-0xcc(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm1
movss  -0x2c(%rbp),%xmm0
imul   $0xe,-0xc(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cvtsi2ss %eax,%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0xc8(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
mov    -0xcc(%rbp),%r8d
add    $0x8,%r8d
mov    $0x3,%r9d
movsd  0x6be(%rip),%xmm0
movl   $0xa,(%rsp)
call   1030 <draw_rectangle@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
mov    -0xc8(%rbp),%ecx
sub    $0x14,%ecx
mov    -0xcc(%rbp),%r8d
add    $0x2,%r8d
movslq -0xc4(%rbp),%rax
movss  -0xc0(%rbp,%rax,4),%xmm0
ff ff
mov    $0x6,%r9d
lea    0x711(%rip),%rax
movsd  0x66f(%rip),%xmm1
mov    %rax,(%rsp)
call   1040 <dispF@plt>
jmp    19a7 <sweep_h+0x857>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
jmp    17f5 <sweep_h+0x6a5>
jmp    19c0 <sweep_h+0x870>
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sweep_h>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
movss  %xmm2,0x30(%rsp)
movss  %xmm1,0x3c(%rsp)
mov    %r8d,%r12d
movaps %xmm0,%xmm2
mov    %ecx,0x4c(%rsp)
mov    %edx,%r13d
mov    %esi,%r14d
mov    %rdi,%r15
mov    %edx,%eax
imul   %esi,%eax
test   %eax,%eax
movss  %xmm3,0x28(%rsp)
jle    11ae <sweep_h+0x5e>
mov    %eax,%edx
shl    $0x2,%rdx
mov    %r15,%rdi
xor    %esi,%esi
movss  %xmm2,0x18(%rsp)
call   1060 <memset@plt>
movss  0x18(%rsp),%xmm2
movss  0x28(%rsp),%xmm3
lea    0xf(%r14),%eax
test   %r14d,%r14d
mov    %r14d,%ecx
mov    %eax,0x18(%rsp)
cmovs  %eax,%ecx
sar    $0x4,%ecx
lea    0x7(%r13),%eax
test   %r13d,%r13d
mov    %r13d,%r8d
mov    %rax,0x50(%rsp)
cmovs  %eax,%r8d
sar    $0x3,%r8d
mov    %r14d,%ebx
shl    $0x4,%ebx
sub    %r14d,%ebx
sub    %r14d,%ebx
lea    0xf(%rbx),%esi
test   %ebx,%ebx
mov    %ebx,%r9d
cmovs  %esi,%r9d
sar    $0x4,%r9d
lea    0x0(%r13,%r13,1),%eax
lea    (%rax,%rax,2),%edx
lea    (%rax,%rax,2),%eax
add    $0x7,%eax
test   %edx,%edx
cmovns %edx,%eax
sar    $0x3,%eax
cmpl   $0x0,0x4c(%rsp)
je     1507 <sweep_h+0x3b7>
mov    %r12d,0x10(%rsp)
mov    %eax,(%rsp)
movl   $0x1,0x8(%rsp)
mov    %r15,%rdi
mov    %esi,%ebp
mov    %r14d,%esi
mov    %r13d,%edx
movss  0x30(%rsp),%xmm0
movaps %xmm3,%xmm1
call   1050 <draw_sweep_1@plt>
mov    %ebp,%edx
test   %r12d,%r12d
je     153f <sweep_h+0x3ef>
movss  0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xda4(%rip),%xmm2
movapd %xmm2,%xmm3
divsd  %xmm0,%xmm3
movss  0x28(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movapd %xmm2,%xmm4
divsd  %xmm0,%xmm4
lea    0x0(,%r13,8),%eax
sub    %r13d,%eax
mov    0x18(%rsp),%ecx
lea    0x7(%rax),%esi
test   %eax,%eax
cmovns %eax,%esi
sar    $0x3,%esi
test   %r14d,%r14d
cmovns %r14d,%ecx
sar    $0x4,%ecx
xorps  %xmm0,%xmm0
cvtsi2ss %ecx,%xmm0
movss  %xmm0,0x18(%rsp)
subsd  %xmm3,%xmm4
test   %ebx,%ebx
cmovns %ebx,%edx
sar    $0x4,%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
movss  %xmm0,0x24(%rsp)
lea    0x5(%rsi),%eax
mov    %eax,0x1c(%rsp)
add    $0x1f,%esi
mov    %rsi,0x40(%rsp)
xor    %ebx,%ebx
lea    0xd68(%rip),%r12
xorps  %xmm5,%xmm5
movsd  %xmm3,0x30(%rsp)
movsd  %xmm4,0x28(%rsp)
jmp    12fe <sweep_h+0x1ae>
nopl   0x0(%rax)
add    $0x4,%rbx
cmp    $0x18,%rbx
je     13c7 <sweep_h+0x277>
movss  (%rbx,%r12,1),%xmm6
xorps  %xmm0,%xmm0
cvtss2sd %xmm6,%xmm0
movapd %xmm2,%xmm1
divsd  %xmm0,%xmm1
subsd  %xmm3,%xmm1
divsd  %xmm4,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
ucomiss %xmm5,%xmm0
jb     12f0 <sweep_h+0x1a0>
movss  0xce1(%rip),%xmm1
ucomiss %xmm0,%xmm1
jb     12f0 <sweep_h+0x1a0>
mulss  0x24(%rsp),%xmm0
addss  0x18(%rsp),%xmm0
cvttss2si %xmm0,%ebp
movl   $0xa,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
mov    0x1c(%rsp),%r8d
mov    $0x3,%r9d
movsd  0xc9f(%rip),%xmm0
movss  %xmm6,0x20(%rsp)
call   1030 <draw_rectangle@plt>
add    $0xffffffec,%ebp
lea    0xd2e(%rip),%rax
mov    %rax,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
mov    0x40(%rsp),%r8
mov    $0x6,%r9d
movss  0x20(%rsp),%xmm0
movsd  0xc62(%rip),%xmm1
call   1040 <dispF@plt>
xorps  %xmm5,%xmm5
movsd  0x28(%rsp),%xmm4
movsd  0x30(%rsp),%xmm3
movsd  0xc3e(%rip),%xmm2
jmp    12f0 <sweep_h+0x1a0>
cmpl   $0x0,0x4c(%rsp)
je     13dc <sweep_h+0x28c>
movss  0xc3a(%rip),%xmm0
movss  %xmm0,0x3c(%rsp)
xorps  %xmm5,%xmm5
cvtsi2ss %r13d,%xmm5
test   %r13d,%r13d
mov    0x50(%rsp),%rcx
cmovns %r13d,%ecx
sar    $0x3,%ecx
lea    -0x11(%rcx),%eax
mov    %eax,0x40(%rsp)
add    $0xffffffe9,%ecx
mov    %rcx,0x50(%rsp)
xor    %ebx,%ebx
lea    0xc85(%rip),%r12
xorps  %xmm6,%xmm6
movss  %xmm5,0x1c(%rsp)
jmp    142e <sweep_h+0x2de>
cs nopw 0x0(%rax,%rax,1)
add    $0x4,%rbx
cmp    $0x1c,%rbx
je     1798 <sweep_h+0x648>
movss  (%rbx,%r12,1),%xmm7
movaps %xmm7,%xmm0
divss  %xmm5,%xmm0
mulss  0x3c(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movapd %xmm2,%xmm1
divsd  %xmm0,%xmm1
subsd  %xmm3,%xmm1
divsd  %xmm4,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
ucomiss %xmm6,%xmm0
jb     1420 <sweep_h+0x2d0>
movss  0xba7(%rip),%xmm1
ucomiss %xmm0,%xmm1
jb     1420 <sweep_h+0x2d0>
mulss  0x24(%rsp),%xmm0
addss  0x18(%rsp),%xmm0
cvttss2si %xmm0,%ebp
movl   $0xa,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
mov    0x40(%rsp),%r8d
mov    $0x3,%r9d
movsd  0xb65(%rip),%xmm0
movss  %xmm7,0x20(%rsp)
call   1030 <draw_rectangle@plt>
add    $0xffffffec,%ebp
lea    0xbfa(%rip),%rax
mov    %rax,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
mov    0x50(%rsp),%r8
mov    $0x6,%r9d
movss  0x20(%rsp),%xmm0
movsd  0xb28(%rip),%xmm1
call   1040 <dispF@plt>
xorps  %xmm6,%xmm6
movss  0x1c(%rsp),%xmm5
movsd  0x28(%rsp),%xmm4
movsd  0x30(%rsp),%xmm3
movsd  0xafe(%rip),%xmm2
jmp    1420 <sweep_h+0x2d0>
mov    %r12d,0x10(%rsp)
mov    %eax,(%rsp)
movl   $0x1,0x8(%rsp)
mov    %r15,%rdi
mov    %esi,0x24(%rsp)
mov    %r14d,%esi
mov    %r13d,%edx
movss  0x30(%rsp),%xmm0
movaps %xmm3,%xmm1
call   1070 <draw_sweep_2@plt>
mov    0x24(%rsp),%edx
test   %r12d,%r12d
jne    124a <sweep_h+0xfa>
lea    0x0(,%r13,8),%eax
sub    %r13d,%eax
lea    0x7(%rax),%ecx
test   %eax,%eax
cmovns %eax,%ecx
sar    $0x3,%ecx
test   %r14d,%r14d
mov    0x18(%rsp),%eax
cmovns %r14d,%eax
sar    $0x4,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
movss  %xmm0,0x18(%rsp)
movss  0x28(%rsp),%xmm1
subss  0x30(%rsp),%xmm1
test   %ebx,%ebx
cmovns %ebx,%edx
sar    $0x4,%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
movss  %xmm0,0x24(%rsp)
lea    0x5(%rcx),%eax
mov    %eax,0x1c(%rsp)
add    $0x1f,%ecx
mov    %rcx,0x40(%rsp)
xor    %ebx,%ebx
lea    0xa77(%rip),%rbp
xorps  %xmm3,%xmm3
movss  %xmm1,0x28(%rsp)
jmp    15ce <sweep_h+0x47e>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x4,%rbx
cmp    $0x1c,%rbx
je     167b <sweep_h+0x52b>
movss  (%rbx,%rbp,1),%xmm4
movaps %xmm4,%xmm0
subss  0x30(%rsp),%xmm0
divss  %xmm1,%xmm0
ucomiss %xmm3,%xmm0
jb     15c0 <sweep_h+0x470>
movss  0xa23(%rip),%xmm2
ucomiss %xmm0,%xmm2
jb     15c0 <sweep_h+0x470>
mulss  0x24(%rsp),%xmm0
addss  0x18(%rsp),%xmm0
cvttss2si %xmm0,%r12d
movl   $0xa,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %r12d,%ecx
mov    0x1c(%rsp),%r8d
mov    $0x3,%r9d
movsd  0x9df(%rip),%xmm0
movss  %xmm4,0x20(%rsp)
call   1030 <draw_rectangle@plt>
add    $0xffffffec,%r12d
lea    0xa6d(%rip),%rax
mov    %rax,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %r12d,%ecx
mov    0x40(%rsp),%r8
mov    $0x6,%r9d
movss  0x20(%rsp),%xmm0
movsd  0x9a0(%rip),%xmm1
call   1040 <dispF@plt>
xorps  %xmm3,%xmm3
movss  0x28(%rsp),%xmm1
jmp    15c0 <sweep_h+0x470>
cmpl   $0x0,0x4c(%rsp)
je     1690 <sweep_h+0x540>
movss  0x986(%rip),%xmm0
movss  %xmm0,0x3c(%rsp)
xorps  %xmm3,%xmm3
cvtsi2ss %r13d,%xmm3
test   %r13d,%r13d
mov    0x50(%rsp),%rcx
cmovns %r13d,%ecx
sar    $0x3,%ecx
lea    -0x11(%rcx),%eax
mov    %eax,0x40(%rsp)
add    $0xffffffe9,%ecx
mov    %rcx,0x50(%rsp)
xor    %ebx,%ebx
lea    0x9a1(%rip),%r12
xorps  %xmm4,%xmm4
movss  %xmm3,0x1c(%rsp)
jmp    16de <sweep_h+0x58e>
nopw   0x0(%rax,%rax,1)
add    $0x4,%rbx
cmp    $0x24,%rbx
je     1798 <sweep_h+0x648>
movss  (%rbx,%r12,1),%xmm5
movaps %xmm5,%xmm0
divss  %xmm3,%xmm0
mulss  0x3c(%rsp),%xmm0
subss  0x30(%rsp),%xmm0
divss  %xmm1,%xmm0
ucomiss %xmm4,%xmm0
jb     16d0 <sweep_h+0x580>
movss  0x908(%rip),%xmm2
ucomiss %xmm0,%xmm2
jb     16d0 <sweep_h+0x580>
mulss  0x24(%rsp),%xmm0
addss  0x18(%rsp),%xmm0
cvttss2si %xmm0,%ebp
movl   $0xa,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
mov    0x40(%rsp),%r8d
mov    $0x3,%r9d
movsd  0x8c6(%rip),%xmm0
movss  %xmm5,0x20(%rsp)
call   1030 <draw_rectangle@plt>
add    $0xffffffec,%ebp
lea    0x95b(%rip),%rax
mov    %rax,(%rsp)
mov    %r15,%rdi
mov    %r14d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
mov    0x50(%rsp),%r8
mov    $0x6,%r9d
movss  0x20(%rsp),%xmm0
movsd  0x889(%rip),%xmm1
call   1040 <dispF@plt>
xorps  %xmm4,%xmm4
movss  0x1c(%rsp),%xmm3
movss  0x28(%rsp),%xmm1
jmp    16d0 <sweep_h+0x580>
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@__const.sweep_h.lf1 = [7 x float] [float 0x3FA99999A0000000, float 0x3FC99999A0000000, float 0x3FD3333340000000, float 0x3FD99999A0000000, float 5.000000e-01, float 0x3FE3333340000000, float 0x3FE6666660000000]
@__const.sweep_h.lf2 = [6 x float] [float 0x3FA99999A0000000, float 0x3FB1EB8520000000, float 0x3FB99999A0000000, float 0x3FC3333340000000, float 0x3FD3333340000000, float 0x3FE6666660000000]
@__const.sweep_h.lf3 = [9 x float] [float 1.000000e+02, float 2.000000e+02, float 3.000000e+02, float 4.000000e+02, float 5.000000e+02, float 6.000000e+02, float 7.000000e+02, float 8.000000e+02, float 9.000000e+02]
@__const.sweep_h.lf4 = [7 x float] [float 1.000000e+01, float 2.500000e+01, float 5.000000e+01, float 1.000000e+02, float 2.000000e+02, float 4.000000e+02, float 8.000000e+02]
@.str = [6 x i8] c"%5.2f\00"
@.str.1 = [6 x i8] c"%4.0f\00"
define void @sweep_h(float* %0, i32 %1, i32 %2, i32 %3, float %4, i32 %5, float %6, float %7, float %8) {
%10 = mul i32 %2, %1
%11 = icmp sgt i32 %10, 0
br i1 %11, label %12, label %16
12: ; preds = %9
%13 = bitcast float* %0 to i8*
%14 = zext i32 %10 to i64
%15 = shl nuw nsw i64 %14, 2
br label %16
16: ; preds = %12, %9
%17 = icmp eq i32 %3, 0
%18 = sdiv i32 %1, 16
%19 = sdiv i32 %2, 8
%20 = mul nsw i32 %1, 14
%21 = sdiv i32 %20, 16
%22 = mul nsw i32 %2, 6
%23 = sdiv i32 %22, 8
br i1 %17, label %24, label %26
24: ; preds = %16
%25 = tail call i32 @draw_sweep_2(float* %0, i32 %1, i32 %2, i32 %18, i32 %19, i32 %21, i32 %23, float %7, float %8, float %4, i32 1, i32 %5)
br label %28
26: ; preds = %16
%27 = tail call i32 @draw_sweep_1(float* %0, i32 %1, i32 %2, i32 %18, i32 %19, i32 %21, i32 %23, float %7, float %8, float %4, i32 1, i32 %5)
br label %28
28: ; preds = %26, %24
%29 = icmp eq i32 %5, 0
br i1 %29, label %45, label %30
30: ; preds = %28
%31 = fpext float %7 to double
%32 = fdiv double 1.000000e+00, %31
%33 = fpext float %8 to double
%34 = fdiv double 1.000000e+00, %33
%35 = fsub double %34, %32
%36 = mul nsw i32 %2, 7
%37 = sdiv i32 %36, 8
%38 = sdiv i32 %1, 16
%39 = sitofp i32 %38 to float
%40 = mul nsw i32 %1, 14
%41 = sdiv i32 %40, 16
%42 = sitofp i32 %41 to float
%43 = add nsw i32 %37, 5
%44 = add nsw i32 %37, 31
br label %106
45: ; preds = %28
%46 = fsub float %8, %7
%47 = mul nsw i32 %2, 7
%48 = sdiv i32 %47, 8
%49 = sdiv i32 %1, 16
%50 = sitofp i32 %49 to float
%51 = mul nsw i32 %1, 14
%52 = sdiv i32 %51, 16
%53 = sitofp i32 %52 to float
%54 = add nsw i32 %48, 5
%55 = add nsw i32 %48, 31
br label %62
56: ; preds = %77
%57 = sitofp i32 %2 to float
%58 = select i1 %17, float %6, float 1.000000e+00
%59 = sdiv i32 %2, 8
%60 = add nsw i32 %59, -17
%61 = add nsw i32 %59, -23
br label %80
62: ; preds = %45, %77
%63 = phi i64 [ 0, %45 ], [ %78, %77 ]
%64 = getelementptr inbounds [7 x float], [7 x float]* @__const.sweep_h.lf1, i64 0, i64 %63
%65 = load float, float* %64
%66 = fsub float %65, %7
%67 = fdiv float %66, %46
%68 = fcmp ult float %67, 0.000000e+00
%69 = fcmp ugt float %67, 1.000000e+00
%70 = or i1 %68, %69
br i1 %70, label %77, label %71
71: ; preds = %62
%72 = tail call float @llvm.fmuladd.f32(float %67, float %53, float %50)
%73 = fptosi float %72 to i32
%74 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, i32 %73, i32 %54, i32 3, i32 10, double 9.000000e-01)
%75 = add nsw i32 %73, -20
%76 = tail call i32 @dispF(float* %0, i32 %1, i32 %2, i32 %75, i32 %55, i32 6, float %65, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), double 9.000000e-01)
br label %77
77: ; preds = %62, %71
%78 = add nuw nsw i64 %63, 1
%79 = icmp eq i64 %78, 7
br i1 %79, label %56, label %62
80: ; preds = %56, %97
%81 = phi i64 [ 0, %56 ], [ %98, %97 ]
%82 = getelementptr inbounds [9 x float], [9 x float]* @__const.sweep_h.lf3, i64 0, i64 %81
%83 = load float, float* %82
%84 = fdiv float %83, %57
%85 = fmul float %58, %84
%86 = fsub float %85, %7
%87 = fdiv float %86, %46
%88 = fcmp ult float %87, 0.000000e+00
%89 = fcmp ugt float %87, 1.000000e+00
%90 = or i1 %88, %89
br i1 %90, label %97, label %91
91: ; preds = %80
%92 = tail call float @llvm.fmuladd.f32(float %87, float %53, float %50)
%93 = fptosi float %92 to i32
%94 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, i32 %93, i32 %60, i32 3, i32 10, double 9.000000e-01)
%95 = add nsw i32 %93, -20
%96 = tail call i32 @dispF(float* %0, i32 %1, i32 %2, i32 %95, i32 %61, i32 6, float %83, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), double 9.000000e-01)
br label %97
97: ; preds = %80, %91
%98 = add nuw nsw i64 %81, 1
%99 = icmp eq i64 %98, 9
br i1 %99, label %150, label %80
100: ; preds = %124
%101 = sitofp i32 %2 to float
%102 = select i1 %17, float %6, float 1.000000e+00
%103 = sdiv i32 %2, 8
%104 = add nsw i32 %103, -17
%105 = add nsw i32 %103, -23
br label %127
106: ; preds = %30, %124
%107 = phi i64 [ 0, %30 ], [ %125, %124 ]
%108 = getelementptr inbounds [6 x float], [6 x float]* @__const.sweep_h.lf2, i64 0, i64 %107
%109 = load float, float* %108
%110 = fpext float %109 to double
%111 = fdiv double 1.000000e+00, %110
%112 = fsub double %111, %32
%113 = fdiv double %112, %35
%114 = fptrunc double %113 to float
%115 = fcmp ult float %114, 0.000000e+00
%116 = fcmp ugt float %114, 1.000000e+00
%117 = or i1 %115, %116
br i1 %117, label %124, label %118
118: ; preds = %106
%119 = tail call float @llvm.fmuladd.f32(float %114, float %42, float %39)
%120 = fptosi float %119 to i32
%121 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, i32 %120, i32 %43, i32 3, i32 10, double 9.000000e-01)
%122 = add nsw i32 %120, -20
%123 = tail call i32 @dispF(float* %0, i32 %1, i32 %2, i32 %122, i32 %44, i32 6, float %109, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), double 9.000000e-01)
br label %124
124: ; preds = %106, %118
%125 = add nuw nsw i64 %107, 1
%126 = icmp eq i64 %125, 6
br i1 %126, label %100, label %106
127: ; preds = %100, %147
%128 = phi i64 [ 0, %100 ], [ %148, %147 ]
%129 = getelementptr inbounds [7 x float], [7 x float]* @__const.sweep_h.lf4, i64 0, i64 %128
%130 = load float, float* %129
%131 = fdiv float %130, %101
%132 = fmul float %102, %131
%133 = fpext float %132 to double
%134 = fdiv double 1.000000e+00, %133
%135 = fsub double %134, %32
%136 = fdiv double %135, %35
%137 = fptrunc double %136 to float
%138 = fcmp ult float %137, 0.000000e+00
%139 = fcmp ugt float %137, 1.000000e+00
%140 = or i1 %138, %139
br i1 %140, label %147, label %141
141: ; preds = %127
%142 = tail call float @llvm.fmuladd.f32(float %137, float %42, float %39)
%143 = fptosi float %142 to i32
%144 = tail call i32 @draw_rectangle(float* %0, i32 %1, i32 %2, i32 %143, i32 %104, i32 3, i32 10, double 9.000000e-01)
%145 = add nsw i32 %143, -20
%146 = tail call i32 @dispF(float* %0, i32 %1, i32 %2, i32 %145, i32 %105, i32 6, float %130, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), double 9.000000e-01)
br label %147
147: ; preds = %127, %141
%148 = add nuw nsw i64 %128, 1
%149 = icmp eq i64 %148, 7
br i1 %149, label %150, label %127
150: ; preds = %147, %97
ret void
}