#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 */
float psycho_3_add_db(float, float);
void psycho_3_threshold(float *LTg, int *tonelabel, float *Xtm, int *noiselabel,
                        float *Xnm, float *bark, float *ath, int bit_rate,
                        int *freq_subset) {
  int i, j, k;
  float LTtm[136];
  float LTnm[136];
  for (i = 0; i < 136; i++) {
    LTtm[i] = -200.0;
    LTnm[i] = -200.0;
  }
  for (k = 1; k < 513; k++) {
    if (tonelabel[k] == 20) {
      for (j = 0; j < 136; j++) {
        float dz = bark[freq_subset[j]] - bark[k];
        if (dz >= -3.0 && dz < 8.0) {
          float vf;
          float av = -1.525 - 0.275 * bark[k] - 4.5 + Xtm[k];
          if (dz < -1)
            vf = 17 * (dz + 1) - (0.4 * Xtm[k] + 6);
          else if (dz < 0)
            vf = (0.4 * Xtm[k] + 6) * dz;
          else if (dz < 1)
            vf = (-17 * dz);
          else
            vf = -(dz - 1) * (17 - 0.15 * Xtm[k]) - 17;
          LTtm[j] = psycho_3_add_db(LTtm[j], av + vf);
        }
      }
    }
    if (noiselabel[k] == 10) {
      for (j = 0; j < 136; j++) {
        float dz = bark[freq_subset[j]] - bark[k];
        if (dz >= -3.0 && dz < 8.0) {
          float vf;
          float av = -1.525 - 0.175 * bark[k] - 0.5 + Xnm[k];
          if (dz < -1)
            vf = 17 * (dz + 1) - (0.4 * Xnm[k] + 6);
          else if (dz < 0)
            vf = (0.4 * Xnm[k] + 6) * dz;
          else if (dz < 1)
            vf = (-17 * dz);
          else
            vf = -(dz - 1) * (17 - 0.15 * Xnm[k]) - 17;
          LTnm[j] = psycho_3_add_db(LTnm[j], av + vf);
        }
      }
    }
  }
  for (i = 0; i < 136; i++) {
    LTg[i] = psycho_3_add_db(LTnm[i], LTtm[i]);
    if (bit_rate < 96)
      LTg[i] = psycho_3_add_db(ath[freq_subset[i]], LTg[i]);
    else
      LTg[i] = psycho_3_add_db(ath[freq_subset[i]] - 12.0, LTg[i]);
  }
}


x86 assembly (clang, -O0):
<psycho_3_threshold>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4a0,%rsp
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x88,-0x34(%rbp)
jge    118a <psycho_3_threshold+0x7a>
movslq -0x34(%rbp),%rax
movss  0xf1a(%rip),%xmm0
movss  %xmm0,-0x260(%rbp,%rax,4)
ff ff
movslq -0x34(%rbp),%rax
movss  0xf05(%rip),%xmm0
movss  %xmm0,-0x480(%rbp,%rax,4)
ff ff
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1145 <psycho_3_threshold+0x35>
movl   $0x1,-0x3c(%rbp)
cmpl   $0x201,-0x3c(%rbp)
jge    16e9 <psycho_3_threshold+0x5d9>
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpl   $0x14,(%rax,%rcx,4)
jne    143a <psycho_3_threshold+0x32a>
movl   $0x0,-0x38(%rbp)
cmpl   $0x88,-0x38(%rbp)
jge    1435 <psycho_3_threshold+0x325>
mov    -0x30(%rbp),%rax
mov    0x20(%rbp),%rcx
movslq -0x38(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x3c(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x484(%rbp)
ff
movss  -0x484(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xe06(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1422 <psycho_3_threshold+0x312>
movss  -0x484(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xdf0(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1422 <psycho_3_threshold+0x312>
mov    -0x30(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xe1d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdd9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xdfd(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x48c(%rbp)
ff
movss  0xde0(%rip),%xmm0
ucomiss -0x484(%rbp),%xmm0
jbe    12f3 <psycho_3_threshold+0x1e3>
movss  0xdcf(%rip),%xmm1
addss  -0x484(%rbp),%xmm1
ff
movss  0xdc7(%rip),%xmm0
mulss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xd7a(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd76(%rip),%xmm2
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x488(%rbp)
ff
jmp    13f3 <psycho_3_threshold+0x2e3>
xorps  %xmm0,%xmm0
ucomiss -0x484(%rbp),%xmm0
jbe    134d <psycho_3_threshold+0x23d>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd2c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd28(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x484(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x488(%rbp)
ff
jmp    13ee <psycho_3_threshold+0x2de>
movss  0xd17(%rip),%xmm0
ucomiss -0x484(%rbp),%xmm0
jbe    137f <psycho_3_threshold+0x26f>
movss  0xd06(%rip),%xmm0
mulss  -0x484(%rbp),%xmm0
ff
movss  %xmm0,-0x488(%rbp)
ff
jmp    13e9 <psycho_3_threshold+0x2d9>
movss  -0x484(%rbp),%xmm0
ff
movss  0xcdd(%rip),%xmm1
subss  %xmm1,%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xc7b(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xc77(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc57(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x488(%rbp)
ff
jmp    13ee <psycho_3_threshold+0x2de>
jmp    13f3 <psycho_3_threshold+0x2e3>
movslq -0x38(%rbp),%rax
movss  -0x260(%rbp,%rax,4),%xmm0
ff ff
movss  -0x48c(%rbp),%xmm1
ff
addss  -0x488(%rbp),%xmm1
ff
call   1030 <psycho_3_add_db@plt>
movslq -0x38(%rbp),%rax
movss  %xmm0,-0x260(%rbp,%rax,4)
ff ff
jmp    1427 <psycho_3_threshold+0x317>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11b7 <psycho_3_threshold+0xa7>
jmp    143a <psycho_3_threshold+0x32a>
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
cmpl   $0xa,(%rax,%rcx,4)
jne    16d6 <psycho_3_threshold+0x5c6>
movl   $0x0,-0x38(%rbp)
cmpl   $0x88,-0x38(%rbp)
jge    16d1 <psycho_3_threshold+0x5c1>
mov    -0x30(%rbp),%rax
mov    0x20(%rbp),%rcx
movslq -0x38(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x30(%rbp),%rax
movslq -0x3c(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x490(%rbp)
ff
movss  -0x490(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
movsd  0xb6a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     16be <psycho_3_threshold+0x5ae>
movss  -0x490(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm1
movsd  0xb54(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    16be <psycho_3_threshold+0x5ae>
mov    -0x30(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xb41(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb3d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  0xb21(%rip),%xmm1
subsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x498(%rbp)
ff
movss  0xb44(%rip),%xmm0
ucomiss -0x490(%rbp),%xmm0
jbe    158f <psycho_3_threshold+0x47f>
movss  0xb33(%rip),%xmm1
addss  -0x490(%rbp),%xmm1
ff
movss  0xb2b(%rip),%xmm0
mulss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xade(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xada(%rip),%xmm2
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x494(%rbp)
ff
jmp    168f <psycho_3_threshold+0x57f>
xorps  %xmm0,%xmm0
ucomiss -0x490(%rbp),%xmm0
jbe    15e9 <psycho_3_threshold+0x4d9>
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa90(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa8c(%rip),%xmm1
addsd  %xmm1,%xmm0
movss  -0x490(%rbp),%xmm1
ff
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x494(%rbp)
ff
jmp    168a <psycho_3_threshold+0x57a>
movss  0xa7b(%rip),%xmm0
ucomiss -0x490(%rbp),%xmm0
jbe    161b <psycho_3_threshold+0x50b>
movss  0xa6a(%rip),%xmm0
mulss  -0x490(%rbp),%xmm0
ff
movss  %xmm0,-0x494(%rbp)
ff
jmp    1685 <psycho_3_threshold+0x575>
movss  -0x490(%rbp),%xmm0
ff
movss  0xa41(%rip),%xmm1
subss  %xmm1,%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0x9df(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x9db(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9bb(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x494(%rbp)
ff
jmp    168a <psycho_3_threshold+0x57a>
jmp    168f <psycho_3_threshold+0x57f>
movslq -0x38(%rbp),%rax
movss  -0x480(%rbp,%rax,4),%xmm0
ff ff
movss  -0x498(%rbp),%xmm1
ff
addss  -0x494(%rbp),%xmm1
ff
call   1030 <psycho_3_add_db@plt>
movslq -0x38(%rbp),%rax
movss  %xmm0,-0x480(%rbp,%rax,4)
ff ff
jmp    16c3 <psycho_3_threshold+0x5b3>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1453 <psycho_3_threshold+0x343>
jmp    16d6 <psycho_3_threshold+0x5c6>
jmp    16db <psycho_3_threshold+0x5cb>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1191 <psycho_3_threshold+0x81>
movl   $0x0,-0x34(%rbp)
cmpl   $0x88,-0x34(%rbp)
jge    17c7 <psycho_3_threshold+0x6b7>
movslq -0x34(%rbp),%rax
movss  -0x480(%rbp,%rax,4),%xmm0
ff ff
movslq -0x34(%rbp),%rax
movss  -0x260(%rbp,%rax,4),%xmm1
ff ff
call   1030 <psycho_3_add_db@plt>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
cmpl   $0x60,0x18(%rbp)
jge    176c <psycho_3_threshold+0x65c>
mov    0x10(%rbp),%rax
mov    0x20(%rbp),%rcx
movslq -0x34(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
call   1030 <psycho_3_add_db@plt>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    17b4 <psycho_3_threshold+0x6a4>
mov    0x10(%rbp),%rax
mov    0x20(%rbp),%rcx
movslq -0x34(%rbp),%rdx
movslq (%rcx,%rdx,4),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0x873(%rip),%xmm1
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
call   1030 <psycho_3_add_db@plt>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    17b9 <psycho_3_threshold+0x6a9>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    16f0 <psycho_3_threshold+0x5e0>
add    $0x4a0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<psycho_3_threshold>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x468,%rsp
mov    %r9,%r15
mov    %r8,%r14
mov    %rcx,0x18(%rsp)
mov    %rdx,%r13
mov    %rsi,0x10(%rsp)
mov    %rdi,0x8(%rsp)
mov    0x4b0(%rsp),%r12
movaps 0xeb8(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps %xmm0,0x250(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x260(%rsp)
movaps %xmm0,0x270(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x280(%rsp)
movaps %xmm0,0x290(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x2a0(%rsp)
movaps %xmm0,0x2b0(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0x2c0(%rsp)
movaps %xmm0,0x2d0(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0x2e0(%rsp)
movaps %xmm0,0x2f0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0x300(%rsp)
movaps %xmm0,0x310(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0x320(%rsp)
movaps %xmm0,0x330(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm0,0x110(%rsp)
movaps %xmm0,0x340(%rsp)
movaps %xmm0,0x350(%rsp)
movaps %xmm0,0x120(%rsp)
movaps %xmm0,0x130(%rsp)
movaps %xmm0,0x360(%rsp)
movaps %xmm0,0x370(%rsp)
movaps %xmm0,0x140(%rsp)
movaps %xmm0,0x150(%rsp)
movaps %xmm0,0x380(%rsp)
movaps %xmm0,0x390(%rsp)
movaps %xmm0,0x160(%rsp)
movaps %xmm0,0x170(%rsp)
movaps %xmm0,0x3a0(%rsp)
movaps %xmm0,0x3b0(%rsp)
movaps %xmm0,0x180(%rsp)
movaps %xmm0,0x190(%rsp)
movaps %xmm0,0x3c0(%rsp)
movaps %xmm0,0x3d0(%rsp)
movaps %xmm0,0x1a0(%rsp)
movaps %xmm0,0x1b0(%rsp)
movaps %xmm0,0x3e0(%rsp)
movaps %xmm0,0x3f0(%rsp)
movaps %xmm0,0x1c0(%rsp)
movaps %xmm0,0x1d0(%rsp)
movaps %xmm0,0x400(%rsp)
movaps %xmm0,0x410(%rsp)
movaps %xmm0,0x1e0(%rsp)
movaps %xmm0,0x1f0(%rsp)
movaps %xmm0,0x420(%rsp)
movaps %xmm0,0x430(%rsp)
movaps %xmm0,0x200(%rsp)
movaps %xmm0,0x210(%rsp)
movaps %xmm0,0x440(%rsp)
movaps %xmm0,0x450(%rsp)
movaps %xmm0,0x220(%rsp)
movaps %xmm0,0x230(%rsp)
mov    $0x1,%ebp
movss  0xcad(%rip),%xmm1
jmp    1381 <psycho_3_threshold+0x271>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbp
cmp    $0x201,%rbp
je     1643 <psycho_3_threshold+0x533>
mov    %r14,%rbx
mov    0x10(%rsp),%rax
cmpl   $0x14,(%rax,%rbp,4)
jne    14f0 <psycho_3_threshold+0x3e0>
xor    %r14d,%r14d
jmp    13fb <psycho_3_threshold+0x2eb>
cvtss2sd %xmm2,%xmm2
movaps %xmm1,%xmm3
mulsd  0xcb9(%rip),%xmm3
addsd  0xcb9(%rip),%xmm3
mulsd  %xmm2,%xmm3
xorps  %xmm2,%xmm2
cvtsd2ss %xmm3,%xmm2
addsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
addss  %xmm2,%xmm1
movss  0x240(%rsp,%r14,4),%xmm0
call   1030 <psycho_3_add_db@plt>
movss  %xmm0,0x240(%rsp,%r14,4)
movss  0xc26(%rip),%xmm1
add    $0x1,%r14
cmp    $0x88,%r14
je     14f0 <psycho_3_threshold+0x3e0>
movslq (%r12,%r14,4),%rax
movss  (%r15,%rax,4),%xmm2
movss  (%r15,%rbp,4),%xmm0
subss  %xmm0,%xmm2
ucomiss %xmm1,%xmm2
jb     13ea <psycho_3_threshold+0x2da>
movss  0xbf8(%rip),%xmm3
ucomiss %xmm2,%xmm3
jbe    13ea <psycho_3_threshold+0x2da>
cvtss2sd %xmm0,%xmm0
mulsd  0xc03(%rip),%xmm0
addsd  0xc03(%rip),%xmm0
addsd  0xc03(%rip),%xmm0
movss  0x0(%r13,%rbp,4),%xmm1
cvtss2sd %xmm1,%xmm1
movss  0xbc8(%rip),%xmm3
ucomiss %xmm2,%xmm3
jbe    1490 <psycho_3_threshold+0x380>
addss  0xbbf(%rip),%xmm2
mulss  0xbbf(%rip),%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm1,%xmm3
mulsd  0xbec(%rip),%xmm3
addsd  0xbec(%rip),%xmm3
subsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
jmp    13ba <psycho_3_threshold+0x2aa>
nopl   0x0(%rax)
xorps  %xmm3,%xmm3
ucomiss %xmm2,%xmm3
ja     1398 <psycho_3_threshold+0x288>
movss  0xb78(%rip),%xmm3
ucomiss %xmm2,%xmm3
jbe    14b6 <psycho_3_threshold+0x3a6>
mulss  0xb6f(%rip),%xmm2
jmp    13ba <psycho_3_threshold+0x2aa>
addss  0xb5a(%rip),%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm1,%xmm3
mulsd  0xb7b(%rip),%xmm3
addsd  0xb7b(%rip),%xmm3
mulsd  %xmm2,%xmm3
movsd  0xb77(%rip),%xmm2
jmp    147c <psycho_3_threshold+0x36c>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x18(%rsp),%rax
cmpl   $0xa,(%rax,%rbp,4)
mov    %rbx,%r14
jne    1370 <psycho_3_threshold+0x260>
xor    %ebx,%ebx
jmp    1561 <psycho_3_threshold+0x451>
cvtss2sd %xmm2,%xmm2
movaps %xmm1,%xmm3
mulsd  0xb4b(%rip),%xmm3
addsd  0xb4b(%rip),%xmm3
mulsd  %xmm2,%xmm3
xorps  %xmm2,%xmm2
cvtsd2ss %xmm3,%xmm2
addsd  %xmm1,%xmm0
xorps  %xmm1,%xmm1
cvtsd2ss %xmm0,%xmm1
addss  %xmm2,%xmm1
movss  0x20(%rsp,%rbx,4),%xmm0
call   1030 <psycho_3_add_db@plt>
movss  %xmm0,0x20(%rsp,%rbx,4)
movss  0xac0(%rip),%xmm1
add    $0x1,%rbx
cmp    $0x88,%rbx
je     1370 <psycho_3_threshold+0x260>
movslq (%r12,%rbx,4),%rax
movss  (%r15,%rax,4),%xmm2
movss  (%r15,%rbp,4),%xmm0
subss  %xmm0,%xmm2
ucomiss %xmm1,%xmm2
jb     1550 <psycho_3_threshold+0x440>
movss  0xa92(%rip),%xmm3
ucomiss %xmm2,%xmm3
jbe    1550 <psycho_3_threshold+0x440>
cvtss2sd %xmm0,%xmm0
mulsd  0xadd(%rip),%xmm0
addsd  0xa9d(%rip),%xmm0
addsd  0xad5(%rip),%xmm0
movss  (%r14,%rbp,4),%xmm1
cvtss2sd %xmm1,%xmm1
movss  0xa63(%rip),%xmm3
ucomiss %xmm2,%xmm3
jbe    15f0 <psycho_3_threshold+0x4e0>
addss  0xa5a(%rip),%xmm2
mulss  0xa5a(%rip),%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm1,%xmm3
mulsd  0xa87(%rip),%xmm3
addsd  0xa87(%rip),%xmm3
subsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
jmp    1528 <psycho_3_threshold+0x418>
xchg   %ax,%ax
xorps  %xmm3,%xmm3
ucomiss %xmm2,%xmm3
ja     1506 <psycho_3_threshold+0x3f6>
movss  0xa18(%rip),%xmm3
ucomiss %xmm2,%xmm3
jbe    1616 <psycho_3_threshold+0x506>
mulss  0xa0f(%rip),%xmm2
jmp    1528 <psycho_3_threshold+0x418>
addss  0x9fa(%rip),%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm1,%xmm3
mulsd  0xa1b(%rip),%xmm3
addsd  0xa1b(%rip),%xmm3
mulsd  %xmm2,%xmm3
movsd  0xa17(%rip),%xmm2
jmp    15e1 <psycho_3_threshold+0x4d1>
xor    %ebx,%ebx
mov    0x8(%rsp),%rbp
mov    0x4a8(%rsp),%r14d
mov    0x4a0(%rsp),%r15
jmp    1678 <psycho_3_threshold+0x568>
nopl   0x0(%rax)
call   1030 <psycho_3_add_db@plt>
movss  %xmm0,0x0(%rbp,%rbx,4)
add    $0x1,%rbx
cmp    $0x88,%rbx
je     16b5 <psycho_3_threshold+0x5a5>
movss  0x20(%rsp,%rbx,4),%xmm0
movss  0x240(%rsp,%rbx,4),%xmm1
call   1030 <psycho_3_add_db@plt>
movaps %xmm0,%xmm1
movss  %xmm0,0x0(%rbp,%rbx,4)
movslq (%r12,%rbx,4),%rax
movss  (%r15,%rax,4),%xmm0
movaps %xmm0,%xmm2
addss  0x97e(%rip),%xmm2
cmp    $0x60,%r14d
jl     1660 <psycho_3_threshold+0x550>
movaps %xmm2,%xmm0
jmp    1660 <psycho_3_threshold+0x550>
add    $0x468,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @psycho_3_threshold(float* nocapture writeonly %0, i32* nocapture %1, float* nocapture %2, i32* nocapture %3, float* nocapture %4, float* nocapture %5, float* nocapture %6, i32 %7, i32* nocapture %8) {
%10 = alloca [136 x float]
%11 = alloca [136 x float]
%12 = bitcast [136 x float]* %10 to i8*
%13 = bitcast [136 x float]* %11 to i8*
%14 = bitcast [136 x float]* %10 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %14
%15 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 4
%16 = bitcast float* %15 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %16
%17 = bitcast [136 x float]* %11 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %17
%18 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 4
%19 = bitcast float* %18 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %19
%20 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 8
%21 = bitcast float* %20 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %21
%22 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 12
%23 = bitcast float* %22 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %23
%24 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 8
%25 = bitcast float* %24 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %25
%26 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 12
%27 = bitcast float* %26 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %27
%28 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 16
%29 = bitcast float* %28 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %29
%30 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 20
%31 = bitcast float* %30 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %31
%32 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 16
%33 = bitcast float* %32 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %33
%34 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 20
%35 = bitcast float* %34 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %35
%36 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 24
%37 = bitcast float* %36 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %37
%38 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 28
%39 = bitcast float* %38 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %39
%40 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 24
%41 = bitcast float* %40 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %41
%42 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 28
%43 = bitcast float* %42 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %43
%44 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 32
%45 = bitcast float* %44 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %45
%46 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 36
%47 = bitcast float* %46 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %47
%48 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 32
%49 = bitcast float* %48 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %49
%50 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 36
%51 = bitcast float* %50 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %51
%52 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 40
%53 = bitcast float* %52 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %53
%54 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 44
%55 = bitcast float* %54 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %55
%56 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 40
%57 = bitcast float* %56 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %57
%58 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 44
%59 = bitcast float* %58 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %59
%60 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 48
%61 = bitcast float* %60 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %61
%62 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 52
%63 = bitcast float* %62 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %63
%64 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 48
%65 = bitcast float* %64 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %65
%66 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 52
%67 = bitcast float* %66 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %67
%68 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 56
%69 = bitcast float* %68 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %69
%70 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 60
%71 = bitcast float* %70 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %71
%72 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 56
%73 = bitcast float* %72 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %73
%74 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 60
%75 = bitcast float* %74 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %75
%76 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 64
%77 = bitcast float* %76 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %77
%78 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 68
%79 = bitcast float* %78 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %79
%80 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 64
%81 = bitcast float* %80 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %81
%82 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 68
%83 = bitcast float* %82 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %83
%84 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 72
%85 = bitcast float* %84 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %85
%86 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 76
%87 = bitcast float* %86 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %87
%88 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 72
%89 = bitcast float* %88 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %89
%90 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 76
%91 = bitcast float* %90 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %91
%92 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 80
%93 = bitcast float* %92 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %93
%94 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 84
%95 = bitcast float* %94 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %95
%96 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 80
%97 = bitcast float* %96 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %97
%98 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 84
%99 = bitcast float* %98 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %99
%100 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 88
%101 = bitcast float* %100 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %101
%102 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 92
%103 = bitcast float* %102 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %103
%104 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 88
%105 = bitcast float* %104 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %105
%106 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 92
%107 = bitcast float* %106 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %107
%108 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 96
%109 = bitcast float* %108 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %109
%110 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 100
%111 = bitcast float* %110 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %111
%112 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 96
%113 = bitcast float* %112 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %113
%114 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 100
%115 = bitcast float* %114 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %115
%116 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 104
%117 = bitcast float* %116 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %117
%118 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 108
%119 = bitcast float* %118 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %119
%120 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 104
%121 = bitcast float* %120 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %121
%122 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 108
%123 = bitcast float* %122 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %123
%124 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 112
%125 = bitcast float* %124 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %125
%126 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 116
%127 = bitcast float* %126 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %127
%128 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 112
%129 = bitcast float* %128 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %129
%130 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 116
%131 = bitcast float* %130 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %131
%132 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 120
%133 = bitcast float* %132 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %133
%134 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 124
%135 = bitcast float* %134 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %135
%136 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 120
%137 = bitcast float* %136 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %137
%138 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 124
%139 = bitcast float* %138 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %139
%140 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 128
%141 = bitcast float* %140 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %141
%142 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 132
%143 = bitcast float* %142 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %143
%144 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 128
%145 = bitcast float* %144 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %145
%146 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 132
%147 = bitcast float* %146 to <4 x float>*
store <4 x float> <float -2.000000e+02, float -2.000000e+02, float -2.000000e+02, float -2.000000e+02>, <4 x float>* %147
br label %150
148: ; preds = %275
%149 = icmp slt i32 %7, 96
br label %278
150: ; preds = %9, %275
%151 = phi i64 [ %276, %275 ], [ 1, %9 ]
%152 = getelementptr inbounds i32, i32* %1, i64 %151
%153 = load i32, i32* %152
%154 = icmp eq i32 %153, 20
br i1 %154, label %155, label %213
155: ; preds = %150
%156 = getelementptr inbounds float, float* %5, i64 %151
%157 = getelementptr inbounds float, float* %2, i64 %151
br label %158
158: ; preds = %155, %210
%159 = phi i64 [ 0, %155 ], [ %211, %210 ]
%160 = getelementptr inbounds i32, i32* %8, i64 %159
%161 = load i32, i32* %160
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds float, float* %5, i64 %162
%164 = load float, float* %163
%165 = load float, float* %156
%166 = fsub float %164, %165
%167 = fpext float %166 to double
%168 = fcmp oge float %166, -3.000000e+00
%169 = fcmp olt float %166, 8.000000e+00
%170 = and i1 %168, %169
br i1 %170, label %171, label %210
171: ; preds = %158
%172 = fpext float %165 to double
%173 = tail call double @llvm.fmuladd.f64(double %172, double -2.750000e-01, double -1.525000e+00)
%174 = fadd double %173, -4.500000e+00
%175 = load float, float* %157
%176 = fpext float %175 to double
%177 = fadd double %174, %176
%178 = fptrunc double %177 to float
%179 = fcmp olt float %166, -1.000000e+00
br i1 %179, label %180, label %187
180: ; preds = %171
%181 = fadd float %166, 1.000000e+00
%182 = fmul float %181, 1.700000e+01
%183 = fpext float %182 to double
%184 = tail call double @llvm.fmuladd.f64(double %176, double 4.000000e-01, double 6.000000e+00)
%185 = fsub double %183, %184
%186 = fptrunc double %185 to float
br label %204
187: ; preds = %171
%188 = fcmp olt float %166, 0.000000e+00
br i1 %188, label %189, label %193
189: ; preds = %187
%190 = tail call double @llvm.fmuladd.f64(double %176, double 4.000000e-01, double 6.000000e+00)
%191 = fmul double %190, %167
%192 = fptrunc double %191 to float
br label %204
193: ; preds = %187
%194 = fcmp olt float %166, 1.000000e+00
br i1 %194, label %195, label %197
195: ; preds = %193
%196 = fmul float %166, -1.700000e+01
br label %204
197: ; preds = %193
%198 = fadd float %166, -1.000000e+00
%199 = fneg float %198
%200 = fpext float %199 to double
%201 = tail call double @llvm.fmuladd.f64(double %176, double -1.500000e-01, double 1.700000e+01)
%202 = tail call double @llvm.fmuladd.f64(double %200, double %201, double -1.700000e+01)
%203 = fptrunc double %202 to float
br label %204
204: ; preds = %189, %197, %195, %180
%205 = phi float [ %186, %180 ], [ %192, %189 ], [ %196, %195 ], [ %203, %197 ]
%206 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 %159
%207 = load float, float* %206
%208 = fadd float %205, %178
%209 = tail call float @psycho_3_add_db(float %207, float %208)
store float %209, float* %206
br label %210
210: ; preds = %204, %158
%211 = add nuw nsw i64 %159, 1
%212 = icmp eq i64 %211, 136
br i1 %212, label %213, label %158
213: ; preds = %210, %150
%214 = getelementptr inbounds i32, i32* %3, i64 %151
%215 = load i32, i32* %214
%216 = icmp eq i32 %215, 10
br i1 %216, label %217, label %275
217: ; preds = %213
%218 = getelementptr inbounds float, float* %5, i64 %151
%219 = getelementptr inbounds float, float* %4, i64 %151
br label %220
220: ; preds = %217, %272
%221 = phi i64 [ 0, %217 ], [ %273, %272 ]
%222 = getelementptr inbounds i32, i32* %8, i64 %221
%223 = load i32, i32* %222
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds float, float* %5, i64 %224
%226 = load float, float* %225
%227 = load float, float* %218
%228 = fsub float %226, %227
%229 = fpext float %228 to double
%230 = fcmp oge float %228, -3.000000e+00
%231 = fcmp olt float %228, 8.000000e+00
%232 = and i1 %230, %231
br i1 %232, label %233, label %272
233: ; preds = %220
%234 = fpext float %227 to double
%235 = tail call double @llvm.fmuladd.f64(double %234, double -1.750000e-01, double -1.525000e+00)
%236 = fadd double %235, -5.000000e-01
%237 = load float, float* %219
%238 = fpext float %237 to double
%239 = fadd double %236, %238
%240 = fptrunc double %239 to float
%241 = fcmp olt float %228, -1.000000e+00
br i1 %241, label %242, label %249
242: ; preds = %233
%243 = fadd float %228, 1.000000e+00
%244 = fmul float %243, 1.700000e+01
%245 = fpext float %244 to double
%246 = tail call double @llvm.fmuladd.f64(double %238, double 4.000000e-01, double 6.000000e+00)
%247 = fsub double %245, %246
%248 = fptrunc double %247 to float
br label %266
249: ; preds = %233
%250 = fcmp olt float %228, 0.000000e+00
br i1 %250, label %251, label %255
251: ; preds = %249
%252 = tail call double @llvm.fmuladd.f64(double %238, double 4.000000e-01, double 6.000000e+00)
%253 = fmul double %252, %229
%254 = fptrunc double %253 to float
br label %266
255: ; preds = %249
%256 = fcmp olt float %228, 1.000000e+00
br i1 %256, label %257, label %259
257: ; preds = %255
%258 = fmul float %228, -1.700000e+01
br label %266
259: ; preds = %255
%260 = fadd float %228, -1.000000e+00
%261 = fneg float %260
%262 = fpext float %261 to double
%263 = tail call double @llvm.fmuladd.f64(double %238, double -1.500000e-01, double 1.700000e+01)
%264 = tail call double @llvm.fmuladd.f64(double %262, double %263, double -1.700000e+01)
%265 = fptrunc double %264 to float
br label %266
266: ; preds = %251, %259, %257, %242
%267 = phi float [ %248, %242 ], [ %254, %251 ], [ %258, %257 ], [ %265, %259 ]
%268 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 %221
%269 = load float, float* %268
%270 = fadd float %267, %240
%271 = tail call float @psycho_3_add_db(float %269, float %270)
store float %271, float* %268
br label %272
272: ; preds = %266, %220
%273 = add nuw nsw i64 %221, 1
%274 = icmp eq i64 %273, 136
br i1 %274, label %275, label %220
275: ; preds = %272, %213
%276 = add nuw nsw i64 %151, 1
%277 = icmp eq i64 %276, 513
br i1 %277, label %148, label %150
278: ; preds = %148, %278
%279 = phi i64 [ 0, %148 ], [ %294, %278 ]
%280 = getelementptr inbounds [136 x float], [136 x float]* %11, i64 0, i64 %279
%281 = load float, float* %280
%282 = getelementptr inbounds [136 x float], [136 x float]* %10, i64 0, i64 %279
%283 = load float, float* %282
%284 = tail call float @psycho_3_add_db(float %281, float %283)
%285 = getelementptr inbounds float, float* %0, i64 %279
store float %284, float* %285
%286 = getelementptr inbounds i32, i32* %8, i64 %279
%287 = load i32, i32* %286
%288 = sext i32 %287 to i64
%289 = getelementptr inbounds float, float* %6, i64 %288
%290 = load float, float* %289
%291 = fadd float %290, -1.200000e+01
%292 = select i1 %149, float %290, float %291
%293 = tail call float @psycho_3_add_db(float %292, float %284)
store float %293, float* %285
%294 = add nuw nsw i64 %279, 1
%295 = icmp eq i64 %294, 136
br i1 %295, label %296, label %278
296: ; preds = %278
ret void
}