#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 fabs(double);
void par_monitor(int l, int j, float a[], int ia[], float atry[], double da[]) {
  extern int (*pfunc)(const char *, ...);
  extern char device[];
  atry[l] = a[l] + da[j];
  if ((l + 2) % 10 == 0) {
    if (atry[l] > 1. && atry[l] < 10.) {
      if (ia[l + 1] == 1)
        atry[l + 1] = atry[l + 1] + 90.;
      if (ia[l] == 1)
        atry[l] = 1. / atry[l];
      if (ia[l - 4] == 1)
        atry[l - 4] = atry[l - 4] / atry[l];
    } else if (atry[l] > 10.)
      atry[l] = a[l];
    if (atry[l] <= 0. || a[l] / atry[l] >= 10.)
      atry[l] = a[l] / 10.;
    if (atry[l] <= 0.1)
      atry[l] = 0.1;
    return;
  };
  if ((l + 7) % 10 == 0) {
    if (atry[l] - a[l] >= 10.)
      atry[l] = a[l] + 10.;
    else if (a[l] - atry[l] >= 10.)
      atry[l] = a[l] - 10.;
    if (atry[l] >= 50.)
      atry[l] = 50.;
    else if (atry[l] <= -50.)
      atry[l] = -50.;
    return;
  };
  if ((l + 6) % 10 == 0) {
    if (a[l] <= 0.1)
      a[l] = 0.1;
    return;
  };
  if ((l + 5) % 10 == 0) {
    if (fabs(atry[l] / a[l]) >= 10.)
      atry[l] = a[l] * 10.;
    else if (atry[l] <= 0. || a[l] / atry[l] >= 10.)
      atry[l] = a[l] / 10.;
    if (atry[l] > 20.)
      atry[l] = 20.;
    else if (atry[l] < 0.01)
      atry[l] = 0.01;
    return;
  };
  if ((l + 9) % 10 == 0 || (l + 8) % 10 == 0) {
    if (atry[l] - a[l] >= 10.)
      atry[l] = a[l] + 10.;
    else if (a[l] - atry[l] >= 10.)
      atry[l] = a[l] - 10.;
    return;
  };
  if ((l + 1) % 10 == 0) {
    if (fabs(da[j]) >= 500.)
      atry[l] = a[l];
    return;
  };
  if (l % 10 == 0) {
    if (atry[l] <= -2.0)
      atry[l] = -1.99;
    return;
  };
  if (((l + 3) % 10 == 0 || (l + 4) % 10 == 0) && a[l] < 0.)
    a[l] = 0.01;
  if (((l + 3) % 10 == 0 || (l + 4) % 10 == 0) && atry[l] <= 0.) {
    atry[l] = 0.01;
  }
  return;
}


x86 assembly (clang, -O0):
<par_monitor>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4(%rbp),%eax
add    $0x2,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1391 <par_monitor+0x281>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xecb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1296 <par_monitor+0x186>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe78(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1296 <par_monitor+0x186>
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1209 <par_monitor+0xf9>
mov    -0x20(%rbp),%rax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe71(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x4(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
movslq -0x4(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1249 <par_monitor+0x139>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe24(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1291 <par_monitor+0x181>
mov    -0x20(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
divss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x4(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    12d8 <par_monitor+0x1c8>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd79(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12d3 <par_monitor+0x1c3>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    12d8 <par_monitor+0x1c8>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jae    1326 <par_monitor+0x216>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
divss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd0c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1354 <par_monitor+0x244>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xce9(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xcd3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     138c <par_monitor+0x27c>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0xc85(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
add    $0x7,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    14ed <par_monitor+0x3dd>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc5a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     140b <par_monitor+0x2fb>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc37(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    146e <par_monitor+0x35e>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbf7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1469 <par_monitor+0x359>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbd4(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    146e <par_monitor+0x35e>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xbc1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     14ab <par_monitor+0x39b>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0xb73(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    14e8 <par_monitor+0x3d8>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb8c(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     14e3 <par_monitor+0x3d3>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0xb32(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    14e8 <par_monitor+0x3d8>
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
add    $0x6,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1541 <par_monitor+0x431>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb23(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     153c <par_monitor+0x42c>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0xad5(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
add    $0x5,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    16c4 <par_monitor+0x5b4>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
divss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  0xaa1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     15c4 <par_monitor+0x4b4>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa7e(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1645 <par_monitor+0x535>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jae    1612 <par_monitor+0x502>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
divss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa20(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1640 <par_monitor+0x530>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x9fd(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1645 <par_monitor+0x535>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x9d2(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1682 <par_monitor+0x572>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0x990(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    16bf <par_monitor+0x5af>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x99d(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    16ba <par_monitor+0x5aa>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0x94b(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    16bf <par_monitor+0x5af>
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
add    $0x9,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     16f2 <par_monitor+0x5e2>
mov    -0x4(%rbp),%eax
add    $0x8,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    17bd <par_monitor+0x6ad>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x910(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1755 <par_monitor+0x645>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8ed(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    17b8 <par_monitor+0x6a8>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x8ad(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     17b3 <par_monitor+0x6a3>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x88a(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    17b8 <par_monitor+0x6a8>
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    181b <par_monitor+0x70b>
mov    -0x28(%rbp),%rax
movslq -0x8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <fabs@plt>
cvtsi2sd %eax,%xmm0
movsd  0x82e(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1816 <par_monitor+0x706>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    186c <par_monitor+0x75c>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x7d0(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     1867 <par_monitor+0x757>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0x7a2(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1933 <par_monitor+0x823>
mov    -0x4(%rbp),%eax
add    $0x3,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     189a <par_monitor+0x78a>
mov    -0x4(%rbp),%eax
add    $0x4,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    18cd <par_monitor+0x7bd>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    18cd <par_monitor+0x7bd>
mov    -0x10(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0x738(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x4(%rbp),%eax
add    $0x3,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     18fb <par_monitor+0x7eb>
mov    -0x4(%rbp),%eax
add    $0x4,%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    192e <par_monitor+0x81e>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jb     192e <par_monitor+0x81e>
mov    -0x20(%rbp),%rax
movslq -0x4(%rbp),%rcx
movss  0x6d7(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    1933 <par_monitor+0x823>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<par_monitor>:
push   %r15
push   %r14
push   %rbx
mov    %r8,%r14
mov    %rdx,%r15
movslq %edi,%rbx
movss  (%rdx,%rbx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movslq %esi,%rax
movsd  (%r9,%rax,8),%xmm0
addsd  %xmm0,%xmm1
cvtsd2ss %xmm1,%xmm1
movss  %xmm1,(%r8,%rbx,4)
imul   $0xcccccccd,%ebx,%eax
lea    -0x4cccccce(%rax),%edx
ror    %edx
cmp    $0x19999998,%edx
jbe    127a <par_monitor+0x16a>
lea    -0x4ccccccd(%rax),%ecx
ror    %ecx
cmp    $0x19999998,%ecx
jbe    12bd <par_monitor+0x1ad>
lea    -0x1999999a(%rax),%ecx
ror    %ecx
cmp    $0x19999998,%ecx
jbe    1341 <par_monitor+0x231>
lea    0x19999999(%rax),%ecx
ror    %ecx
cmp    $0x19999998,%ecx
jbe    145c <par_monitor+0x34c>
lea    0x4ccccccd(%rax),%ecx
ror    %ecx
cmp    $0x19999999,%ecx
jb     141f <par_monitor+0x30f>
lea    -0x80000000(%rax),%ecx
ror    %ecx
cmp    $0x19999998,%ecx
jbe    141f <par_monitor+0x30f>
lea    -0x1999999b(%rax),%ecx
ror    %ecx
cmp    $0x19999998,%ecx
jbe    14fd <par_monitor+0x3ed>
add    $0x19999998,%eax
ror    %eax
cmp    $0x19999998,%eax
jbe    1517 <par_monitor+0x407>
lea    0x3(%rdi),%eax
cltq
imul   $0x66666667,%rax,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rcx
add    %edx,%ecx
add    %ecx,%ecx
lea    (%rcx,%rcx,4),%ecx
sub    %ecx,%eax
je     1227 <par_monitor+0x117>
lea    0x4(%rdi),%ecx
movslq %ecx,%rcx
imul   $0x66666667,%rcx,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
sar    $0x22,%rdx
add    %esi,%edx
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
sub    %edx,%ecx
jne    125f <par_monitor+0x14f>
xorpd  %xmm0,%xmm0
ucomiss (%r15,%rbx,4),%xmm0
jbe    123a <par_monitor+0x12a>
movl   $0x3c23d70a,(%r15,%rbx,4)
3c
test   %eax,%eax
je     1267 <par_monitor+0x157>
add    $0x4,%edi
movslq %edi,%rcx
imul   $0x66666667,%rcx,%rax
mov    %rax,%rdx
shr    $0x3f,%rdx
sar    $0x22,%rax
add    %edx,%eax
add    %eax,%eax
lea    (%rax,%rax,4),%eax
sub    %eax,%ecx
test   %ecx,%ecx
jne    152c <par_monitor+0x41c>
xorps  %xmm0,%xmm0
ucomiss (%r14,%rbx,4),%xmm0
jae    14f3 <par_monitor+0x3e3>
jmp    152c <par_monitor+0x41c>
ucomiss 0xd97(%rip),%xmm1
jbe    1323 <par_monitor+0x213>
movss  0xd75(%rip),%xmm0
ucomiss %xmm1,%xmm0
jbe    1323 <par_monitor+0x213>
cmpl   $0x1,0x4(%rcx,%rbx,4)
je     1377 <par_monitor+0x267>
cmpl   $0x1,(%rcx,%rbx,4)
je     1399 <par_monitor+0x289>
cmpl   $0x1,-0x10(%rcx,%rbx,4)
je     13b5 <par_monitor+0x2a5>
jmp    13c9 <par_monitor+0x2b9>
movss  (%r15,%rbx,4),%xmm0
movaps %xmm1,%xmm3
subss  %xmm0,%xmm3
movss  0xd32(%rip),%xmm2
ucomiss %xmm2,%xmm3
jae    12ef <par_monitor+0x1df>
movaps %xmm0,%xmm2
subss  %xmm1,%xmm2
ucomiss 0xd1f(%rip),%xmm2
jb     12fc <par_monitor+0x1ec>
movss  0xd19(%rip),%xmm2
addss  %xmm2,%xmm0
movss  %xmm0,(%r14,%rbx,4)
movaps %xmm0,%xmm1
ucomiss 0xd0d(%rip),%xmm1
jae    136a <par_monitor+0x25a>
movss  0xd07(%rip),%xmm0
ucomiss %xmm1,%xmm0
jb     152c <par_monitor+0x41c>
movl   $0xc2480000,(%r14,%rbx,4)
c2
jmp    152c <par_monitor+0x41c>
ucomiss 0xcda(%rip),%xmm1
jbe    13c9 <par_monitor+0x2b9>
movss  (%r15,%rbx,4),%xmm1
movss  %xmm1,(%r14,%rbx,4)
jmp    13c9 <par_monitor+0x2b9>
movss  (%r15,%rbx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xcd5(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     152c <par_monitor+0x41c>
movl   $0x3dcccccd,(%r15,%rbx,4)
3d
jmp    152c <par_monitor+0x41c>
movl   $0x42480000,(%r14,%rbx,4)
42
jmp    152c <par_monitor+0x41c>
lea    0x1(%rbx),%rax
movss  (%r14,%rax,4),%xmm0
addss  0xc93(%rip),%xmm0
movss  %xmm0,(%r14,%rax,4)
cmpl   $0x1,(%rcx,%rbx,4)
jne    12ad <par_monitor+0x19d>
movss  0xc77(%rip),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,(%r14,%rbx,4)
movaps %xmm0,%xmm1
cmpl   $0x1,-0x10(%rcx,%rbx,4)
jne    13c9 <par_monitor+0x2b9>
lea    -0x4(%rbx),%rax
movss  (%r14,%rax,4),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,(%r14,%rax,4)
xorpd  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
movss  (%r15,%rbx,4),%xmm0
jae    13e8 <par_monitor+0x2d8>
movaps %xmm0,%xmm2
divss  %xmm1,%xmm2
ucomiss 0xc1e(%rip),%xmm2
jb     13f9 <par_monitor+0x2e9>
divss  0xc14(%rip),%xmm0
movss  %xmm0,(%r14,%rbx,4)
movaps %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
movsd  0xc20(%rip),%xmm1
ucomisd %xmm0,%xmm1
jb     152c <par_monitor+0x41c>
movl   $0x3dcccccd,(%r14,%rbx,4)
3d
jmp    152c <par_monitor+0x41c>
movss  (%r15,%rbx,4),%xmm0
movaps %xmm1,%xmm2
subss  %xmm0,%xmm2
ucomiss 0xbd1(%rip),%xmm2
jae    1483 <par_monitor+0x373>
movaps %xmm0,%xmm2
subss  %xmm1,%xmm2
ucomiss 0xbc1(%rip),%xmm2
jb     152c <par_monitor+0x41c>
addss  0xbb7(%rip),%xmm0
movss  %xmm0,(%r14,%rbx,4)
jmp    152c <par_monitor+0x41c>
divss  (%r15,%rbx,4),%xmm1
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
call   1030 <fabs@plt>
cmp    $0xa,%eax
jl     1496 <par_monitor+0x386>
movss  (%r15,%rbx,4),%xmm0
mulss  0xb83(%rip),%xmm0
jmp    14c2 <par_monitor+0x3b2>
addss  0xb79(%rip),%xmm0
movss  %xmm0,(%r14,%rbx,4)
jmp    152c <par_monitor+0x41c>
movss  (%r14,%rbx,4),%xmm1
xorps  %xmm0,%xmm0
ucomiss %xmm1,%xmm0
movss  (%r15,%rbx,4),%xmm0
jae    14ba <par_monitor+0x3aa>
movaps %xmm0,%xmm2
divss  %xmm1,%xmm2
ucomiss 0xb4c(%rip),%xmm2
jb     14cb <par_monitor+0x3bb>
divss  0xb42(%rip),%xmm0
movss  %xmm0,(%r14,%rbx,4)
movaps %xmm0,%xmm1
ucomiss 0xb3a(%rip),%xmm1
jbe    14de <par_monitor+0x3ce>
movl   $0x41a00000,(%r14,%rbx,4)
41
jmp    152c <par_monitor+0x41c>
xorps  %xmm0,%xmm0
cvtss2sd %xmm1,%xmm0
movsd  0xb33(%rip),%xmm1
ucomisd %xmm0,%xmm1
jbe    152c <par_monitor+0x41c>
movl   $0x3c23d70a,(%r14,%rbx,4)
3c
jmp    152c <par_monitor+0x41c>
call   1030 <fabs@plt>
cmp    $0x1f4,%eax
jl     152c <par_monitor+0x41c>
movss  (%r15,%rbx,4),%xmm0
movss  %xmm0,(%r14,%rbx,4)
jmp    152c <par_monitor+0x41c>
movss  0xae1(%rip),%xmm0
ucomiss %xmm1,%xmm0
jb     152c <par_monitor+0x41c>
movl   $0xbffeb852,(%r14,%rbx,4)
bf
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define void @par_monitor(i32 %0, i32 %1, float* %2, i32* %3, float* %4, double* %5) {
%7 = alloca i32
%8 = alloca i32
%9 = alloca float*
%10 = alloca i32*
%11 = alloca float*
%12 = alloca double*
store i32 %0, i32* %7
store i32 %1, i32* %8
store float* %2, float** %9
store i32* %3, i32** %10
store float* %4, float** %11
store double* %5, double** %12
%13 = load float*, float** %9
%14 = load i32, i32* %7
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds float, float* %13, i64 %15
%17 = load float, float* %16
%18 = fpext float %17 to double
%19 = load double*, double** %12
%20 = load i32, i32* %8
%21 = sext i32 %20 to i64
%22 = getelementptr inbounds double, double* %19, i64 %21
%23 = load double, double* %22
%24 = fadd double %18, %23
%25 = fptrunc double %24 to float
%26 = load float*, float** %11
%27 = load i32, i32* %7
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds float, float* %26, i64 %28
store float %25, float* %29
%30 = load i32, i32* %7
%31 = add nsw i32 %30, 2
%32 = srem i32 %31, 10
%33 = icmp eq i32 %32, 0
br i1 %33, label %34, label %188
34: ; preds = %6
%35 = load float*, float** %11
%36 = load i32, i32* %7
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds float, float* %35, i64 %37
%39 = load float, float* %38
%40 = fpext float %39 to double
%41 = fcmp ogt double %40, 1.000000e+00
br i1 %41, label %42, label %120
42: ; preds = %34
%43 = load float*, float** %11
%44 = load i32, i32* %7
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds float, float* %43, i64 %45
%47 = load float, float* %46
%48 = fpext float %47 to double
%49 = fcmp olt double %48, 1.000000e+01
br i1 %49, label %50, label %120
50: ; preds = %42
%51 = load i32*, i32** %10
%52 = load i32, i32* %7
%53 = add nsw i32 %52, 1
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i32, i32* %51, i64 %54
%56 = load i32, i32* %55
%57 = icmp eq i32 %56, 1
br i1 %57, label %58, label %73
58: ; preds = %50
%59 = load float*, float** %11
%60 = load i32, i32* %7
%61 = add nsw i32 %60, 1
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds float, float* %59, i64 %62
%64 = load float, float* %63
%65 = fpext float %64 to double
%66 = fadd double %65, 9.000000e+01
%67 = fptrunc double %66 to float
%68 = load float*, float** %11
%69 = load i32, i32* %7
%70 = add nsw i32 %69, 1
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds float, float* %68, i64 %71
store float %67, float* %72
br label %73
73: ; preds = %58, %50
%74 = load i32*, i32** %10
%75 = load i32, i32* %7
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds i32, i32* %74, i64 %76
%78 = load i32, i32* %77
%79 = icmp eq i32 %78, 1
br i1 %79, label %80, label %93
80: ; preds = %73
%81 = load float*, float** %11
%82 = load i32, i32* %7
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds float, float* %81, i64 %83
%85 = load float, float* %84
%86 = fpext float %85 to double
%87 = fdiv double 1.000000e+00, %86
%88 = fptrunc double %87 to float
%89 = load float*, float** %11
%90 = load i32, i32* %7
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds float, float* %89, i64 %91
store float %88, float* %92
br label %93
93: ; preds = %80, %73
%94 = load i32*, i32** %10
%95 = load i32, i32* %7
%96 = sub nsw i32 %95, 4
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds i32, i32* %94, i64 %97
%99 = load i32, i32* %98
%100 = icmp eq i32 %99, 1
br i1 %100, label %101, label %119
101: ; preds = %93
%102 = load float*, float** %11
%103 = load i32, i32* %7
%104 = sub nsw i32 %103, 4
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds float, float* %102, i64 %105
%107 = load float, float* %106
%108 = load float*, float** %11
%109 = load i32, i32* %7
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds float, float* %108, i64 %110
%112 = load float, float* %111
%113 = fdiv float %107, %112
%114 = load float*, float** %11
%115 = load i32, i32* %7
%116 = sub nsw i32 %115, 4
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds float, float* %114, i64 %117
store float %113, float* %118
br label %119
119: ; preds = %101, %93
br label %139
120: ; preds = %42, %34
%121 = load float*, float** %11
%122 = load i32, i32* %7
%123 = sext i32 %122 to i64
%124 = getelementptr inbounds float, float* %121, i64 %123
%125 = load float, float* %124
%126 = fpext float %125 to double
%127 = fcmp ogt double %126, 1.000000e+01
br i1 %127, label %128, label %138
128: ; preds = %120
%129 = load float*, float** %9
%130 = load i32, i32* %7
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds float, float* %129, i64 %131
%133 = load float, float* %132
%134 = load float*, float** %11
%135 = load i32, i32* %7
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds float, float* %134, i64 %136
store float %133, float* %137
br label %138
138: ; preds = %128, %120
br label %139
139: ; preds = %138, %119
%140 = load float*, float** %11
%141 = load i32, i32* %7
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds float, float* %140, i64 %142
%144 = load float, float* %143
%145 = fpext float %144 to double
%146 = fcmp ole double %145, 0.000000e+00
br i1 %146, label %161, label %147
147: ; preds = %139
%148 = load float*, float** %9
%149 = load i32, i32* %7
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds float, float* %148, i64 %150
%152 = load float, float* %151
%153 = load float*, float** %11
%154 = load i32, i32* %7
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds float, float* %153, i64 %155
%157 = load float, float* %156
%158 = fdiv float %152, %157
%159 = fpext float %158 to double
%160 = fcmp oge double %159, 1.000000e+01
br i1 %160, label %161, label %174
161: ; preds = %147, %139
%162 = load float*, float** %9
%163 = load i32, i32* %7
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds float, float* %162, i64 %164
%166 = load float, float* %165
%167 = fpext float %166 to double
%168 = fdiv double %167, 1.000000e+01
%169 = fptrunc double %168 to float
%170 = load float*, float** %11
%171 = load i32, i32* %7
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds float, float* %170, i64 %172
store float %169, float* %173
br label %174
174: ; preds = %161, %147
%175 = load float*, float** %11
%176 = load i32, i32* %7
%177 = sext i32 %176 to i64
%178 = getelementptr inbounds float, float* %175, i64 %177
%179 = load float, float* %178
%180 = fpext float %179 to double
%181 = fcmp ole double %180, 1.000000e-01
br i1 %181, label %182, label %187
182: ; preds = %174
%183 = load float*, float** %11
%184 = load i32, i32* %7
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds float, float* %183, i64 %185
store float 0x3FB99999A0000000, float* %186
br label %187
187: ; preds = %182, %174
br label %549
188: ; preds = %6
%189 = load i32, i32* %7
%190 = add nsw i32 %189, 7
%191 = srem i32 %190, 10
%192 = icmp eq i32 %191, 0
br i1 %192, label %193, label %276
193: ; preds = %188
%194 = load float*, float** %11
%195 = load i32, i32* %7
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds float, float* %194, i64 %196
%198 = load float, float* %197
%199 = load float*, float** %9
%200 = load i32, i32* %7
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds float, float* %199, i64 %201
%203 = load float, float* %202
%204 = fsub float %198, %203
%205 = fpext float %204 to double
%206 = fcmp oge double %205, 1.000000e+01
br i1 %206, label %207, label %220
207: ; preds = %193
%208 = load float*, float** %9
%209 = load i32, i32* %7
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds float, float* %208, i64 %210
%212 = load float, float* %211
%213 = fpext float %212 to double
%214 = fadd double %213, 1.000000e+01
%215 = fptrunc double %214 to float
%216 = load float*, float** %11
%217 = load i32, i32* %7
%218 = sext i32 %217 to i64
%219 = getelementptr inbounds float, float* %216, i64 %218
store float %215, float* %219
br label %248
220: ; preds = %193
%221 = load float*, float** %9
%222 = load i32, i32* %7
%223 = sext i32 %222 to i64
%224 = getelementptr inbounds float, float* %221, i64 %223
%225 = load float, float* %224
%226 = load float*, float** %11
%227 = load i32, i32* %7
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds float, float* %226, i64 %228
%230 = load float, float* %229
%231 = fsub float %225, %230
%232 = fpext float %231 to double
%233 = fcmp oge double %232, 1.000000e+01
br i1 %233, label %234, label %247
234: ; preds = %220
%235 = load float*, float** %9
%236 = load i32, i32* %7
%237 = sext i32 %236 to i64
%238 = getelementptr inbounds float, float* %235, i64 %237
%239 = load float, float* %238
%240 = fpext float %239 to double
%241 = fsub double %240, 1.000000e+01
%242 = fptrunc double %241 to float
%243 = load float*, float** %11
%244 = load i32, i32* %7
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds float, float* %243, i64 %245
store float %242, float* %246
br label %247
247: ; preds = %234, %220
br label %248
248: ; preds = %247, %207
%249 = load float*, float** %11
%250 = load i32, i32* %7
%251 = sext i32 %250 to i64
%252 = getelementptr inbounds float, float* %249, i64 %251
%253 = load float, float* %252
%254 = fpext float %253 to double
%255 = fcmp oge double %254, 5.000000e+01
br i1 %255, label %256, label %261
256: ; preds = %248
%257 = load float*, float** %11
%258 = load i32, i32* %7
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds float, float* %257, i64 %259
store float 5.000000e+01, float* %260
br label %275
261: ; preds = %248
%262 = load float*, float** %11
%263 = load i32, i32* %7
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds float, float* %262, i64 %264
%266 = load float, float* %265
%267 = fpext float %266 to double
%268 = fcmp ole double %267, -5.000000e+01
br i1 %268, label %269, label %274
269: ; preds = %261
%270 = load float*, float** %11
%271 = load i32, i32* %7
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds float, float* %270, i64 %272
store float -5.000000e+01, float* %273
br label %274
274: ; preds = %269, %261
br label %275
275: ; preds = %274, %256
br label %549
276: ; preds = %188
%277 = load i32, i32* %7
%278 = add nsw i32 %277, 6
%279 = srem i32 %278, 10
%280 = icmp eq i32 %279, 0
br i1 %280, label %281, label %295
281: ; preds = %276
%282 = load float*, float** %9
%283 = load i32, i32* %7
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds float, float* %282, i64 %284
%286 = load float, float* %285
%287 = fpext float %286 to double
%288 = fcmp ole double %287, 1.000000e-01
br i1 %288, label %289, label %294
289: ; preds = %281
%290 = load float*, float** %9
%291 = load i32, i32* %7
%292 = sext i32 %291 to i64
%293 = getelementptr inbounds float, float* %290, i64 %292
store float 0x3FB99999A0000000, float* %293
br label %294
294: ; preds = %289, %281
br label %549
295: ; preds = %276
%296 = load i32, i32* %7
%297 = add nsw i32 %296, 5
%298 = srem i32 %297, 10
%299 = icmp eq i32 %298, 0
br i1 %299, label %300, label %393
300: ; preds = %295
%301 = load float*, float** %11
%302 = load i32, i32* %7
%303 = sext i32 %302 to i64
%304 = getelementptr inbounds float, float* %301, i64 %303
%305 = load float, float* %304
%306 = load float*, float** %9
%307 = load i32, i32* %7
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds float, float* %306, i64 %308
%310 = load float, float* %309
%311 = fdiv float %305, %310
%312 = fpext float %311 to double
%313 = call i32 @fabs(double %312)
%314 = sitofp i32 %313 to double
%315 = fcmp oge double %314, 1.000000e+01
br i1 %315, label %316, label %329
316: ; preds = %300
%317 = load float*, float** %9
%318 = load i32, i32* %7
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds float, float* %317, i64 %319
%321 = load float, float* %320
%322 = fpext float %321 to double
%323 = fmul double %322, 1.000000e+01
%324 = fptrunc double %323 to float
%325 = load float*, float** %11
%326 = load i32, i32* %7
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds float, float* %325, i64 %327
store float %324, float* %328
br label %365
329: ; preds = %300
%330 = load float*, float** %11
%331 = load i32, i32* %7
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds float, float* %330, i64 %332
%334 = load float, float* %333
%335 = fpext float %334 to double
%336 = fcmp ole double %335, 0.000000e+00
br i1 %336, label %351, label %337
337: ; preds = %329
%338 = load float*, float** %9
%339 = load i32, i32* %7
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds float, float* %338, i64 %340
%342 = load float, float* %341
%343 = load float*, float** %11
%344 = load i32, i32* %7
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds float, float* %343, i64 %345
%347 = load float, float* %346
%348 = fdiv float %342, %347
%349 = fpext float %348 to double
%350 = fcmp oge double %349, 1.000000e+01
br i1 %350, label %351, label %364
351: ; preds = %337, %329
%352 = load float*, float** %9
%353 = load i32, i32* %7
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds float, float* %352, i64 %354
%356 = load float, float* %355
%357 = fpext float %356 to double
%358 = fdiv double %357, 1.000000e+01
%359 = fptrunc double %358 to float
%360 = load float*, float** %11
%361 = load i32, i32* %7
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds float, float* %360, i64 %362
store float %359, float* %363
br label %364
364: ; preds = %351, %337
br label %365
365: ; preds = %364, %316
%366 = load float*, float** %11
%367 = load i32, i32* %7
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds float, float* %366, i64 %368
%370 = load float, float* %369
%371 = fpext float %370 to double
%372 = fcmp ogt double %371, 2.000000e+01
br i1 %372, label %373, label %378
373: ; preds = %365
%374 = load float*, float** %11
%375 = load i32, i32* %7
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds float, float* %374, i64 %376
store float 2.000000e+01, float* %377
br label %392
378: ; preds = %365
%379 = load float*, float** %11
%380 = load i32, i32* %7
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds float, float* %379, i64 %381
%383 = load float, float* %382
%384 = fpext float %383 to double
%385 = fcmp olt double %384, 1.000000e-02
br i1 %385, label %386, label %391
386: ; preds = %378
%387 = load float*, float** %11
%388 = load i32, i32* %7
%389 = sext i32 %388 to i64
%390 = getelementptr inbounds float, float* %387, i64 %389
store float 0x3F847AE140000000, float* %390
br label %391
391: ; preds = %386, %378
br label %392
392: ; preds = %391, %373
br label %549
393: ; preds = %295
%394 = load i32, i32* %7
%395 = add nsw i32 %394, 9
%396 = srem i32 %395, 10
%397 = icmp eq i32 %396, 0
br i1 %397, label %403, label %398
398: ; preds = %393
%399 = load i32, i32* %7
%400 = add nsw i32 %399, 8
%401 = srem i32 %400, 10
%402 = icmp eq i32 %401, 0
br i1 %402, label %403, label %459
403: ; preds = %398, %393
%404 = load float*, float** %11
%405 = load i32, i32* %7
%406 = sext i32 %405 to i64
%407 = getelementptr inbounds float, float* %404, i64 %406
%408 = load float, float* %407
%409 = load float*, float** %9
%410 = load i32, i32* %7
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds float, float* %409, i64 %411
%413 = load float, float* %412
%414 = fsub float %408, %413
%415 = fpext float %414 to double
%416 = fcmp oge double %415, 1.000000e+01
br i1 %416, label %417, label %430
417: ; preds = %403
%418 = load float*, float** %9
%419 = load i32, i32* %7
%420 = sext i32 %419 to i64
%421 = getelementptr inbounds float, float* %418, i64 %420
%422 = load float, float* %421
%423 = fpext float %422 to double
%424 = fadd double %423, 1.000000e+01
%425 = fptrunc double %424 to float
%426 = load float*, float** %11
%427 = load i32, i32* %7
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds float, float* %426, i64 %428
store float %425, float* %429
br label %458
430: ; preds = %403
%431 = load float*, float** %9
%432 = load i32, i32* %7
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds float, float* %431, i64 %433
%435 = load float, float* %434
%436 = load float*, float** %11
%437 = load i32, i32* %7
%438 = sext i32 %437 to i64
%439 = getelementptr inbounds float, float* %436, i64 %438
%440 = load float, float* %439
%441 = fsub float %435, %440
%442 = fpext float %441 to double
%443 = fcmp oge double %442, 1.000000e+01
br i1 %443, label %444, label %457
444: ; preds = %430
%445 = load float*, float** %9
%446 = load i32, i32* %7
%447 = sext i32 %446 to i64
%448 = getelementptr inbounds float, float* %445, i64 %447
%449 = load float, float* %448
%450 = fpext float %449 to double
%451 = fsub double %450, 1.000000e+01
%452 = fptrunc double %451 to float
%453 = load float*, float** %11
%454 = load i32, i32* %7
%455 = sext i32 %454 to i64
%456 = getelementptr inbounds float, float* %453, i64 %455
store float %452, float* %456
br label %457
457: ; preds = %444, %430
br label %458
458: ; preds = %457, %417
br label %549
459: ; preds = %398
%460 = load i32, i32* %7
%461 = add nsw i32 %460, 1
%462 = srem i32 %461, 10
%463 = icmp eq i32 %462, 0
br i1 %463, label %464, label %484
464: ; preds = %459
%465 = load double*, double** %12
%466 = load i32, i32* %8
%467 = sext i32 %466 to i64
%468 = getelementptr inbounds double, double* %465, i64 %467
%469 = load double, double* %468
%470 = call i32 @fabs(double %469)
%471 = sitofp i32 %470 to double
%472 = fcmp oge double %471, 5.000000e+02
br i1 %472, label %473, label %483
473: ; preds = %464
%474 = load float*, float** %9
%475 = load i32, i32* %7
%476 = sext i32 %475 to i64
%477 = getelementptr inbounds float, float* %474, i64 %476
%478 = load float, float* %477
%479 = load float*, float** %11
%480 = load i32, i32* %7
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds float, float* %479, i64 %481
store float %478, float* %482
br label %483
483: ; preds = %473, %464
br label %549
484: ; preds = %459
%485 = load i32, i32* %7
%486 = srem i32 %485, 10
%487 = icmp eq i32 %486, 0
br i1 %487, label %488, label %502
488: ; preds = %484
%489 = load float*, float** %11
%490 = load i32, i32* %7
%491 = sext i32 %490 to i64
%492 = getelementptr inbounds float, float* %489, i64 %491
%493 = load float, float* %492
%494 = fpext float %493 to double
%495 = fcmp ole double %494, -2.000000e+00
br i1 %495, label %496, label %501
496: ; preds = %488
%497 = load float*, float** %11
%498 = load i32, i32* %7
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds float, float* %497, i64 %499
store float 0xBFFFD70A40000000, float* %500
br label %501
501: ; preds = %496, %488
br label %549
502: ; preds = %484
%503 = load i32, i32* %7
%504 = add nsw i32 %503, 3
%505 = srem i32 %504, 10
%506 = icmp eq i32 %505, 0
br i1 %506, label %512, label %507
507: ; preds = %502
%508 = load i32, i32* %7
%509 = add nsw i32 %508, 4
%510 = srem i32 %509, 10
%511 = icmp eq i32 %510, 0
br i1 %511, label %512, label %525
512: ; preds = %507, %502
%513 = load float*, float** %9
%514 = load i32, i32* %7
%515 = sext i32 %514 to i64
%516 = getelementptr inbounds float, float* %513, i64 %515
%517 = load float, float* %516
%518 = fpext float %517 to double
%519 = fcmp olt double %518, 0.000000e+00
br i1 %519, label %520, label %525
520: ; preds = %512
%521 = load float*, float** %9
%522 = load i32, i32* %7
%523 = sext i32 %522 to i64
%524 = getelementptr inbounds float, float* %521, i64 %523
store float 0x3F847AE140000000, float* %524
br label %525
525: ; preds = %520, %512, %507
%526 = load i32, i32* %7
%527 = add nsw i32 %526, 3
%528 = srem i32 %527, 10
%529 = icmp eq i32 %528, 0
br i1 %529, label %535, label %530
530: ; preds = %525
%531 = load i32, i32* %7
%532 = add nsw i32 %531, 4
%533 = srem i32 %532, 10
%534 = icmp eq i32 %533, 0
br i1 %534, label %535, label %548
535: ; preds = %530, %525
%536 = load float*, float** %11
%537 = load i32, i32* %7
%538 = sext i32 %537 to i64
%539 = getelementptr inbounds float, float* %536, i64 %538
%540 = load float, float* %539
%541 = fpext float %540 to double
%542 = fcmp ole double %541, 0.000000e+00
br i1 %542, label %543, label %548
543: ; preds = %535
%544 = load float*, float** %11
%545 = load i32, i32* %7
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds float, float* %544, i64 %546
store float 0x3F847AE140000000, float* %547
br label %548
548: ; preds = %543, %535, %530
br label %549
549: ; preds = %548, %501, %483, %458, %392, %294, %275, %187
ret void
}

LLVM IR (-O2):
define void @par_monitor(i32 %0, i32 %1, float* nocapture %2, i32* nocapture %3, float* %4, double* nocapture %5) {
%7 = sext i32 %0 to i64
%8 = getelementptr inbounds float, float* %2, i64 %7
%9 = load float, float* %8
%10 = fpext float %9 to double
%11 = sext i32 %1 to i64
%12 = getelementptr inbounds double, double* %5, i64 %11
%13 = load double, double* %12
%14 = fadd double %13, %10
%15 = fptrunc double %14 to float
%16 = getelementptr inbounds float, float* %4, i64 %7
store float %15, float* %16
%17 = add nsw i32 %0, 2
%18 = srem i32 %17, 10
%19 = icmp eq i32 %18, 0
br i1 %19, label %20, label %69
20: ; preds = %6
%21 = fcmp ogt float %15, 1.000000e+00
%22 = fcmp olt float %15, 1.000000e+01
%23 = and i1 %21, %22
br i1 %23, label %24, label %51
24: ; preds = %20
%25 = add nsw i32 %0, 1
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds i32, i32* %3, i64 %26
%28 = load i32, i32* %27
%29 = icmp eq i32 %28, 1
br i1 %29, label %30, label %34
30: ; preds = %24
%31 = getelementptr inbounds float, float* %4, i64 %26
%32 = load float, float* %31
%33 = fadd float %32, 9.000000e+01
store float %33, float* %31
br label %34
34: ; preds = %30, %24
%35 = getelementptr inbounds i32, i32* %3, i64 %7
%36 = load i32, i32* %35
%37 = icmp eq i32 %36, 1
br i1 %37, label %38, label %40
38: ; preds = %34
%39 = fdiv float 1.000000e+00, %15
store float %39, float* %16
br label %40
40: ; preds = %38, %34
%41 = phi float [ %39, %38 ], [ %15, %34 ]
%42 = add nsw i32 %0, -4
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds i32, i32* %3, i64 %43
%45 = load i32, i32* %44
%46 = icmp eq i32 %45, 1
br i1 %46, label %47, label %55
47: ; preds = %40
%48 = getelementptr inbounds float, float* %4, i64 %43
%49 = load float, float* %48
%50 = fdiv float %49, %41
store float %50, float* %48
br label %55
51: ; preds = %20
%52 = fcmp ogt float %15, 1.000000e+01
br i1 %52, label %53, label %55
53: ; preds = %51
%54 = load float, float* %8
store float %54, float* %16
br label %55
55: ; preds = %51, %40, %53, %47
%56 = phi float [ %54, %53 ], [ %41, %47 ], [ %41, %40 ], [ %15, %51 ]
%57 = fcmp ugt float %56, 0.000000e+00
%58 = load float, float* %8
%59 = fdiv float %58, %56
%60 = fcmp ult float %59, 1.000000e+01
%61 = select i1 %57, i1 %60, i1 false
br i1 %61, label %64, label %62
62: ; preds = %55
%63 = fdiv float %58, 1.000000e+01
store float %63, float* %16
br label %64
64: ; preds = %55, %62
%65 = phi float [ %63, %62 ], [ %56, %55 ]
%66 = fpext float %65 to double
%67 = fcmp ugt double %66, 1.000000e-01
br i1 %67, label %188, label %68
68: ; preds = %64
store float 0x3FB99999A0000000, float* %16
br label %188
69: ; preds = %6
%70 = add nsw i32 %0, 7
%71 = srem i32 %70, 10
%72 = icmp eq i32 %71, 0
br i1 %72, label %73, label %90
73: ; preds = %69
%74 = load float, float* %8
%75 = fsub float %15, %74
%76 = fcmp ult float %75, 1.000000e+01
br i1 %76, label %77, label %80
77: ; preds = %73
%78 = fsub float %74, %15
%79 = fcmp ult float %78, 1.000000e+01
br i1 %79, label %83, label %80
80: ; preds = %77, %73
%81 = phi float [ 1.000000e+01, %73 ], [ -1.000000e+01, %77 ]
%82 = fadd float %74, %81
store float %82, float* %16
br label %83
83: ; preds = %80, %77
%84 = phi float [ %15, %77 ], [ %82, %80 ]
%85 = fcmp ult float %84, 5.000000e+01
br i1 %85, label %87, label %86
86: ; preds = %83
store float 5.000000e+01, float* %16
br label %188
87: ; preds = %83
%88 = fcmp ugt float %84, -5.000000e+01
br i1 %88, label %188, label %89
89: ; preds = %87
store float -5.000000e+01, float* %16
br label %188
90: ; preds = %69
%91 = add nsw i32 %0, 6
%92 = srem i32 %91, 10
%93 = icmp eq i32 %92, 0
br i1 %93, label %94, label %99
94: ; preds = %90
%95 = load float, float* %8
%96 = fpext float %95 to double
%97 = fcmp ugt double %96, 1.000000e-01
br i1 %97, label %188, label %98
98: ; preds = %94
store float 0x3FB99999A0000000, float* %8
br label %188
99: ; preds = %90
%100 = add nsw i32 %0, 5
%101 = srem i32 %100, 10
%102 = icmp eq i32 %101, 0
br i1 %102, label %103, label %131
103: ; preds = %99
%104 = load float, float* %8
%105 = fdiv float %15, %104
%106 = fpext float %105 to double
%107 = tail call i32 @fabs(double %106)
%108 = icmp sgt i32 %107, 9
br i1 %108, label %109, label %112
109: ; preds = %103
%110 = load float, float* %8
%111 = fmul float %110, 1.000000e+01
br label %121
112: ; preds = %103
%113 = load float, float* %16
%114 = fcmp ugt float %113, 0.000000e+00
%115 = load float, float* %8
%116 = fdiv float %115, %113
%117 = fcmp ult float %116, 1.000000e+01
%118 = select i1 %114, i1 %117, i1 false
br i1 %118, label %123, label %119
119: ; preds = %112
%120 = fdiv float %115, 1.000000e+01
br label %121
121: ; preds = %109, %119
%122 = phi float [ %120, %119 ], [ %111, %109 ]
store float %122, float* %16
br label %123
123: ; preds = %121, %112
%124 = phi float [ %113, %112 ], [ %122, %121 ]
%125 = fcmp ogt float %124, 2.000000e+01
br i1 %125, label %126, label %127
126: ; preds = %123
store float 2.000000e+01, float* %16
br label %188
127: ; preds = %123
%128 = fpext float %124 to double
%129 = fcmp olt double %128, 1.000000e-02
br i1 %129, label %130, label %188
130: ; preds = %127
store float 0x3F847AE140000000, float* %16
br label %188
131: ; preds = %99
%132 = add nsw i32 %0, 9
%133 = srem i32 %132, 10
%134 = icmp eq i32 %133, 0
br i1 %134, label %139, label %135
135: ; preds = %131
%136 = add nsw i32 %0, 8
%137 = srem i32 %136, 10
%138 = icmp eq i32 %137, 0
br i1 %138, label %139, label %150
139: ; preds = %135, %131
%140 = load float, float* %8
%141 = fsub float %15, %140
%142 = fcmp ult float %141, 1.000000e+01
br i1 %142, label %145, label %143
143: ; preds = %139
%144 = fadd float %140, 1.000000e+01
store float %144, float* %16
br label %188
145: ; preds = %139
%146 = fsub float %140, %15
%147 = fcmp ult float %146, 1.000000e+01
br i1 %147, label %188, label %148
148: ; preds = %145
%149 = fadd float %140, -1.000000e+01
store float %149, float* %16
br label %188
150: ; preds = %135
%151 = add nsw i32 %0, 1
%152 = srem i32 %151, 10
%153 = icmp eq i32 %152, 0
br i1 %153, label %154, label %159
154: ; preds = %150
%155 = tail call i32 @fabs(double %13)
%156 = icmp sgt i32 %155, 499
br i1 %156, label %157, label %188
157: ; preds = %154
%158 = load float, float* %8
store float %158, float* %16
br label %188
159: ; preds = %150
%160 = srem i32 %0, 10
%161 = icmp eq i32 %160, 0
br i1 %161, label %162, label %165
162: ; preds = %159
%163 = fcmp ugt float %15, -2.000000e+00
br i1 %163, label %188, label %164
164: ; preds = %162
store float 0xBFFFD70A40000000, float* %16
br label %188
165: ; preds = %159
%166 = add nsw i32 %0, 3
%167 = srem i32 %166, 10
%168 = icmp eq i32 %167, 0
br i1 %168, label %173, label %169
169: ; preds = %165
%170 = add nsw i32 %0, 4
%171 = srem i32 %170, 10
%172 = icmp eq i32 %171, 0
br i1 %172, label %173, label %181
173: ; preds = %169, %165
%174 = load float, float* %8
%175 = fcmp olt float %174, 0.000000e+00
br i1 %175, label %176, label %177
176: ; preds = %173
store float 0x3F847AE140000000, float* %8
br label %177
177: ; preds = %176, %173
br i1 %168, label %184, label %178
178: ; preds = %177
%179 = add nsw i32 %0, 4
%180 = srem i32 %179, 10
br label %181
181: ; preds = %178, %169
%182 = phi i32 [ %180, %178 ], [ %171, %169 ]
%183 = icmp eq i32 %182, 0
br i1 %183, label %184, label %188
184: ; preds = %181, %177
%185 = load float, float* %16
%186 = fcmp ugt float %185, 0.000000e+00
br i1 %186, label %188, label %187
187: ; preds = %184
store float 0x3F847AE140000000, float* %16
br label %188
188: ; preds = %181, %184, %187, %162, %164, %154, %157, %143, %148, %145, %126, %130, %127, %94, %98, %86, %89, %87, %64, %68
ret void
}