#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*/ fprintf(int /*<<< orphan*/, char *, char *, int);
int /*<<< orphan*/ stderr;
int lpc_clmp(float *w, float delta, int p) {
  int i, j, unsorted;
  float tmp, d, step1, step2;
  for (j = 0, unsorted = 1; unsorted && (j < 10); j++) {
    for (i = 1, unsorted = 0; i < p; i++)
      if (w[i] > w[i + 1]) {
        tmp = w[i + 1];
        w[i + 1] = w[i];
        w[i] = tmp;
        unsorted = 1;
      }
  }
  if (!unsorted) {
    for (j = 0; j < 10; j++) {
      for (i = 1; i < p; i++) {
        if ((d = w[i + 1] - w[i]) < delta) {
          step1 = step2 = (delta - d) / 2.0;
          if (i == 1 && (w[i] < delta)) {
            step1 = w[i] / 2.0;
          } else if (i > 1) {
            if ((tmp = w[i] - w[i - 1]) < delta)
              step1 = 0;
            else if (tmp < 2 * delta)
              step1 = (tmp - delta) / 2.0;
          }
          if (i == (p - 1) && (w[i + 1] > (1.0 - delta))) {
            step2 = (1 - w[i + 1]) / 2.0;
          } else if (i < (p - 1)) {
            if ((tmp = w[i + 2] - w[i + 1]) < delta)
              step2 = 0;
            else if (tmp < 2 * delta)
              step2 = (tmp - delta) / 2.0;
          }
          w[i] -= step1;
          w[i + 1] += step2;
        }
      }
    }
  }
  for (j = 1; j < p; j++)
    if ((w[j + 1] - w[j]) < 0.99 * delta)
      (void)fprintf(stderr, "%s: LSPs not separated by enough (line %d)\n",
                    "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                    "outputs/2022-01-22/02-19-57/repos/arash-ostadzadeh/QUAD/"
                    "refs/heads/master/Benchmarks/melp1.2/lpc_lib.c",
                    218);
  if (unsorted)
    (void)fprintf(stderr, "%s: LSPs still unsorted (line %d)\n",
                  "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                  "outputs/2022-01-22/02-19-57/repos/arash-ostadzadeh/QUAD/"
                  "refs/heads/master/Benchmarks/melp1.2/lpc_lib.c",
                  222);
  return (0);
}


x86 assembly (clang, -O0):
<lpc_clmp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
movss  %xmm0,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x1,-0x1c(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x1c(%rbp)
mov    %al,-0x2d(%rbp)
je     114b <lpc_clmp+0x3b>
cmpl   $0xa,-0x18(%rbp)
setl   %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
test   $0x1,%al
jne    115b <lpc_clmp+0x4b>
jmp    120e <lpc_clmp+0xfe>
movl   $0x1,-0x14(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    11fb <lpc_clmp+0xeb>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
ucomiss (%rax,%rcx,4),%xmm0
jbe    11e8 <lpc_clmp+0xd8>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x20(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movl   $0x1,-0x1c(%rbp)
jmp    11ed <lpc_clmp+0xdd>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1169 <lpc_clmp+0x59>
jmp    1200 <lpc_clmp+0xf0>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1132 <lpc_clmp+0x22>
cmpl   $0x0,-0x1c(%rbp)
jne    14fe <lpc_clmp+0x3ee>
movl   $0x0,-0x18(%rbp)
cmpl   $0xa,-0x18(%rbp)
jge    14f9 <lpc_clmp+0x3e9>
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    14e6 <lpc_clmp+0x3d6>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm1
movss  %xmm1,-0x24(%rbp)
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    14d3 <lpc_clmp+0x3c3>
movss  -0xc(%rbp),%xmm0
subss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd7c(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  %xmm0,-0x28(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    12e6 <lpc_clmp+0x1d6>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    12e6 <lpc_clmp+0x1d6>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd2c(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    137c <lpc_clmp+0x26c>
cmpl   $0x1,-0x14(%rbp)
jle    1377 <lpc_clmp+0x267>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
movss  %xmm1,-0x20(%rbp)
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    132f <lpc_clmp+0x21f>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    1372 <lpc_clmp+0x262>
movss  -0x20(%rbp),%xmm1
movss  0xcdc(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    136d <lpc_clmp+0x25d>
movss  -0x20(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xca0(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    1372 <lpc_clmp+0x262>
jmp    1377 <lpc_clmp+0x267>
jmp    137c <lpc_clmp+0x26c>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    13fa <lpc_clmp+0x2ea>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0xc(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xc54(%rip),%xmm1
subsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    13fa <lpc_clmp+0x2ea>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  0xc45(%rip),%xmm0
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xc18(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    149c <lpc_clmp+0x38c>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1497 <lpc_clmp+0x387>
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subss  (%rax,%rcx,4),%xmm1
movss  %xmm1,-0x20(%rbp)
movss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    144f <lpc_clmp+0x33f>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    1492 <lpc_clmp+0x382>
movss  -0x20(%rbp),%xmm1
movss  0xbbc(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    148d <lpc_clmp+0x37d>
movss  -0x20(%rbp),%xmm0
subss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb80(%rip),%xmm1
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x2c(%rbp)
jmp    1492 <lpc_clmp+0x382>
jmp    1497 <lpc_clmp+0x387>
jmp    149c <lpc_clmp+0x38c>
movss  -0x28(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movss  -0x2c(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    14d8 <lpc_clmp+0x3c8>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1230 <lpc_clmp+0x120>
jmp    14eb <lpc_clmp+0x3db>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    121f <lpc_clmp+0x10f>
jmp    14fe <lpc_clmp+0x3ee>
movl   $0x1,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1587 <lpc_clmp+0x477>
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x18(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movss  -0xc(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movsd  0xacb(%rip),%xmm0
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    1574 <lpc_clmp+0x464>
mov    0x2a86(%rip),%rax
mov    (%rax),%edi
lea    0xabd(%rip),%rsi
lea    0xae2(%rip),%rdx
mov    $0xda,%ecx
call   1030 <fprintf@plt>
jmp    1579 <lpc_clmp+0x469>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1505 <lpc_clmp+0x3f5>
cmpl   $0x0,-0x1c(%rbp)
je     15b2 <lpc_clmp+0x4a2>
mov    0x2a48(%rip),%rax
mov    (%rax),%edi
lea    0xb4a(%rip),%rsi
lea    0xaa4(%rip),%rdx
mov    $0xde,%ecx
call   1030 <fprintf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lpc_clmp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rdi,%rbx
mov    %esi,%r12d
lea    -0x1(%r12),%r8
mov    %r8,%rcx
and    $0xfffffffffffffffe,%rcx
neg    %rcx
xor    %r9d,%r9d
cs nopw 0x0(%rax,%rax,1)
cmp    $0x2,%esi
jl     1201 <lpc_clmp+0xf1>
movss  0x4(%rbx),%xmm1
jne    1190 <lpc_clmp+0x80>
xor    %edi,%edi
mov    $0x1,%ebp
test   $0x1,%r8b
je     1178 <lpc_clmp+0x68>
movss  0x4(%rbx,%rbp,4),%xmm2
ucomiss %xmm2,%xmm1
jbe    1178 <lpc_clmp+0x68>
movss  %xmm1,0x4(%rbx,%rbp,4)
movss  %xmm2,(%rbx,%rbp,4)
mov    $0x1,%edi
test   %edi,%edi
je     11f7 <lpc_clmp+0xe7>
lea    0x1(%r9),%eax
cmp    $0x9,%r9d
mov    %eax,%r9d
jb     1140 <lpc_clmp+0x30>
jmp    11f7 <lpc_clmp+0xe7>
nopl   0x0(%rax,%rax,1)
xor    %edi,%edi
mov    $0x1,%eax
jmp    11be <lpc_clmp+0xae>
nopl   0x0(%rax)
movss  %xmm1,0x8(%rbx,%rax,4)
movss  %xmm2,0x4(%rbx,%rax,4)
mov    $0x1,%edi
lea    (%rcx,%rbp,1),%rdx
mov    %rbp,%rax
cmp    $0x1,%rdx
je     1157 <lpc_clmp+0x47>
movss  0x4(%rbx,%rax,4),%xmm2
ucomiss %xmm2,%xmm1
jbe    11e0 <lpc_clmp+0xd0>
movss  %xmm1,0x4(%rbx,%rax,4)
movss  %xmm2,(%rbx,%rax,4)
mov    $0x1,%edi
jmp    11e3 <lpc_clmp+0xd3>
nopl   0x0(%rax,%rax,1)
movaps %xmm2,%xmm1
lea    0x2(%rax),%rbp
movss  0x8(%rbx,%rax,4),%xmm2
ucomiss %xmm2,%xmm1
ja     11a0 <lpc_clmp+0x90>
movaps %xmm2,%xmm1
jmp    11b1 <lpc_clmp+0xa1>
mov    $0x1,%al
test   %edi,%edi
jne    13dd <lpc_clmp+0x2cd>
movaps %xmm0,%xmm9
addss  %xmm0,%xmm9
lea    -0x1(%rsi),%eax
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movsd  0xde3(%rip),%xmm10
subsd  %xmm1,%xmm10
movslq %eax,%r8
xor    %edx,%edx
movss  0xde1(%rip),%xmm3
movss  0xddc(%rip),%xmm8
jmp    124c <lpc_clmp+0x13c>
nopw   0x0(%rax,%rax,1)
add    $0x1,%edx
cmp    $0xa,%edx
je     13db <lpc_clmp+0x2cb>
cmp    $0x2,%esi
jl     1240 <lpc_clmp+0x130>
movss  0x4(%rbx),%xmm6
movss  0x8(%rbx),%xmm5
movaps %xmm5,%xmm1
subss  %xmm6,%xmm1
ucomiss %xmm1,%xmm0
jbe    12fa <lpc_clmp+0x1ea>
movaps %xmm0,%xmm7
subss  %xmm1,%xmm7
mulss  %xmm3,%xmm7
cmp    $0x1,%eax
jne    1297 <lpc_clmp+0x187>
xorps  %xmm1,%xmm1
cvtss2sd %xmm5,%xmm1
ucomisd %xmm10,%xmm1
jbe    1297 <lpc_clmp+0x187>
movaps %xmm8,%xmm4
subss  %xmm5,%xmm4
mulss  %xmm3,%xmm4
jmp    12d0 <lpc_clmp+0x1c0>
movaps %xmm7,%xmm4
cmp    $0x3,%esi
jb     12d0 <lpc_clmp+0x1c0>
movss  0xc(%rbx),%xmm1
subss  %xmm5,%xmm1
xorps  %xmm4,%xmm4
ucomiss %xmm1,%xmm0
ja     12d0 <lpc_clmp+0x1c0>
ucomiss %xmm1,%xmm9
movaps %xmm7,%xmm4
jbe    12d0 <lpc_clmp+0x1c0>
subss  %xmm0,%xmm1
mulss  %xmm3,%xmm1
movaps %xmm1,%xmm4
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps %xmm6,%xmm1
mulss  %xmm3,%xmm1
movaps %xmm6,%xmm2
cmpltss %xmm0,%xmm2
andps  %xmm2,%xmm1
andnps %xmm7,%xmm2
orps   %xmm1,%xmm2
subss  %xmm2,%xmm6
movss  %xmm6,0x4(%rbx)
addss  %xmm4,%xmm5
movss  %xmm5,0x8(%rbx)
cmp    $0x2,%esi
je     1240 <lpc_clmp+0x130>
mov    $0x2,%edi
jmp    133e <lpc_clmp+0x22e>
nopw   0x0(%rax,%rax,1)
movaps %xmm8,%xmm7
subss  %xmm6,%xmm7
mulss  %xmm3,%xmm7
subss  %xmm1,%xmm5
movss  %xmm5,(%rbx,%rdi,4)
addss  %xmm7,%xmm6
movss  %xmm6,0x4(%rbx,%rdi,4)
movaps %xmm6,%xmm5
mov    %rcx,%rdi
cmp    %rcx,%r12
je     1240 <lpc_clmp+0x130>
lea    0x1(%rdi),%rcx
movss  0x4(%rbx,%rdi,4),%xmm6
movaps %xmm6,%xmm1
subss  %xmm5,%xmm1
ucomiss %xmm1,%xmm0
jbe    132f <lpc_clmp+0x21f>
movaps %xmm0,%xmm4
subss  %xmm1,%xmm4
movaps %xmm5,%xmm2
subss  -0x4(%rbx,%rdi,4),%xmm2
mulss  %xmm3,%xmm4
xorps  %xmm1,%xmm1
ucomiss %xmm2,%xmm0
ja     1384 <lpc_clmp+0x274>
ucomiss %xmm2,%xmm9
movaps %xmm4,%xmm1
jbe    1384 <lpc_clmp+0x274>
subss  %xmm0,%xmm2
mulss  %xmm3,%xmm2
movaps %xmm2,%xmm1
cmp    %rdi,%rax
jne    139b <lpc_clmp+0x28b>
xorps  %xmm2,%xmm2
cvtss2sd %xmm6,%xmm2
ucomisd %xmm10,%xmm2
ja     1310 <lpc_clmp+0x200>
cmp    %r8,%rdi
jge    13d3 <lpc_clmp+0x2c3>
movss  0x8(%rbx,%rdi,4),%xmm2
subss  %xmm6,%xmm2
xorps  %xmm7,%xmm7
ucomiss %xmm2,%xmm0
ja     131c <lpc_clmp+0x20c>
ucomiss %xmm2,%xmm9
movaps %xmm4,%xmm7
jbe    131c <lpc_clmp+0x20c>
subss  %xmm0,%xmm2
mulss  %xmm3,%xmm2
movaps %xmm2,%xmm7
jmp    131c <lpc_clmp+0x20c>
movaps %xmm4,%xmm7
jmp    131c <lpc_clmp+0x20c>
xor    %eax,%eax
mov    %eax,0xc(%rsp)
cmp    $0x2,%esi
jl     145b <lpc_clmp+0x34b>
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
mulsd  0xc13(%rip),%xmm1
mov    $0x1,%r13d
mov    0x2bde(%rip),%rbp
lea    0xc0f(%rip),%r14
lea    0xc34(%rip),%r15
movsd  %xmm1,0x10(%rsp)
jmp    1425 <lpc_clmp+0x315>
nopl   0x0(%rax,%rax,1)
cmp    %r13,%r12
je     145b <lpc_clmp+0x34b>
movss  0x4(%rbx,%r13,4),%xmm0
subss  (%rbx,%r13,4),%xmm0
add    $0x1,%r13
cvtss2sd %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    1420 <lpc_clmp+0x310>
mov    0x0(%rbp),%edi
mov    %r14,%rsi
mov    %r15,%rdx
mov    $0xda,%ecx
call   1030 <fprintf@plt>
movsd  0x10(%rsp),%xmm1
jmp    1420 <lpc_clmp+0x310>
cmpb   $0x0,0xc(%rsp)
je     1483 <lpc_clmp+0x373>
mov    0x2b77(%rip),%rax
mov    (%rax),%edi
lea    0xc71(%rip),%rsi
lea    0xbcb(%rip),%rdx
mov    $0xde,%ecx
call   1030 <fprintf@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@stderr = global i32 0
@.str = [44 x i8] c"%s: LSPs not separated by enough (line %d)\0A\00"
@.str.1 = [159 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/arash-ostadzadeh/QUAD/refs/heads/master/Benchmarks/melp1.2/lpc_lib.c\00"
@.str.2 = [35 x i8] c"%s: LSPs still unsorted (line %d)\0A\00"
define i32 @lpc_clmp(float* %0, float %1, i32 %2) {
%4 = alloca float*
%5 = alloca float
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
store float* %0, float** %4
store float %1, float* %5
store i32 %2, i32* %6
store i32 0, i32* %8
store i32 1, i32* %9
br label %14
14: ; preds = %67, %3
%15 = load i32, i32* %9
%16 = icmp ne i32 %15, 0
br i1 %16, label %17, label %20
17: ; preds = %14
%18 = load i32, i32* %8
%19 = icmp slt i32 %18, 10
br label %20
20: ; preds = %17, %14
%21 = phi i1 [ false, %14 ], [ %19, %17 ]
br i1 %21, label %22, label %70
22: ; preds = %20
store i32 1, i32* %7
store i32 0, i32* %9
br label %23
23: ; preds = %63, %22
%24 = load i32, i32* %7
%25 = load i32, i32* %6
%26 = icmp slt i32 %24, %25
br i1 %26, label %27, label %66
27: ; preds = %23
%28 = load float*, float** %4
%29 = load i32, i32* %7
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds float, float* %28, i64 %30
%32 = load float, float* %31
%33 = load float*, float** %4
%34 = load i32, i32* %7
%35 = add nsw i32 %34, 1
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds float, float* %33, i64 %36
%38 = load float, float* %37
%39 = fcmp ogt float %32, %38
br i1 %39, label %40, label %62
40: ; preds = %27
%41 = load float*, float** %4
%42 = load i32, i32* %7
%43 = add nsw i32 %42, 1
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds float, float* %41, i64 %44
%46 = load float, float* %45
store float %46, float* %10
%47 = load float*, float** %4
%48 = load i32, i32* %7
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds float, float* %47, i64 %49
%51 = load float, float* %50
%52 = load float*, float** %4
%53 = load i32, i32* %7
%54 = add nsw i32 %53, 1
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds float, float* %52, i64 %55
store float %51, float* %56
%57 = load float, float* %10
%58 = load float*, float** %4
%59 = load i32, i32* %7
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds float, float* %58, i64 %60
store float %57, float* %61
store i32 1, i32* %9
br label %62
62: ; preds = %40, %27
br label %63
63: ; preds = %62
%64 = load i32, i32* %7
%65 = add nsw i32 %64, 1
store i32 %65, i32* %7
br label %23
66: ; preds = %23
br label %67
67: ; preds = %66
%68 = load i32, i32* %8
%69 = add nsw i32 %68, 1
store i32 %69, i32* %8
br label %14
70: ; preds = %20
%71 = load i32, i32* %9
%72 = icmp ne i32 %71, 0
br i1 %72, label %247, label %73
73: ; preds = %70
store i32 0, i32* %8
br label %74
74: ; preds = %243, %73
%75 = load i32, i32* %8
%76 = icmp slt i32 %75, 10
br i1 %76, label %77, label %246
77: ; preds = %74
store i32 1, i32* %7
br label %78
78: ; preds = %239, %77
%79 = load i32, i32* %7
%80 = load i32, i32* %6
%81 = icmp slt i32 %79, %80
br i1 %81, label %82, label %242
82: ; preds = %78
%83 = load float*, float** %4
%84 = load i32, i32* %7
%85 = add nsw i32 %84, 1
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds float, float* %83, i64 %86
%88 = load float, float* %87
%89 = load float*, float** %4
%90 = load i32, i32* %7
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds float, float* %89, i64 %91
%93 = load float, float* %92
%94 = fsub float %88, %93
store float %94, float* %11
%95 = load float, float* %5
%96 = fcmp olt float %94, %95
br i1 %96, label %97, label %238
97: ; preds = %82
%98 = load float, float* %5
%99 = load float, float* %11
%100 = fsub float %98, %99
%101 = fpext float %100 to double
%102 = fdiv double %101, 2.000000e+00
%103 = fptrunc double %102 to float
store float %103, float* %13
store float %103, float* %12
%104 = load i32, i32* %7
%105 = icmp eq i32 %104, 1
br i1 %105, label %106, label %123
106: ; preds = %97
%107 = load float*, float** %4
%108 = load i32, i32* %7
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds float, float* %107, i64 %109
%111 = load float, float* %110
%112 = load float, float* %5
%113 = fcmp olt float %111, %112
br i1 %113, label %114, label %123
114: ; preds = %106
%115 = load float*, float** %4
%116 = load i32, i32* %7
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds float, float* %115, i64 %117
%119 = load float, float* %118
%120 = fpext float %119 to double
%121 = fdiv double %120, 2.000000e+00
%122 = fptrunc double %121 to float
store float %122, float* %12
br label %157
123: ; preds = %106, %97
%124 = load i32, i32* %7
%125 = icmp sgt i32 %124, 1
br i1 %125, label %126, label %156
126: ; preds = %123
%127 = load float*, float** %4
%128 = load i32, i32* %7
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds float, float* %127, i64 %129
%131 = load float, float* %130
%132 = load float*, float** %4
%133 = load i32, i32* %7
%134 = sub nsw i32 %133, 1
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds float, float* %132, i64 %135
%137 = load float, float* %136
%138 = fsub float %131, %137
store float %138, float* %10
%139 = load float, float* %5
%140 = fcmp olt float %138, %139
br i1 %140, label %141, label %142
141: ; preds = %126
store float 0.000000e+00, float* %12
br label %155
142: ; preds = %126
%143 = load float, float* %10
%144 = load float, float* %5
%145 = fmul float 2.000000e+00, %144
%146 = fcmp olt float %143, %145
br i1 %146, label %147, label %154
147: ; preds = %142
%148 = load float, float* %10
%149 = load float, float* %5
%150 = fsub float %148, %149
%151 = fpext float %150 to double
%152 = fdiv double %151, 2.000000e+00
%153 = fptrunc double %152 to float
store float %153, float* %12
br label %154
154: ; preds = %147, %142
br label %155
155: ; preds = %154, %141
br label %156
156: ; preds = %155, %123
br label %157
157: ; preds = %156, %114
%158 = load i32, i32* %7
%159 = load i32, i32* %6
%160 = sub nsw i32 %159, 1
%161 = icmp eq i32 %158, %160
br i1 %161, label %162, label %185
162: ; preds = %157
%163 = load float*, float** %4
%164 = load i32, i32* %7
%165 = add nsw i32 %164, 1
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds float, float* %163, i64 %166
%168 = load float, float* %167
%169 = fpext float %168 to double
%170 = load float, float* %5
%171 = fpext float %170 to double
%172 = fsub double 1.000000e+00, %171
%173 = fcmp ogt double %169, %172
br i1 %173, label %174, label %185
174: ; preds = %162
%175 = load float*, float** %4
%176 = load i32, i32* %7
%177 = add nsw i32 %176, 1
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds float, float* %175, i64 %178
%180 = load float, float* %179
%181 = fsub float 1.000000e+00, %180
%182 = fpext float %181 to double
%183 = fdiv double %182, 2.000000e+00
%184 = fptrunc double %183 to float
store float %184, float* %13
br label %222
185: ; preds = %162, %157
%186 = load i32, i32* %7
%187 = load i32, i32* %6
%188 = sub nsw i32 %187, 1
%189 = icmp slt i32 %186, %188
br i1 %189, label %190, label %221
190: ; preds = %185
%191 = load float*, float** %4
%192 = load i32, i32* %7
%193 = add nsw i32 %192, 2
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds float, float* %191, i64 %194
%196 = load float, float* %195
%197 = load float*, float** %4
%198 = load i32, i32* %7
%199 = add nsw i32 %198, 1
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds float, float* %197, i64 %200
%202 = load float, float* %201
%203 = fsub float %196, %202
store float %203, float* %10
%204 = load float, float* %5
%205 = fcmp olt float %203, %204
br i1 %205, label %206, label %207
206: ; preds = %190
store float 0.000000e+00, float* %13
br label %220
207: ; preds = %190
%208 = load float, float* %10
%209 = load float, float* %5
%210 = fmul float 2.000000e+00, %209
%211 = fcmp olt float %208, %210
br i1 %211, label %212, label %219
212: ; preds = %207
%213 = load float, float* %10
%214 = load float, float* %5
%215 = fsub float %213, %214
%216 = fpext float %215 to double
%217 = fdiv double %216, 2.000000e+00
%218 = fptrunc double %217 to float
store float %218, float* %13
br label %219
219: ; preds = %212, %207
br label %220
220: ; preds = %219, %206
br label %221
221: ; preds = %220, %185
br label %222
222: ; preds = %221, %174
%223 = load float, float* %12
%224 = load float*, float** %4
%225 = load i32, i32* %7
%226 = sext i32 %225 to i64
%227 = getelementptr inbounds float, float* %224, i64 %226
%228 = load float, float* %227
%229 = fsub float %228, %223
store float %229, float* %227
%230 = load float, float* %13
%231 = load float*, float** %4
%232 = load i32, i32* %7
%233 = add nsw i32 %232, 1
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds float, float* %231, i64 %234
%236 = load float, float* %235
%237 = fadd float %236, %230
store float %237, float* %235
br label %238
238: ; preds = %222, %82
br label %239
239: ; preds = %238
%240 = load i32, i32* %7
%241 = add nsw i32 %240, 1
store i32 %241, i32* %7
br label %78
242: ; preds = %78
br label %243
243: ; preds = %242
%244 = load i32, i32* %8
%245 = add nsw i32 %244, 1
store i32 %245, i32* %8
br label %74
246: ; preds = %74
br label %247
247: ; preds = %246, %70
store i32 1, i32* %8
br label %248
248: ; preds = %274, %247
%249 = load i32, i32* %8
%250 = load i32, i32* %6
%251 = icmp slt i32 %249, %250
br i1 %251, label %252, label %277
252: ; preds = %248
%253 = load float*, float** %4
%254 = load i32, i32* %8
%255 = add nsw i32 %254, 1
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds float, float* %253, i64 %256
%258 = load float, float* %257
%259 = load float*, float** %4
%260 = load i32, i32* %8
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds float, float* %259, i64 %261
%263 = load float, float* %262
%264 = fsub float %258, %263
%265 = fpext float %264 to double
%266 = load float, float* %5
%267 = fpext float %266 to double
%268 = fmul double 0x3FEFAE147AE147AE, %267
%269 = fcmp olt double %265, %268
br i1 %269, label %270, label %273
270: ; preds = %252
%271 = load i32, i32* @stderr
%272 = call i32 @fprintf(i32 %271, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([159 x i8], [159 x i8]* @.str.1, i64 0, i64 0), i32 218)
br label %273
273: ; preds = %270, %252
br label %274
274: ; preds = %273
%275 = load i32, i32* %8
%276 = add nsw i32 %275, 1
store i32 %276, i32* %8
br label %248
277: ; preds = %248
%278 = load i32, i32* %9
%279 = icmp ne i32 %278, 0
br i1 %279, label %280, label %283
280: ; preds = %277
%281 = load i32, i32* @stderr
%282 = call i32 @fprintf(i32 %281, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([159 x i8], [159 x i8]* @.str.1, i64 0, i64 0), i32 222)
br label %283
283: ; preds = %280, %277
ret i32 0
}

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