int ismusictone(double *psd, int psd_len, int freqbin, int splnum1, int splnum2,
                int *tone_flag) {
  int i;
  int kr, kl;
  double psd_nr[6], psd_nl[6];
  if (freqbin == 0 || freqbin >= (psd_len - 6))
    goto not_tone;
  for (i = 0; i < 6; i++) {
    kr = freqbin + (i + 1);
    kl = freqbin - (i + 1);
    if (kr < 0 || kr >= psd_len)
      psd_nr[i] = 0.0;
    else
      psd_nr[i] = psd[kr];
    if (kl < 0 || kl >= psd_len)
      psd_nl[i] = 0.0;
    else
      psd_nl[i] = psd[kl];
  }
  if (psd[freqbin] < psd_nr[0] || psd[freqbin] < psd_nl[0]) {
    goto not_tone;
  } else if (freqbin > 1 && freqbin < splnum1) {
    if (psd[freqbin] <= (psd_nr[1] + 6) || psd[freqbin] <= (psd_nl[1] + 6))
      goto not_tone;
    tone_flag[freqbin] = 1;
  } else if (freqbin >= splnum1 && freqbin < splnum2) {
    for (i = 1; i <= 2; i++) {
      if (psd[freqbin] <= (psd_nr[i] + 6) || psd[freqbin] <= (psd_nl[i] + 6))
        goto not_tone;
    }
    tone_flag[freqbin] = 1;
  } else if (freqbin >= splnum2 && freqbin < psd_len) {
    for (i = 1; i <= 5; i++) {
      if (psd[freqbin] <= (psd_nr[i] + 6) || psd[freqbin] <= (psd_nl[i] + 6))
        goto not_tone;
    }
    tone_flag[freqbin] = 1;
  } else {
    goto not_tone;
  }
  return 1;
not_tone:
  return 0;
}


x86 assembly (clang, -O0):
<ismusictone>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
cmpl   $0x0,-0x18(%rbp)
je     1138 <ismusictone+0x38>
mov    -0x18(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x6,%ecx
cmp    %ecx,%eax
jl     113d <ismusictone+0x3d>
jmp    142f <ismusictone+0x32f>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x6,-0x2c(%rbp)
jge    1201 <ismusictone+0x101>
mov    -0x18(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
add    %ecx,%eax
mov    %eax,-0x30(%rbp)
mov    -0x18(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x34(%rbp)
cmpl   $0x0,-0x30(%rbp)
jl     1180 <ismusictone+0x80>
mov    -0x30(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1192 <ismusictone+0x92>
movslq -0x2c(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp,%rax,8)
jmp    11a9 <ismusictone+0xa9>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x2c(%rbp),%rax
movsd  %xmm0,-0x70(%rbp,%rax,8)
cmpl   $0x0,-0x34(%rbp)
jl     11bf <ismusictone+0xbf>
mov    -0x34(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     11d4 <ismusictone+0xd4>
movslq -0x2c(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp,%rax,8)
ff ff
jmp    11ee <ismusictone+0xee>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movslq -0x2c(%rbp),%rax
movsd  %xmm0,-0xa0(%rbp,%rax,8)
ff ff
jmp    11f3 <ismusictone+0xf3>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1144 <ismusictone+0x44>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
ja     123c <ismusictone+0x13c>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1241 <ismusictone+0x141>
jmp    142f <ismusictone+0x32f>
cmpl   $0x1,-0x18(%rbp)
jle    12bb <ismusictone+0x1bb>
mov    -0x18(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12bb <ismusictone+0x1bb>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xd94(%rip),%xmm0
addsd  -0x68(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jae    12a2 <ismusictone+0x1a2>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0xd70(%rip),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     12a7 <ismusictone+0x1a7>
jmp    142f <ismusictone+0x32f>
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
jmp    141e <ismusictone+0x31e>
mov    -0x18(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jl     1365 <ismusictone+0x265>
mov    -0x18(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1365 <ismusictone+0x265>
movl   $0x1,-0x2c(%rbp)
cmpl   $0x2,-0x2c(%rbp)
jg     1351 <ismusictone+0x251>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rax
movsd  0xd03(%rip),%xmm0
addsd  -0x70(%rbp,%rax,8),%xmm0
ucomisd %xmm1,%xmm0
jae    1339 <ismusictone+0x239>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rax
movsd  0xcda(%rip),%xmm0
addsd  -0xa0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jb     133e <ismusictone+0x23e>
jmp    142f <ismusictone+0x32f>
jmp    1343 <ismusictone+0x243>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12da <ismusictone+0x1da>
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
jmp    1419 <ismusictone+0x319>
mov    -0x18(%rbp),%eax
cmp    -0x20(%rbp),%eax
jl     140f <ismusictone+0x30f>
mov    -0x18(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    140f <ismusictone+0x30f>
movl   $0x1,-0x2c(%rbp)
cmpl   $0x5,-0x2c(%rbp)
jg     13fb <ismusictone+0x2fb>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rax
movsd  0xc59(%rip),%xmm0
addsd  -0x70(%rbp,%rax,8),%xmm0
ucomisd %xmm1,%xmm0
jae    13e3 <ismusictone+0x2e3>
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movslq -0x2c(%rbp),%rax
movsd  0xc30(%rip),%xmm0
addsd  -0xa0(%rbp,%rax,8),%xmm0
ff ff
ucomisd %xmm1,%xmm0
jb     13e8 <ismusictone+0x2e8>
jmp    142f <ismusictone+0x32f>
jmp    13ed <ismusictone+0x2ed>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1384 <ismusictone+0x284>
mov    -0x28(%rbp),%rax
movslq -0x18(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
jmp    1414 <ismusictone+0x314>
jmp    142f <ismusictone+0x32f>
jmp    1419 <ismusictone+0x319>
jmp    141e <ismusictone+0x31e>
jmp    1423 <ismusictone+0x323>
movl   $0x1,-0x4(%rbp)
jmp    1436 <ismusictone+0x336>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ismusictone>:
xor    %eax,%eax
test   %edx,%edx
je     1398 <ismusictone+0x298>
lea    -0x6(%rsi),%r10d
cmp    %edx,%r10d
jle    1398 <ismusictone+0x298>
xorpd  %xmm8,%xmm8
xorpd  %xmm9,%xmm9
cmp    $0xffffffff,%edx
jl     113d <ismusictone+0x3d>
lea    0x1(%rdx),%r10d
xorpd  %xmm9,%xmm9
cmp    %esi,%r10d
jge    113d <ismusictone+0x3d>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm9
test   %edx,%edx
jle    1152 <ismusictone+0x52>
cmp    %esi,%edx
jg     1152 <ismusictone+0x52>
lea    -0x1(%rdx),%r10d
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm8
movsd  0xea6(%rip),%xmm0
movapd %xmm0,%xmm10
cmp    $0xfffffffe,%edx
jl     1184 <ismusictone+0x84>
lea    0x2(%rdx),%r10d
movapd %xmm0,%xmm10
cmp    %esi,%r10d
jge    1184 <ismusictone+0x84>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm10
addsd  0xe7c(%rip),%xmm10
movapd %xmm0,%xmm11
cmp    $0x2,%edx
jl     11ae <ismusictone+0xae>
lea    -0x2(%rdx),%r10d
movapd %xmm0,%xmm11
cmp    %esi,%r10d
jge    11ae <ismusictone+0xae>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm11
addsd  0xe52(%rip),%xmm11
movapd %xmm0,%xmm12
cmp    $0xfffffffd,%edx
jl     11d8 <ismusictone+0xd8>
lea    0x3(%rdx),%r10d
movapd %xmm0,%xmm12
cmp    %esi,%r10d
jge    11d8 <ismusictone+0xd8>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm12
addsd  0xe28(%rip),%xmm12
movapd %xmm0,%xmm6
cmp    $0x3,%edx
jl     11ff <ismusictone+0xff>
lea    -0x3(%rdx),%r10d
movapd %xmm0,%xmm6
cmp    %esi,%r10d
jge    11ff <ismusictone+0xff>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm6
addsd  0xe01(%rip),%xmm6
movapd %xmm0,%xmm7
cmp    $0xfffffffc,%edx
jl     1226 <ismusictone+0x126>
lea    0x4(%rdx),%r10d
movapd %xmm0,%xmm7
cmp    %esi,%r10d
jge    1226 <ismusictone+0x126>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm7
addsd  0xdda(%rip),%xmm7
movapd %xmm0,%xmm1
cmp    $0x4,%edx
jl     124d <ismusictone+0x14d>
lea    -0x4(%rdx),%r10d
movapd %xmm0,%xmm1
cmp    %esi,%r10d
jge    124d <ismusictone+0x14d>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm1
addsd  0xdb3(%rip),%xmm1
movapd %xmm0,%xmm2
cmp    $0xfffffffb,%edx
jl     1274 <ismusictone+0x174>
lea    0x5(%rdx),%r10d
movapd %xmm0,%xmm2
cmp    %esi,%r10d
jge    1274 <ismusictone+0x174>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm2
addsd  0xd8c(%rip),%xmm2
movapd %xmm0,%xmm3
cmp    $0x5,%edx
jl     129b <ismusictone+0x19b>
lea    -0x5(%rdx),%r10d
movapd %xmm0,%xmm3
cmp    %esi,%r10d
jge    129b <ismusictone+0x19b>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm3
addsd  0xd65(%rip),%xmm3
movapd %xmm0,%xmm4
cmp    $0xfffffffa,%edx
jl     12c2 <ismusictone+0x1c2>
lea    0x6(%rdx),%r10d
movapd %xmm0,%xmm4
cmp    %esi,%r10d
jge    12c2 <ismusictone+0x1c2>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm4
addsd  0xd3e(%rip),%xmm4
cmp    $0x6,%edx
jl     12e1 <ismusictone+0x1e1>
lea    -0x6(%rdx),%r10d
cmp    %esi,%r10d
jge    12e1 <ismusictone+0x1e1>
mov    %r10d,%r10d
movsd  (%rdi,%r10,8),%xmm0
addsd  0xd1f(%rip),%xmm0
movslq %edx,%r10
movsd  (%rdi,%r10,8),%xmm5
ucomisd %xmm5,%xmm9
ja     1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm8
ja     1398 <ismusictone+0x298>
cmp    $0x2,%edx
jl     132a <ismusictone+0x22a>
cmp    %ecx,%edx
jge    132a <ismusictone+0x22a>
ucomisd %xmm5,%xmm10
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm11
jae    1398 <ismusictone+0x298>
movl   $0x1,(%r9,%r10,4)
mov    $0x1,%eax
jmp    1398 <ismusictone+0x298>
cmp    %ecx,%edx
jl     1350 <ismusictone+0x250>
cmp    %r8d,%edx
jge    1350 <ismusictone+0x250>
ucomisd %xmm5,%xmm10
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm11
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm12
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm6
jb     131b <ismusictone+0x21b>
jmp    1398 <ismusictone+0x298>
cmp    %esi,%edx
jge    1398 <ismusictone+0x298>
cmp    %r8d,%edx
jl     1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm10
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm11
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm12
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm6
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm7
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm1
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm2
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm3
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm4
jae    1398 <ismusictone+0x298>
ucomisd %xmm5,%xmm0
jb     131b <ismusictone+0x21b>
ret

LLVM IR (-O0):
define i32 @ismusictone(double* %0, i32 %1, i32 %2, i32 %3, i32 %4, i32* %5) {
%7 = alloca i32
%8 = alloca double*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca [6 x double]
%18 = alloca [6 x double]
store double* %0, double** %8
store i32 %1, i32* %9
store i32 %2, i32* %10
store i32 %3, i32* %11
store i32 %4, i32* %12
store i32* %5, i32** %13
%19 = load i32, i32* %10
%20 = icmp eq i32 %19, 0
br i1 %20, label %26, label %21
21: ; preds = %6
%22 = load i32, i32* %10
%23 = load i32, i32* %9
%24 = sub nsw i32 %23, 6
%25 = icmp sge i32 %22, %24
br i1 %25, label %26, label %27
26: ; preds = %21, %6
br label %232
27: ; preds = %21
store i32 0, i32* %14
br label %28
28: ; preds = %80, %27
%29 = load i32, i32* %14
%30 = icmp slt i32 %29, 6
br i1 %30, label %31, label %83
31: ; preds = %28
%32 = load i32, i32* %10
%33 = load i32, i32* %14
%34 = add nsw i32 %33, 1
%35 = add nsw i32 %32, %34
store i32 %35, i32* %15
%36 = load i32, i32* %10
%37 = load i32, i32* %14
%38 = add nsw i32 %37, 1
%39 = sub nsw i32 %36, %38
store i32 %39, i32* %16
%40 = load i32, i32* %15
%41 = icmp slt i32 %40, 0
br i1 %41, label %46, label %42
42: ; preds = %31
%43 = load i32, i32* %15
%44 = load i32, i32* %9
%45 = icmp sge i32 %43, %44
br i1 %45, label %46, label %50
46: ; preds = %42, %31
%47 = load i32, i32* %14
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [6 x double], [6 x double]* %17, i64 0, i64 %48
store double 0.000000e+00, double* %49
br label %59
50: ; preds = %42
%51 = load double*, double** %8
%52 = load i32, i32* %15
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds double, double* %51, i64 %53
%55 = load double, double* %54
%56 = load i32, i32* %14
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [6 x double], [6 x double]* %17, i64 0, i64 %57
store double %55, double* %58
br label %59
59: ; preds = %50, %46
%60 = load i32, i32* %16
%61 = icmp slt i32 %60, 0
br i1 %61, label %66, label %62
62: ; preds = %59
%63 = load i32, i32* %16
%64 = load i32, i32* %9
%65 = icmp sge i32 %63, %64
br i1 %65, label %66, label %70
66: ; preds = %62, %59
%67 = load i32, i32* %14
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds [6 x double], [6 x double]* %18, i64 0, i64 %68
store double 0.000000e+00, double* %69
br label %79
70: ; preds = %62
%71 = load double*, double** %8
%72 = load i32, i32* %16
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds double, double* %71, i64 %73
%75 = load double, double* %74
%76 = load i32, i32* %14
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [6 x double], [6 x double]* %18, i64 0, i64 %77
store double %75, double* %78
br label %79
79: ; preds = %70, %66
br label %80
80: ; preds = %79
%81 = load i32, i32* %14
%82 = add nsw i32 %81, 1
store i32 %82, i32* %14
br label %28
83: ; preds = %28
%84 = load double*, double** %8
%85 = load i32, i32* %10
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds double, double* %84, i64 %86
%88 = load double, double* %87
%89 = getelementptr inbounds [6 x double], [6 x double]* %17, i64 0, i64 0
%90 = load double, double* %89
%91 = fcmp olt double %88, %90
br i1 %91, label %101, label %92
92: ; preds = %83
%93 = load double*, double** %8
%94 = load i32, i32* %10
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds double, double* %93, i64 %95
%97 = load double, double* %96
%98 = getelementptr inbounds [6 x double], [6 x double]* %18, i64 0, i64 0
%99 = load double, double* %98
%100 = fcmp olt double %97, %99
br i1 %100, label %101, label %102
101: ; preds = %92, %83
br label %232
102: ; preds = %92
%103 = load i32, i32* %10
%104 = icmp sgt i32 %103, 1
br i1 %104, label %105, label %135
105: ; preds = %102
%106 = load i32, i32* %10
%107 = load i32, i32* %11
%108 = icmp slt i32 %106, %107
br i1 %108, label %109, label %135
109: ; preds = %105
%110 = load double*, double** %8
%111 = load i32, i32* %10
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds double, double* %110, i64 %112
%114 = load double, double* %113
%115 = getelementptr inbounds [6 x double], [6 x double]* %17, i64 0, i64 1
%116 = load double, double* %115
%117 = fadd double %116, 6.000000e+00
%118 = fcmp ole double %114, %117
br i1 %118, label %129, label %119
119: ; preds = %109
%120 = load double*, double** %8
%121 = load i32, i32* %10
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds double, double* %120, i64 %122
%124 = load double, double* %123
%125 = getelementptr inbounds [6 x double], [6 x double]* %18, i64 0, i64 1
%126 = load double, double* %125
%127 = fadd double %126, 6.000000e+00
%128 = fcmp ole double %124, %127
br i1 %128, label %129, label %130
129: ; preds = %119, %109
br label %232
130: ; preds = %119
%131 = load i32*, i32** %13
%132 = load i32, i32* %10
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds i32, i32* %131, i64 %133
store i32 1, i32* %134
br label %230
135: ; preds = %105, %102
%136 = load i32, i32* %10
%137 = load i32, i32* %11
%138 = icmp sge i32 %136, %137
br i1 %138, label %139, label %181
139: ; preds = %135
%140 = load i32, i32* %10
%141 = load i32, i32* %12
%142 = icmp slt i32 %140, %141
br i1 %142, label %143, label %181
143: ; preds = %139
store i32 1, i32* %14
br label %144
144: ; preds = %173, %143
%145 = load i32, i32* %14
%146 = icmp sle i32 %145, 2
br i1 %146, label %147, label %176
147: ; preds = %144
%148 = load double*, double** %8
%149 = load i32, i32* %10
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %148, i64 %150
%152 = load double, double* %151
%153 = load i32, i32* %14
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [6 x double], [6 x double]* %17, i64 0, i64 %154
%156 = load double, double* %155
%157 = fadd double %156, 6.000000e+00
%158 = fcmp ole double %152, %157
br i1 %158, label %171, label %159
159: ; preds = %147
%160 = load double*, double** %8
%161 = load i32, i32* %10
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds double, double* %160, i64 %162
%164 = load double, double* %163
%165 = load i32, i32* %14
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [6 x double], [6 x double]* %18, i64 0, i64 %166
%168 = load double, double* %167
%169 = fadd double %168, 6.000000e+00
%170 = fcmp ole double %164, %169
br i1 %170, label %171, label %172
171: ; preds = %159, %147
br label %232
172: ; preds = %159
br label %173
173: ; preds = %172
%174 = load i32, i32* %14
%175 = add nsw i32 %174, 1
store i32 %175, i32* %14
br label %144
176: ; preds = %144
%177 = load i32*, i32** %13
%178 = load i32, i32* %10
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds i32, i32* %177, i64 %179
store i32 1, i32* %180
br label %229
181: ; preds = %139, %135
%182 = load i32, i32* %10
%183 = load i32, i32* %12
%184 = icmp sge i32 %182, %183
br i1 %184, label %185, label %227
185: ; preds = %181
%186 = load i32, i32* %10
%187 = load i32, i32* %9
%188 = icmp slt i32 %186, %187
br i1 %188, label %189, label %227
189: ; preds = %185
store i32 1, i32* %14
br label %190
190: ; preds = %219, %189
%191 = load i32, i32* %14
%192 = icmp sle i32 %191, 5
br i1 %192, label %193, label %222
193: ; preds = %190
%194 = load double*, double** %8
%195 = load i32, i32* %10
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds double, double* %194, i64 %196
%198 = load double, double* %197
%199 = load i32, i32* %14
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds [6 x double], [6 x double]* %17, i64 0, i64 %200
%202 = load double, double* %201
%203 = fadd double %202, 6.000000e+00
%204 = fcmp ole double %198, %203
br i1 %204, label %217, label %205
205: ; preds = %193
%206 = load double*, double** %8
%207 = load i32, i32* %10
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds double, double* %206, i64 %208
%210 = load double, double* %209
%211 = load i32, i32* %14
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds [6 x double], [6 x double]* %18, i64 0, i64 %212
%214 = load double, double* %213
%215 = fadd double %214, 6.000000e+00
%216 = fcmp ole double %210, %215
br i1 %216, label %217, label %218
217: ; preds = %205, %193
br label %232
218: ; preds = %205
br label %219
219: ; preds = %218
%220 = load i32, i32* %14
%221 = add nsw i32 %220, 1
store i32 %221, i32* %14
br label %190
222: ; preds = %190
%223 = load i32*, i32** %13
%224 = load i32, i32* %10
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i32, i32* %223, i64 %225
store i32 1, i32* %226
br label %228
227: ; preds = %185, %181
br label %232
228: ; preds = %222
br label %229
229: ; preds = %228, %176
br label %230
230: ; preds = %229, %130
br label %231
231: ; preds = %230
store i32 1, i32* %7
br label %233
232: ; preds = %227, %217, %171, %129, %101, %26
store i32 0, i32* %7
br label %233
233: ; preds = %232, %231
%234 = load i32, i32* %7
ret i32 %234
}

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