double *noiseremoval(double *sig, int _N) {
  int i, n;
  int D_h = 330;
  int D_l = 91;
  double Num_high[661] = {
      -0.000186, -0.000021, -0.000022, -0.000024, -0.000025, -0.000026,
      -0.000027, -0.000029, -0.000030, -0.000032, -0.000033, -0.000035,
      -0.000037, -0.000038, -0.000040, -0.000042, -0.000044, -0.000046,
      -0.000047, -0.000049, -0.000052, -0.000054, -0.000056, -0.000058,
      -0.000060, -0.000063, -0.000065, -0.000068, -0.000070, -0.000073,
      -0.000075, -0.000078, -0.000081, -0.000084, -0.000087, -0.000090,
      -0.000093, -0.000096, -0.000099, -0.000103, -0.000106, -0.000109,
      -0.000113, -0.000116, -0.000120, -0.000124, -0.000128, -0.000132,
      -0.000136, -0.000140, -0.000144, -0.000148, -0.000152, -0.000157,
      -0.000161, -0.000166, -0.000171, -0.000175, -0.000180, -0.000185,
      -0.000190, -0.000195, -0.000200, -0.000206, -0.000211, -0.000217,
      -0.000222, -0.000228, -0.000234, -0.000240, -0.000246, -0.000252,
      -0.000258, -0.000264, -0.000271, -0.000277, -0.000284, -0.000291,
      -0.000297, -0.000304, -0.000311, -0.000319, -0.000326, -0.000333,
      -0.000341, -0.000348, -0.000356, -0.000364, -0.000372, -0.000380,
      -0.000388, -0.000396, -0.000404, -0.000413, -0.000421, -0.000430,
      -0.000439, -0.000448, -0.000457, -0.000466, -0.000475, -0.000484,
      -0.000494, -0.000504, -0.000513, -0.000523, -0.000533, -0.000543,
      -0.000553, -0.000564, -0.000574, -0.000584, -0.000595, -0.000606,
      -0.000617, -0.000628, -0.000639, -0.000650, -0.000661, -0.000673,
      -0.000684, -0.000696, -0.000708, -0.000720, -0.000732, -0.000744,
      -0.000756, -0.000768, -0.000781, -0.000793, -0.000806, -0.000819,
      -0.000832, -0.000845, -0.000858, -0.000871, -0.000884, -0.000898,
      -0.000911, -0.000925, -0.000939, -0.000952, -0.000966, -0.000980,
      -0.000994, -0.001009, -0.001023, -0.001038, -0.001052, -0.001067,
      -0.001081, -0.001096, -0.001111, -0.001126, -0.001141, -0.001156,
      -0.001172, -0.001187, -0.001202, -0.001218, -0.001234, -0.001249,
      -0.001265, -0.001281, -0.001297, -0.001313, -0.001329, -0.001345,
      -0.001361, -0.001377, -0.001394, -0.001410, -0.001427, -0.001443,
      -0.001460, -0.001476, -0.001493, -0.001510, -0.001527, -0.001544,
      -0.001560, -0.001577, -0.001594, -0.001611, -0.001629, -0.001646,
      -0.001663, -0.001680, -0.001697, -0.001715, -0.001732, -0.001749,
      -0.001767, -0.001784, -0.001801, -0.001819, -0.001836, -0.001854,
      -0.001871, -0.001889, -0.001906, -0.001924, -0.001941, -0.001959,
      -0.001976, -0.001994, -0.002011, -0.002029, -0.002046, -0.002064,
      -0.002081, -0.002099, -0.002116, -0.002133, -0.002151, -0.002168,
      -0.002186, -0.002203, -0.002220, -0.002237, -0.002255, -0.002272,
      -0.002289, -0.002306, -0.002323, -0.002340, -0.002357, -0.002374,
      -0.002390, -0.002407, -0.002424, -0.002440, -0.002457, -0.002473,
      -0.002490, -0.002506, -0.002522, -0.002538, -0.002554, -0.002570,
      -0.002586, -0.002602, -0.002618, -0.002634, -0.002649, -0.002664,
      -0.002680, -0.002695, -0.002710, -0.002725, -0.002740, -0.002755,
      -0.002769, -0.002784, -0.002798, -0.002813, -0.002827, -0.002841,
      -0.002855, -0.002869, -0.002882, -0.002896, -0.002909, -0.002922,
      -0.002935, -0.002948, -0.002961, -0.002974, -0.002986, -0.002998,
      -0.003011, -0.003023, -0.003035, -0.003046, -0.003058, -0.003069,
      -0.003080, -0.003091, -0.003102, -0.003113, -0.003123, -0.003134,
      -0.003144, -0.003154, -0.003163, -0.003173, -0.003182, -0.003192,
      -0.003201, -0.003210, -0.003218, -0.003227, -0.003235, -0.003243,
      -0.003251, -0.003259, -0.003266, -0.003273, -0.003280, -0.003287,
      -0.003294, -0.003300, -0.003307, -0.003313, -0.003318, -0.003324,
      -0.003329, -0.003335, -0.003339, -0.003344, -0.003349, -0.003353,
      -0.003357, -0.003361, -0.003365, -0.003368, -0.003371, -0.003374,
      -0.003377, -0.003380, -0.003382, -0.003384, -0.003386, -0.003388,
      -0.003389, -0.003391, -0.003392, -0.003392, -0.003393, -0.003393,
      0.996607,  -0.003393, -0.003393, -0.003392, -0.003392, -0.003391,
      -0.003389, -0.003388, -0.003386, -0.003384, -0.003382, -0.003380,
      -0.003377, -0.003374, -0.003371, -0.003368, -0.003365, -0.003361,
      -0.003357, -0.003353, -0.003349, -0.003344, -0.003339, -0.003335,
      -0.003329, -0.003324, -0.003318, -0.003313, -0.003307, -0.003300,
      -0.003294, -0.003287, -0.003280, -0.003273, -0.003266, -0.003259,
      -0.003251, -0.003243, -0.003235, -0.003227, -0.003218, -0.003210,
      -0.003201, -0.003192, -0.003182, -0.003173, -0.003163, -0.003154,
      -0.003144, -0.003134, -0.003123, -0.003113, -0.003102, -0.003091,
      -0.003080, -0.003069, -0.003058, -0.003046, -0.003035, -0.003023,
      -0.003011, -0.002998, -0.002986, -0.002974, -0.002961, -0.002948,
      -0.002935, -0.002922, -0.002909, -0.002896, -0.002882, -0.002869,
      -0.002855, -0.002841, -0.002827, -0.002813, -0.002798, -0.002784,
      -0.002769, -0.002755, -0.002740, -0.002725, -0.002710, -0.002695,
      -0.002680, -0.002664, -0.002649, -0.002634, -0.002618, -0.002602,
      -0.002586, -0.002570, -0.002554, -0.002538, -0.002522, -0.002506,
      -0.002490, -0.002473, -0.002457, -0.002440, -0.002424, -0.002407,
      -0.002390, -0.002374, -0.002357, -0.002340, -0.002323, -0.002306,
      -0.002289, -0.002272, -0.002255, -0.002237, -0.002220, -0.002203,
      -0.002186, -0.002168, -0.002151, -0.002133, -0.002116, -0.002099,
      -0.002081, -0.002064, -0.002046, -0.002029, -0.002011, -0.001994,
      -0.001976, -0.001959, -0.001941, -0.001924, -0.001906, -0.001889,
      -0.001871, -0.001854, -0.001836, -0.001819, -0.001801, -0.001784,
      -0.001767, -0.001749, -0.001732, -0.001715, -0.001697, -0.001680,
      -0.001663, -0.001646, -0.001629, -0.001611, -0.001594, -0.001577,
      -0.001560, -0.001544, -0.001527, -0.001510, -0.001493, -0.001476,
      -0.001460, -0.001443, -0.001427, -0.001410, -0.001394, -0.001377,
      -0.001361, -0.001345, -0.001329, -0.001313, -0.001297, -0.001281,
      -0.001265, -0.001249, -0.001234, -0.001218, -0.001202, -0.001187,
      -0.001172, -0.001156, -0.001141, -0.001126, -0.001111, -0.001096,
      -0.001081, -0.001067, -0.001052, -0.001038, -0.001023, -0.001009,
      -0.000994, -0.000980, -0.000966, -0.000952, -0.000939, -0.000925,
      -0.000911, -0.000898, -0.000884, -0.000871, -0.000858, -0.000845,
      -0.000832, -0.000819, -0.000806, -0.000793, -0.000781, -0.000768,
      -0.000756, -0.000744, -0.000732, -0.000720, -0.000708, -0.000696,
      -0.000684, -0.000673, -0.000661, -0.000650, -0.000639, -0.000628,
      -0.000617, -0.000606, -0.000595, -0.000584, -0.000574, -0.000564,
      -0.000553, -0.000543, -0.000533, -0.000523, -0.000513, -0.000504,
      -0.000494, -0.000484, -0.000475, -0.000466, -0.000457, -0.000448,
      -0.000439, -0.000430, -0.000421, -0.000413, -0.000404, -0.000396,
      -0.000388, -0.000380, -0.000372, -0.000364, -0.000356, -0.000348,
      -0.000341, -0.000333, -0.000326, -0.000319, -0.000311, -0.000304,
      -0.000297, -0.000291, -0.000284, -0.000277, -0.000271, -0.000264,
      -0.000258, -0.000252, -0.000246, -0.000240, -0.000234, -0.000228,
      -0.000222, -0.000217, -0.000211, -0.000206, -0.000200, -0.000195,
      -0.000190, -0.000185, -0.000180, -0.000175, -0.000171, -0.000166,
      -0.000161, -0.000157, -0.000152, -0.000148, -0.000144, -0.000140,
      -0.000136, -0.000132, -0.000128, -0.000124, -0.000120, -0.000116,
      -0.000113, -0.000109, -0.000106, -0.000103, -0.000099, -0.000096,
      -0.000093, -0.000090, -0.000087, -0.000084, -0.000081, -0.000078,
      -0.000075, -0.000073, -0.000070, -0.000068, -0.000065, -0.000063,
      -0.000060, -0.000058, -0.000056, -0.000054, -0.000052, -0.000049,
      -0.000047, -0.000046, -0.000044, -0.000042, -0.000040, -0.000038,
      -0.000037, -0.000035, -0.000033, -0.000032, -0.000030, -0.000029,
      -0.000027, -0.000026, -0.000025, -0.000024, -0.000022, -0.000021,
      -0.000186};
  int hlen = 661;
  double Num_low[183] = {
      0.000220,  0.000580,  0.001199,  0.002057,  0.003064,  0.004039,
      0.004736,  0.004906,  0.004369,  0.003091,  0.001230,  -0.000873,
      -0.002771, -0.004021, -0.004324, -0.003634, -0.002187, -0.000455,
      0.000996,  0.001688,  0.001391,  0.000217,  -0.001410, -0.002888,
      -0.003654, -0.003390, -0.002154, -0.000378, 0.001280,  0.002174,
      0.001923,  0.000571,  -0.001402, -0.003245, -0.004210, -0.003854,
      -0.002229, 0.000103,  0.002260,  0.003370,  0.002923,  0.000994,
      -0.001739, -0.004229, -0.005449, -0.004811, -0.002434, 0.000856,
      0.003802,  0.005190,  0.004345,  0.001442,  -0.002498, -0.005955,
      -0.007486, -0.006312, -0.002689, 0.002116,  0.006248,  0.007973,
      0.006386,  0.001847,  -0.004052, -0.009025, -0.010952, -0.008757,
      -0.002936, 0.004490,  0.010644,  0.012868,  0.009822,  0.002167,
      -0.007485, -0.015398, -0.018080, -0.013720, -0.003126, 0.010240,
      0.021267,  0.024964,  0.018440,  0.002373,  -0.018608, -0.036909,
      -0.044107, -0.033650, -0.003231, 0.043933,  0.099453,  0.151723,
      0.188960,  0.202443,  0.188960,  0.151723,  0.099453,  0.043933,
      -0.003231, -0.033650, -0.044107, -0.036909, -0.018608, 0.002373,
      0.018440,  0.024964,  0.021267,  0.010240,  -0.003126, -0.013720,
      -0.018080, -0.015398, -0.007485, 0.002167,  0.009822,  0.012868,
      0.010644,  0.004490,  -0.002936, -0.008757, -0.010952, -0.009025,
      -0.004052, 0.001847,  0.006386,  0.007973,  0.006248,  0.002116,
      -0.002689, -0.006312, -0.007486, -0.005955, -0.002498, 0.001442,
      0.004345,  0.005190,  0.003802,  0.000856,  -0.002434, -0.004811,
      -0.005449, -0.004229, -0.001739, 0.000994,  0.002923,  0.003370,
      0.002260,  0.000103,  -0.002229, -0.003854, -0.004210, -0.003245,
      -0.001402, 0.000571,  0.001923,  0.002174,  0.001280,  -0.000378,
      -0.002154, -0.003390, -0.003654, -0.002888, -0.001410, 0.000217,
      0.001391,  0.001688,  0.000996,  -0.000455, -0.002187, -0.003634,
      -0.004324, -0.004021, -0.002771, -0.000873, 0.001230,  0.003091,
      0.004369,  0.004906,  0.004736,  0.004039,  0.003064,  0.002057,
      0.001199,  0.000580,  0.000220};
  int llen = 183;
  double *ext_sig_high = (double *)malloc((_N + D_h) * sizeof(double));
  double *ext_sig_low = (double *)malloc((_N + D_l) * sizeof(double));
  double *y_high_ext = (double *)malloc((_N + D_h) * sizeof(double));
  double *y_low_ext = (double *)malloc((_N + D_l) * sizeof(double));
  double *y_high = (double *)malloc((_N) * sizeof(double));
  double *sig_filt = (double *)malloc((_N) * sizeof(double));
  for (i = 0; i < _N; i++) {
    ext_sig_high[i] = sig[i];
  }
  for (i = _N; i < _N + D_h; i++) {
    ext_sig_high[i] = 0;
  }
  for (n = 0; n < (_N + D_h); n++) {
    y_high_ext[n] = 0;
    for (i = 0; i < hlen; i++) {
      if ((n - i) >= 0) {
        y_high_ext[n] = y_high_ext[n] + Num_high[i] * ext_sig_high[n - i];
      }
    }
  }
  for (i = D_h; i < (D_h + _N); i++) {
    y_high[i - D_h] = y_high_ext[i];
  }
  for (i = 0; i < _N; i++) {
    ext_sig_low[i] = y_high[i];
  }
  for (i = _N; i < _N + D_l; i++) {
    ext_sig_low[i] = 0;
  }
  for (n = 0; n < (_N + D_l); n++) {
    y_low_ext[n] = 0;
    for (i = 0; i < llen; i++) {
      if ((n - i) >= 0) {
        y_low_ext[n] = y_low_ext[n] + Num_low[i] * ext_sig_low[n - i];
      }
    }
  }
  for (i = D_l; i < (D_l + _N); i++) {
    sig_filt[i - D_l] = y_low_ext[i];
  }
  free(ext_sig_high);
  free(ext_sig_low);
  free(y_high_ext);
  free(y_low_ext);
  free(y_high);
  return (sig_filt);
}


x86 assembly (clang, -O0):
<noiseremoval>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1ad0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x14a,-0x18(%rbp)
movl   $0x5b,-0x1c(%rbp)
lea    -0x14d0(%rbp),%rdi
lea    0xea2(%rip),%rsi
mov    $0x14a8,%edx
call   1040 <memcpy@plt>
movl   $0x295,-0x14d4(%rbp)
lea    -0x1a90(%rbp),%rdi
lea    0x2330(%rip),%rsi
mov    $0x5b8,%edx
call   1040 <memcpy@plt>
movl   $0xb7,-0x1a94(%rbp)
mov    -0xc(%rbp),%eax
add    -0x18(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1aa0(%rbp)
mov    -0xc(%rbp),%eax
add    -0x1c(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1aa8(%rbp)
mov    -0xc(%rbp),%eax
add    -0x18(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1ab0(%rbp)
mov    -0xc(%rbp),%eax
add    -0x1c(%rbp),%eax
movslq %eax,%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1ab8(%rbp)
movslq -0xc(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1ac0(%rbp)
movslq -0xc(%rbp),%rdi
shl    $0x3,%rdi
call   1050 <malloc@plt>
mov    %rax,-0x1ac8(%rbp)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    125e <noiseremoval+0x12e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x1aa0(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1227 <noiseremoval+0xf7>
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0xc(%rbp),%ecx
add    -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    1296 <noiseremoval+0x166>
mov    -0x1aa0(%rbp),%rax
movslq -0x10(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1264 <noiseremoval+0x134>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0xc(%rbp),%ecx
add    -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    1356 <noiseremoval+0x226>
mov    -0x1ab0(%rbp),%rax
movslq -0x14(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x14d4(%rbp),%eax
jge    1343 <noiseremoval+0x213>
mov    -0x14(%rbp),%eax
sub    -0x10(%rbp),%eax
cmp    $0x0,%eax
jl     1330 <noiseremoval+0x200>
mov    -0x1ab0(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movslq -0x10(%rbp),%rax
movsd  -0x14d0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x1aa0(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    -0x10(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x1ab0(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1335 <noiseremoval+0x205>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    12c8 <noiseremoval+0x198>
jmp    1348 <noiseremoval+0x218>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    129d <noiseremoval+0x16d>
mov    -0x18(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    13a0 <noiseremoval+0x270>
mov    -0x1ab0(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x1ac0(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    -0x18(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    135c <noiseremoval+0x22c>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    13e1 <noiseremoval+0x2b1>
mov    -0x1ac0(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x1aa8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    13a7 <noiseremoval+0x277>
mov    -0xc(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0xc(%rbp),%ecx
add    -0x1c(%rbp),%ecx
cmp    %ecx,%eax
jge    1419 <noiseremoval+0x2e9>
mov    -0x1aa8(%rbp),%rax
movslq -0x10(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    13e7 <noiseremoval+0x2b7>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0xc(%rbp),%ecx
add    -0x1c(%rbp),%ecx
cmp    %ecx,%eax
jge    14d9 <noiseremoval+0x3a9>
mov    -0x1ab8(%rbp),%rax
movslq -0x14(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0x1a94(%rbp),%eax
jge    14c6 <noiseremoval+0x396>
mov    -0x14(%rbp),%eax
sub    -0x10(%rbp),%eax
cmp    $0x0,%eax
jl     14b3 <noiseremoval+0x383>
mov    -0x1ab8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movslq -0x10(%rbp),%rax
movsd  -0x1a90(%rbp,%rax,8),%xmm0
ff ff
mov    -0x1aa8(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    -0x10(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x1ab8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    14b8 <noiseremoval+0x388>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    144b <noiseremoval+0x31b>
jmp    14cb <noiseremoval+0x39b>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1420 <noiseremoval+0x2f0>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
mov    -0x1c(%rbp),%ecx
add    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    1523 <noiseremoval+0x3f3>
mov    -0x1ab8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x1ac8(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    -0x1c(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    14df <noiseremoval+0x3af>
mov    -0x1aa0(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1aa8(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1ab0(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1ab8(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1ac0(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1ac8(%rbp),%rax
add    $0x1ad0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<noiseremoval>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %esi,%r12d
mov    %rdi,0x8(%rsp)
movslq %esi,%r13
lea    0xa50(,%r13,8),%rbx
mov    %rbx,%rdi
call   1060 <malloc@plt>
mov    %rax,%r15
lea    0x2d8(,%r13,8),%rbp
mov    %rbp,%rdi
call   1060 <malloc@plt>
mov    %rax,%r14
mov    %rbx,%rdi
call   1060 <malloc@plt>
mov    %rax,%rbx
mov    %rbp,%rdi
mov    %r12,%rbp
call   1060 <malloc@plt>
mov    %rax,%r12
shl    $0x3,%r13
mov    %r13,%rdi
call   1060 <malloc@plt>
mov    %rax,0x18(%rsp)
mov    %r13,%rdi
call   1060 <malloc@plt>
mov    %rax,0x10(%rsp)
mov    %ebp,%eax
test   %ebp,%ebp
mov    %rax,0x20(%rsp)
jle    11ea <noiseremoval+0xaa>
lea    0x0(,%rax,8),%rdx
mov    %r15,%rdi
mov    0x8(%rsp),%rsi
call   1050 <memcpy@plt>
mov    %r15,%rdi
add    %r13,%rdi
mov    $0xa50,%edx
xor    %esi,%esi
call   1040 <memset@plt>
jmp    1208 <noiseremoval+0xc8>
mov    %r15,%rdi
add    %r13,%rdi
mov    $0xa50,%edx
xor    %esi,%esi
call   1040 <memset@plt>
cmp    $0xfffffeb6,%ebp
jle    13ef <noiseremoval+0x2af>
lea    0x14a(%rbp),%r8d
mov    %rbp,0x8(%rsp)
lea    0x5b(%rbp),%eax
mov    %eax,0x4(%rsp)
mov    %r8d,%ecx
xor    %eax,%eax
lea    0xdd9(%rip),%rsi
jmp    1239 <noiseremoval+0xf9>
nopl   0x0(%rax)
add    $0x1,%rax
cmp    %rcx,%rax
je     129e <noiseremoval+0x15e>
movq   $0x0,(%rbx,%rax,8)
xorpd  %xmm0,%xmm0
mov    $0x1,%edi
mov    %rax,%rbp
jmp    1258 <noiseremoval+0x118>
nop
add    $0x2,%rdi
add    $0xfffffffffffffffe,%rbp
test   %rbp,%rbp
js     1274 <noiseremoval+0x134>
movsd  -0x8(%rsi,%rdi,8),%xmm1
mov    %ebp,%edx
mulsd  (%r15,%rdx,8),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx,%rax,8)
cmp    $0x295,%rdi
je     1230 <noiseremoval+0xf0>
mov    %rbp,%rdx
add    $0xffffffffffffffff,%rdx
js     1250 <noiseremoval+0x110>
movsd  (%rsi,%rdi,8),%xmm1
mov    %edx,%edx
mulsd  (%r15,%rdx,8),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx,%rax,8)
jmp    1250 <noiseremoval+0x110>
mov    0x8(%rsp),%rbp
test   %ebp,%ebp
jle    130a <noiseremoval+0x1ca>
mov    %rbx,%rsi
add    $0xa50,%rsi
cmp    $0x14c,%r8d
mov    $0x14b,%edx
cmovge %r8d,%edx
add    $0xfffffeb6,%edx
shl    $0x3,%rdx
mov    0x18(%rsp),%rbp
mov    %rbp,%rdi
call   1050 <memcpy@plt>
mov    0x20(%rsp),%rdx
shl    $0x3,%rdx
mov    %r14,%rdi
mov    %rbp,%rsi
call   1050 <memcpy@plt>
mov    %r14,%rdi
add    %r13,%rdi
mov    $0x2d8,%edx
xor    %esi,%esi
call   1040 <memset@plt>
mov    0x10(%rsp),%r13
mov    0x4(%rsp),%r8d
jmp    132f <noiseremoval+0x1ef>
mov    %r14,%rdi
add    %r13,%rdi
mov    $0x2d8,%edx
xor    %esi,%esi
call   1040 <memset@plt>
cmp    $0xffffffa6,%ebp
mov    0x10(%rsp),%r13
mov    0x4(%rsp),%r8d
jl     1406 <noiseremoval+0x2c6>
cmp    $0x2,%r8d
mov    $0x1,%eax
cmovge %r8d,%eax
xor    %ebp,%ebp
lea    0x216b(%rip),%rdx
jmp    1359 <noiseremoval+0x219>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rbp
cmp    %rax,%rbp
je     13c0 <noiseremoval+0x280>
movq   $0x0,(%r12,%rbp,8)
xorpd  %xmm0,%xmm0
mov    $0x1,%esi
mov    %rbp,%rcx
jmp    1378 <noiseremoval+0x238>
nop
add    $0x2,%rsi
add    $0xfffffffffffffffe,%rcx
test   %rcx,%rcx
js     1395 <noiseremoval+0x255>
movsd  -0x8(%rdx,%rsi,8),%xmm1
mov    %ecx,%edi
mulsd  (%r14,%rdi,8),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,(%r12,%rbp,8)
cmp    $0xb7,%rsi
je     1350 <noiseremoval+0x210>
mov    %rcx,%rdi
add    $0xffffffffffffffff,%rdi
js     1370 <noiseremoval+0x230>
movsd  (%rdx,%rsi,8),%xmm1
mov    %edi,%edi
mulsd  (%r14,%rdi,8),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,(%r12,%rbp,8)
jmp    1370 <noiseremoval+0x230>
cmpl   $0x0,0x8(%rsp)
jle    1406 <noiseremoval+0x2c6>
mov    %r12,%rsi
add    $0x2d8,%rsi
cmp    $0x5d,%r8d
mov    $0x5c,%edx
cmovge %r8d,%edx
add    $0xffffffa5,%edx
shl    $0x3,%rdx
mov    %r13,%rdi
call   1050 <memcpy@plt>
jmp    1406 <noiseremoval+0x2c6>
mov    %r14,%rdi
add    %r13,%rdi
mov    $0x2d8,%edx
xor    %esi,%esi
call   1040 <memset@plt>
mov    0x10(%rsp),%r13
mov    %r15,%rdi
call   1030 <free@plt>
mov    %r14,%rdi
call   1030 <free@plt>
mov    %rbx,%rdi
call   1030 <free@plt>
mov    %r12,%rdi
call   1030 <free@plt>
mov    0x18(%rsp),%rdi
call   1030 <free@plt>
mov    %r13,%rax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.noiseremoval.Num_high = [661 x double] [double -1.860000e-04, double -2.100000e-05, double -2.200000e-05, double -2.400000e-05, double -2.500000e-05, double -2.600000e-05, double -2.700000e-05, double -2.900000e-05, double -3.000000e-05, double -3.200000e-05, double -3.300000e-05, double -3.500000e-05, double -3.700000e-05, double -3.800000e-05, double -4.000000e-05, double -4.200000e-05, double -4.400000e-05, double -4.600000e-05, double -4.700000e-05, double -4.900000e-05, double -5.200000e-05, double -5.400000e-05, double -5.600000e-05, double -5.800000e-05, double -6.000000e-05, double -6.300000e-05, double -6.500000e-05, double 0xBF11D3671AC14C66, double 0xBF12599ED7C6FBD2, double -7.300000e-05, double -7.500000e-05, double -7.800000e-05, double -8.100000e-05, double -8.400000e-05, double -8.700000e-05, double -9.000000e-05, double -9.300000e-05, double -9.600000e-05, double 0xBF19F3C70C996B76, double -1.030000e-04, double -1.060000e-04, double -1.090000e-04, double -1.130000e-04, double -1.160000e-04, double -1.200000e-04, double -1.240000e-04, double -1.280000e-04, double -1.320000e-04, double -1.360000e-04, double -1.400000e-04, double -1.440000e-04, double -1.480000e-04, double -1.520000e-04, double -1.570000e-04, double -1.610000e-04, double -1.660000e-04, double -1.710000e-04, double -1.750000e-04, double -1.800000e-04, double -1.850000e-04, double -1.900000e-04, double -1.950000e-04, double -2.000000e-04, double -2.060000e-04, double -2.110000e-04, double -2.170000e-04, double -2.220000e-04, double -2.280000e-04, double -2.340000e-04, double -2.400000e-04, double -2.460000e-04, double -2.520000e-04, double -2.580000e-04, double -2.640000e-04, double -2.710000e-04, double -2.770000e-04, double -2.840000e-04, double -2.910000e-04, double -2.970000e-04, double -3.040000e-04, double -3.110000e-04, double -3.190000e-04, double -3.260000e-04, double -3.330000e-04, double -3.410000e-04, double -3.480000e-04, double -3.560000e-04, double -3.640000e-04, double -3.720000e-04, double -3.800000e-04, double -3.880000e-04, double -3.960000e-04, double -4.040000e-04, double -4.130000e-04, double -4.210000e-04, double -4.300000e-04, double -4.390000e-04, double -4.480000e-04, double -4.570000e-04, double -4.660000e-04, double -4.750000e-04, double -4.840000e-04, double -4.940000e-04, double -5.040000e-04, double -5.130000e-04, double -5.230000e-04, double -5.330000e-04, double -5.430000e-04, double -5.530000e-04, double -5.640000e-04, double -5.740000e-04, double -5.840000e-04, double -5.950000e-04, double -6.060000e-04, double -6.170000e-04, double -6.280000e-04, double -6.390000e-04, double 0xBF454C985F06F694, double -6.610000e-04, double -6.730000e-04, double -6.840000e-04, double -6.960000e-04, double -7.080000e-04, double -7.200000e-04, double -7.320000e-04, double -7.440000e-04, double -7.560000e-04, double -7.680000e-04, double -7.810000e-04, double -7.930000e-04, double 0xBF4A6937D1FE64F5, double 0xBF4AD6451B93037D, double 0xBF4B43526527A205, double -8.450000e-04, double -8.580000e-04, double -8.710000e-04, double -8.840000e-04, double -8.980000e-04, double -9.110000e-04, double -9.250000e-04, double -9.390000e-04, double -9.520000e-04, double 0xBF4FA76534373F31, double -9.800000e-04, double -9.940000e-04, double -1.009000e-03, double -1.023000e-03, double -1.038000e-03, double -1.052000e-03, double -1.067000e-03, double -1.081000e-03, double -1.096000e-03, double -1.111000e-03, double -1.126000e-03, double -1.141000e-03, double -1.156000e-03, double -1.172000e-03, double -1.187000e-03, double -1.202000e-03, double -1.218000e-03, double -1.234000e-03, double -1.249000e-03, double -1.265000e-03, double -1.281000e-03, double -1.297000e-03, double -1.313000e-03, double -1.329000e-03, double -1.345000e-03, double -1.361000e-03, double -1.377000e-03, double -1.394000e-03, double -1.410000e-03, double -1.427000e-03, double -1.443000e-03, double -1.460000e-03, double -1.476000e-03, double -1.493000e-03, double -1.510000e-03, double -1.527000e-03, double -1.544000e-03, double -1.560000e-03, double -1.577000e-03, double -1.594000e-03, double -1.611000e-03, double -1.629000e-03, double -1.646000e-03, double -1.663000e-03, double -1.680000e-03, double -1.697000e-03, double -1.715000e-03, double -1.732000e-03, double -1.749000e-03, double -1.767000e-03, double -1.784000e-03, double -1.801000e-03, double -1.819000e-03, double -1.836000e-03, double -1.854000e-03, double -1.871000e-03, double -1.889000e-03, double -1.906000e-03, double -1.924000e-03, double -1.941000e-03, double -1.959000e-03, double -1.976000e-03, double -1.994000e-03, double -2.011000e-03, double -2.029000e-03, double -2.046000e-03, double -2.064000e-03, double -2.081000e-03, double -2.099000e-03, double -2.116000e-03, double -2.133000e-03, double -2.151000e-03, double -2.168000e-03, double -2.186000e-03, double -2.203000e-03, double -2.220000e-03, double -2.237000e-03, double -2.255000e-03, double -2.272000e-03, double -2.289000e-03, double -2.306000e-03, double -2.323000e-03, double -2.340000e-03, double -2.357000e-03, double -2.374000e-03, double -2.390000e-03, double -2.407000e-03, double -2.424000e-03, double -2.440000e-03, double -2.457000e-03, double -2.473000e-03, double -2.490000e-03, double -2.506000e-03, double -2.522000e-03, double -2.538000e-03, double -2.554000e-03, double -2.570000e-03, double -2.586000e-03, double -2.602000e-03, double -2.618000e-03, double -2.634000e-03, double -2.649000e-03, double -2.664000e-03, double -2.680000e-03, double -2.695000e-03, double -2.710000e-03, double -2.725000e-03, double -2.740000e-03, double -2.755000e-03, double -2.769000e-03, double -2.784000e-03, double -2.798000e-03, double -2.813000e-03, double -2.827000e-03, double -2.841000e-03, double -2.855000e-03, double -2.869000e-03, double -2.882000e-03, double -2.896000e-03, double -2.909000e-03, double -2.922000e-03, double -2.935000e-03, double -2.948000e-03, double -2.961000e-03, double -2.974000e-03, double -2.986000e-03, double -2.998000e-03, double -3.011000e-03, double -3.023000e-03, double -3.035000e-03, double -3.046000e-03, double -3.058000e-03, double -3.069000e-03, double -3.080000e-03, double -3.091000e-03, double -3.102000e-03, double -3.113000e-03, double -3.123000e-03, double -3.134000e-03, double -3.144000e-03, double -3.154000e-03, double -3.163000e-03, double -3.173000e-03, double -3.182000e-03, double -3.192000e-03, double -3.201000e-03, double -3.210000e-03, double -3.218000e-03, double -3.227000e-03, double -3.235000e-03, double -3.243000e-03, double -3.251000e-03, double -3.259000e-03, double -3.266000e-03, double -3.273000e-03, double -3.280000e-03, double -3.287000e-03, double -3.294000e-03, double -3.300000e-03, double -3.307000e-03, double -3.313000e-03, double -3.318000e-03, double -3.324000e-03, double -3.329000e-03, double -3.335000e-03, double -3.339000e-03, double -3.344000e-03, double -3.349000e-03, double -3.353000e-03, double -3.357000e-03, double -3.361000e-03, double -3.365000e-03, double -3.368000e-03, double -3.371000e-03, double -3.374000e-03, double -3.377000e-03, double -3.380000e-03, double -3.382000e-03, double -3.384000e-03, double -3.386000e-03, double -3.388000e-03, double -3.389000e-03, double -3.391000e-03, double -3.392000e-03, double -3.392000e-03, double -3.393000e-03, double -3.393000e-03, double 9.966070e-01, double -3.393000e-03, double -3.393000e-03, double -3.392000e-03, double -3.392000e-03, double -3.391000e-03, double -3.389000e-03, double -3.388000e-03, double -3.386000e-03, double -3.384000e-03, double -3.382000e-03, double -3.380000e-03, double -3.377000e-03, double -3.374000e-03, double -3.371000e-03, double -3.368000e-03, double -3.365000e-03, double -3.361000e-03, double -3.357000e-03, double -3.353000e-03, double -3.349000e-03, double -3.344000e-03, double -3.339000e-03, double -3.335000e-03, double -3.329000e-03, double -3.324000e-03, double -3.318000e-03, double -3.313000e-03, double -3.307000e-03, double -3.300000e-03, double -3.294000e-03, double -3.287000e-03, double -3.280000e-03, double -3.273000e-03, double -3.266000e-03, double -3.259000e-03, double -3.251000e-03, double -3.243000e-03, double -3.235000e-03, double -3.227000e-03, double -3.218000e-03, double -3.210000e-03, double -3.201000e-03, double -3.192000e-03, double -3.182000e-03, double -3.173000e-03, double -3.163000e-03, double -3.154000e-03, double -3.144000e-03, double -3.134000e-03, double -3.123000e-03, double -3.113000e-03, double -3.102000e-03, double -3.091000e-03, double -3.080000e-03, double -3.069000e-03, double -3.058000e-03, double -3.046000e-03, double -3.035000e-03, double -3.023000e-03, double -3.011000e-03, double -2.998000e-03, double -2.986000e-03, double -2.974000e-03, double -2.961000e-03, double -2.948000e-03, double -2.935000e-03, double -2.922000e-03, double -2.909000e-03, double -2.896000e-03, double -2.882000e-03, double -2.869000e-03, double -2.855000e-03, double -2.841000e-03, double -2.827000e-03, double -2.813000e-03, double -2.798000e-03, double -2.784000e-03, double -2.769000e-03, double -2.755000e-03, double -2.740000e-03, double -2.725000e-03, double -2.710000e-03, double -2.695000e-03, double -2.680000e-03, double -2.664000e-03, double -2.649000e-03, double -2.634000e-03, double -2.618000e-03, double -2.602000e-03, double -2.586000e-03, double -2.570000e-03, double -2.554000e-03, double -2.538000e-03, double -2.522000e-03, double -2.506000e-03, double -2.490000e-03, double -2.473000e-03, double -2.457000e-03, double -2.440000e-03, double -2.424000e-03, double -2.407000e-03, double -2.390000e-03, double -2.374000e-03, double -2.357000e-03, double -2.340000e-03, double -2.323000e-03, double -2.306000e-03, double -2.289000e-03, double -2.272000e-03, double -2.255000e-03, double -2.237000e-03, double -2.220000e-03, double -2.203000e-03, double -2.186000e-03, double -2.168000e-03, double -2.151000e-03, double -2.133000e-03, double -2.116000e-03, double -2.099000e-03, double -2.081000e-03, double -2.064000e-03, double -2.046000e-03, double -2.029000e-03, double -2.011000e-03, double -1.994000e-03, double -1.976000e-03, double -1.959000e-03, double -1.941000e-03, double -1.924000e-03, double -1.906000e-03, double -1.889000e-03, double -1.871000e-03, double -1.854000e-03, double -1.836000e-03, double -1.819000e-03, double -1.801000e-03, double -1.784000e-03, double -1.767000e-03, double -1.749000e-03, double -1.732000e-03, double -1.715000e-03, double -1.697000e-03, double -1.680000e-03, double -1.663000e-03, double -1.646000e-03, double -1.629000e-03, double -1.611000e-03, double -1.594000e-03, double -1.577000e-03, double -1.560000e-03, double -1.544000e-03, double -1.527000e-03, double -1.510000e-03, double -1.493000e-03, double -1.476000e-03, double -1.460000e-03, double -1.443000e-03, double -1.427000e-03, double -1.410000e-03, double -1.394000e-03, double -1.377000e-03, double -1.361000e-03, double -1.345000e-03, double -1.329000e-03, double -1.313000e-03, double -1.297000e-03, double -1.281000e-03, double -1.265000e-03, double -1.249000e-03, double -1.234000e-03, double -1.218000e-03, double -1.202000e-03, double -1.187000e-03, double -1.172000e-03, double -1.156000e-03, double -1.141000e-03, double -1.126000e-03, double -1.111000e-03, double -1.096000e-03, double -1.081000e-03, double -1.067000e-03, double -1.052000e-03, double -1.038000e-03, double -1.023000e-03, double -1.009000e-03, double -9.940000e-04, double -9.800000e-04, double 0xBF4FA76534373F31, double -9.520000e-04, double -9.390000e-04, double -9.250000e-04, double -9.110000e-04, double -8.980000e-04, double -8.840000e-04, double -8.710000e-04, double -8.580000e-04, double -8.450000e-04, double 0xBF4B43526527A205, double 0xBF4AD6451B93037D, double 0xBF4A6937D1FE64F5, double -7.930000e-04, double -7.810000e-04, double -7.680000e-04, double -7.560000e-04, double -7.440000e-04, double -7.320000e-04, double -7.200000e-04, double -7.080000e-04, double -6.960000e-04, double -6.840000e-04, double -6.730000e-04, double -6.610000e-04, double 0xBF454C985F06F694, double -6.390000e-04, double -6.280000e-04, double -6.170000e-04, double -6.060000e-04, double -5.950000e-04, double -5.840000e-04, double -5.740000e-04, double -5.640000e-04, double -5.530000e-04, double -5.430000e-04, double -5.330000e-04, double -5.230000e-04, double -5.130000e-04, double -5.040000e-04, double -4.940000e-04, double -4.840000e-04, double -4.750000e-04, double -4.660000e-04, double -4.570000e-04, double -4.480000e-04, double -4.390000e-04, double -4.300000e-04, double -4.210000e-04, double -4.130000e-04, double -4.040000e-04, double -3.960000e-04, double -3.880000e-04, double -3.800000e-04, double -3.720000e-04, double -3.640000e-04, double -3.560000e-04, double -3.480000e-04, double -3.410000e-04, double -3.330000e-04, double -3.260000e-04, double -3.190000e-04, double -3.110000e-04, double -3.040000e-04, double -2.970000e-04, double -2.910000e-04, double -2.840000e-04, double -2.770000e-04, double -2.710000e-04, double -2.640000e-04, double -2.580000e-04, double -2.520000e-04, double -2.460000e-04, double -2.400000e-04, double -2.340000e-04, double -2.280000e-04, double -2.220000e-04, double -2.170000e-04, double -2.110000e-04, double -2.060000e-04, double -2.000000e-04, double -1.950000e-04, double -1.900000e-04, double -1.850000e-04, double -1.800000e-04, double -1.750000e-04, double -1.710000e-04, double -1.660000e-04, double -1.610000e-04, double -1.570000e-04, double -1.520000e-04, double -1.480000e-04, double -1.440000e-04, double -1.400000e-04, double -1.360000e-04, double -1.320000e-04, double -1.280000e-04, double -1.240000e-04, double -1.200000e-04, double -1.160000e-04, double -1.130000e-04, double -1.090000e-04, double -1.060000e-04, double -1.030000e-04, double 0xBF19F3C70C996B76, double -9.600000e-05, double -9.300000e-05, double -9.000000e-05, double -8.700000e-05, double -8.400000e-05, double -8.100000e-05, double -7.800000e-05, double -7.500000e-05, double -7.300000e-05, double 0xBF12599ED7C6FBD2, double 0xBF11D3671AC14C66, double -6.500000e-05, double -6.300000e-05, double -6.000000e-05, double -5.800000e-05, double -5.600000e-05, double -5.400000e-05, double -5.200000e-05, double -4.900000e-05, double -4.700000e-05, double -4.600000e-05, double -4.400000e-05, double -4.200000e-05, double -4.000000e-05, double -3.800000e-05, double -3.700000e-05, double -3.500000e-05, double -3.300000e-05, double -3.200000e-05, double -3.000000e-05, double -2.900000e-05, double -2.700000e-05, double -2.600000e-05, double -2.500000e-05, double -2.400000e-05, double -2.200000e-05, double -2.100000e-05, double -1.860000e-04]
@__const.noiseremoval.Num_low = [183 x double] [double 2.200000e-04, double 5.800000e-04, double 1.199000e-03, double 2.057000e-03, double 3.064000e-03, double 4.039000e-03, double 4.736000e-03, double 4.906000e-03, double 4.369000e-03, double 3.091000e-03, double 1.230000e-03, double 0xBF4C9B413986338B, double -2.771000e-03, double -4.021000e-03, double -4.324000e-03, double -3.634000e-03, double -2.187000e-03, double -4.550000e-04, double 0x3F505186DB50F40E, double 1.688000e-03, double 1.391000e-03, double 2.170000e-04, double -1.410000e-03, double -2.888000e-03, double -3.654000e-03, double -3.390000e-03, double -2.154000e-03, double -3.780000e-04, double 1.280000e-03, double 2.174000e-03, double 1.923000e-03, double 5.710000e-04, double -1.402000e-03, double -3.245000e-03, double -4.210000e-03, double -3.854000e-03, double -2.229000e-03, double 1.030000e-04, double 2.260000e-03, double 3.370000e-03, double 2.923000e-03, double 9.940000e-04, double -1.739000e-03, double -4.229000e-03, double -5.449000e-03, double -4.811000e-03, double -2.434000e-03, double 0x3F4C0CA600B02928, double 3.802000e-03, double 5.190000e-03, double 4.345000e-03, double 1.442000e-03, double -2.498000e-03, double -5.955000e-03, double 0xBF7EA9A3D2D87F88, double -6.312000e-03, double -2.689000e-03, double 2.116000e-03, double 6.248000e-03, double 0x3F805425F202107B, double 6.386000e-03, double 1.847000e-03, double -4.052000e-03, double -9.025000e-03, double -1.095200e-02, double 0xBF81EF30A4E379B7, double -2.936000e-03, double 4.490000e-03, double 1.064400e-02, double 1.286800e-02, double 0x3F841D8E86402081, double 2.167000e-03, double -7.485000e-03, double -1.539800e-02, double -1.808000e-02, double -1.372000e-02, double -3.126000e-03, double 1.024000e-02, double 2.126700e-02, double 2.496400e-02, double 1.844000e-02, double 2.373000e-03, double -1.860800e-02, double -3.690900e-02, double -4.410700e-02, double -3.365000e-02, double -3.231000e-03, double 4.393300e-02, double 0x3FB975C0767D34DF, double 1.517230e-01, double 1.889600e-01, double 2.024430e-01, double 1.889600e-01, double 1.517230e-01, double 0x3FB975C0767D34DF, double 4.393300e-02, double -3.231000e-03, double -3.365000e-02, double -4.410700e-02, double -3.690900e-02, double -1.860800e-02, double 2.373000e-03, double 1.844000e-02, double 2.496400e-02, double 2.126700e-02, double 1.024000e-02, double -3.126000e-03, double -1.372000e-02, double -1.808000e-02, double -1.539800e-02, double -7.485000e-03, double 2.167000e-03, double 0x3F841D8E86402081, double 1.286800e-02, double 1.064400e-02, double 4.490000e-03, double -2.936000e-03, double 0xBF81EF30A4E379B7, double -1.095200e-02, double -9.025000e-03, double -4.052000e-03, double 1.847000e-03, double 6.386000e-03, double 0x3F805425F202107B, double 6.248000e-03, double 2.116000e-03, double -2.689000e-03, double -6.312000e-03, double 0xBF7EA9A3D2D87F88, double -5.955000e-03, double -2.498000e-03, double 1.442000e-03, double 4.345000e-03, double 5.190000e-03, double 3.802000e-03, double 0x3F4C0CA600B02928, double -2.434000e-03, double -4.811000e-03, double -5.449000e-03, double -4.229000e-03, double -1.739000e-03, double 9.940000e-04, double 2.923000e-03, double 3.370000e-03, double 2.260000e-03, double 1.030000e-04, double -2.229000e-03, double -3.854000e-03, double -4.210000e-03, double -3.245000e-03, double -1.402000e-03, double 5.710000e-04, double 1.923000e-03, double 2.174000e-03, double 1.280000e-03, double -3.780000e-04, double -2.154000e-03, double -3.390000e-03, double -3.654000e-03, double -2.888000e-03, double -1.410000e-03, double 2.170000e-04, double 1.391000e-03, double 1.688000e-03, double 0x3F505186DB50F40E, double -4.550000e-04, double -2.187000e-03, double -3.634000e-03, double -4.324000e-03, double -4.021000e-03, double -2.771000e-03, double 0xBF4C9B413986338B, double 1.230000e-03, double 3.091000e-03, double 4.369000e-03, double 4.906000e-03, double 4.736000e-03, double 4.039000e-03, double 3.064000e-03, double 2.057000e-03, double 1.199000e-03, double 5.800000e-04, double 2.200000e-04]
define double* @noiseremoval(double* %0, i32 %1) {
%3 = alloca double*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca [661 x double]
%10 = alloca i32
%11 = alloca [183 x double]
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca double*
%18 = alloca double*
store double* %0, double** %3
store i32 %1, i32* %4
store i32 330, i32* %7
store i32 91, i32* %8
%19 = bitcast [661 x double]* %9 to i8*
store i32 661, i32* %10
%20 = bitcast [183 x double]* %11 to i8*
store i32 183, i32* %12
%21 = load i32, i32* %4
%22 = load i32, i32* %7
%23 = add nsw i32 %21, %22
%24 = sext i32 %23 to i64
%25 = mul i64 %24, 8
%26 = call i8* @malloc(i64 %25)
%27 = bitcast i8* %26 to double*
store double* %27, double** %13
%28 = load i32, i32* %4
%29 = load i32, i32* %8
%30 = add nsw i32 %28, %29
%31 = sext i32 %30 to i64
%32 = mul i64 %31, 8
%33 = call i8* @malloc(i64 %32)
%34 = bitcast i8* %33 to double*
store double* %34, double** %14
%35 = load i32, i32* %4
%36 = load i32, i32* %7
%37 = add nsw i32 %35, %36
%38 = sext i32 %37 to i64
%39 = mul i64 %38, 8
%40 = call i8* @malloc(i64 %39)
%41 = bitcast i8* %40 to double*
store double* %41, double** %15
%42 = load i32, i32* %4
%43 = load i32, i32* %8
%44 = add nsw i32 %42, %43
%45 = sext i32 %44 to i64
%46 = mul i64 %45, 8
%47 = call i8* @malloc(i64 %46)
%48 = bitcast i8* %47 to double*
store double* %48, double** %16
%49 = load i32, i32* %4
%50 = sext i32 %49 to i64
%51 = mul i64 %50, 8
%52 = call i8* @malloc(i64 %51)
%53 = bitcast i8* %52 to double*
store double* %53, double** %17
%54 = load i32, i32* %4
%55 = sext i32 %54 to i64
%56 = mul i64 %55, 8
%57 = call i8* @malloc(i64 %56)
%58 = bitcast i8* %57 to double*
store double* %58, double** %18
store i32 0, i32* %5
br label %59
59: ; preds = %73, %2
%60 = load i32, i32* %5
%61 = load i32, i32* %4
%62 = icmp slt i32 %60, %61
br i1 %62, label %63, label %76
63: ; preds = %59
%64 = load double*, double** %3
%65 = load i32, i32* %5
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds double, double* %64, i64 %66
%68 = load double, double* %67
%69 = load double*, double** %13
%70 = load i32, i32* %5
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds double, double* %69, i64 %71
store double %68, double* %72
br label %73
73: ; preds = %63
%74 = load i32, i32* %5
%75 = add nsw i32 %74, 1
store i32 %75, i32* %5
br label %59
76: ; preds = %59
%77 = load i32, i32* %4
store i32 %77, i32* %5
br label %78
78: ; preds = %89, %76
%79 = load i32, i32* %5
%80 = load i32, i32* %4
%81 = load i32, i32* %7
%82 = add nsw i32 %80, %81
%83 = icmp slt i32 %79, %82
br i1 %83, label %84, label %92
84: ; preds = %78
%85 = load double*, double** %13
%86 = load i32, i32* %5
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds double, double* %85, i64 %87
store double 0.000000e+00, double* %88
br label %89
89: ; preds = %84
%90 = load i32, i32* %5
%91 = add nsw i32 %90, 1
store i32 %91, i32* %5
br label %78
92: ; preds = %78
store i32 0, i32* %6
br label %93
93: ; preds = %140, %92
%94 = load i32, i32* %6
%95 = load i32, i32* %4
%96 = load i32, i32* %7
%97 = add nsw i32 %95, %96
%98 = icmp slt i32 %94, %97
br i1 %98, label %99, label %143
99: ; preds = %93
%100 = load double*, double** %15
%101 = load i32, i32* %6
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %100, i64 %102
store double 0.000000e+00, double* %103
store i32 0, i32* %5
br label %104
104: ; preds = %136, %99
%105 = load i32, i32* %5
%106 = load i32, i32* %10
%107 = icmp slt i32 %105, %106
br i1 %107, label %108, label %139
108: ; preds = %104
%109 = load i32, i32* %6
%110 = load i32, i32* %5
%111 = sub nsw i32 %109, %110
%112 = icmp sge i32 %111, 0
br i1 %112, label %113, label %135
113: ; preds = %108
%114 = load double*, double** %15
%115 = load i32, i32* %6
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds double, double* %114, i64 %116
%118 = load double, double* %117
%119 = load i32, i32* %5
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [661 x double], [661 x double]* %9, i64 0, i64 %120
%122 = load double, double* %121
%123 = load double*, double** %13
%124 = load i32, i32* %6
%125 = load i32, i32* %5
%126 = sub nsw i32 %124, %125
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds double, double* %123, i64 %127
%129 = load double, double* %128
%130 = call double @llvm.fmuladd.f64(double %122, double %129, double %118)
%131 = load double*, double** %15
%132 = load i32, i32* %6
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %131, i64 %133
store double %130, double* %134
br label %135
135: ; preds = %113, %108
br label %136
136: ; preds = %135
%137 = load i32, i32* %5
%138 = add nsw i32 %137, 1
store i32 %138, i32* %5
br label %104
139: ; preds = %104
br label %140
140: ; preds = %139
%141 = load i32, i32* %6
%142 = add nsw i32 %141, 1
store i32 %142, i32* %6
br label %93
143: ; preds = %93
%144 = load i32, i32* %7
store i32 %144, i32* %5
br label %145
145: ; preds = %163, %143
%146 = load i32, i32* %5
%147 = load i32, i32* %7
%148 = load i32, i32* %4
%149 = add nsw i32 %147, %148
%150 = icmp slt i32 %146, %149
br i1 %150, label %151, label %166
151: ; preds = %145
%152 = load double*, double** %15
%153 = load i32, i32* %5
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds double, double* %152, i64 %154
%156 = load double, double* %155
%157 = load double*, double** %17
%158 = load i32, i32* %5
%159 = load i32, i32* %7
%160 = sub nsw i32 %158, %159
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds double, double* %157, i64 %161
store double %156, double* %162
br label %163
163: ; preds = %151
%164 = load i32, i32* %5
%165 = add nsw i32 %164, 1
store i32 %165, i32* %5
br label %145
166: ; preds = %145
store i32 0, i32* %5
br label %167
167: ; preds = %181, %166
%168 = load i32, i32* %5
%169 = load i32, i32* %4
%170 = icmp slt i32 %168, %169
br i1 %170, label %171, label %184
171: ; preds = %167
%172 = load double*, double** %17
%173 = load i32, i32* %5
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds double, double* %172, i64 %174
%176 = load double, double* %175
%177 = load double*, double** %14
%178 = load i32, i32* %5
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds double, double* %177, i64 %179
store double %176, double* %180
br label %181
181: ; preds = %171
%182 = load i32, i32* %5
%183 = add nsw i32 %182, 1
store i32 %183, i32* %5
br label %167
184: ; preds = %167
%185 = load i32, i32* %4
store i32 %185, i32* %5
br label %186
186: ; preds = %197, %184
%187 = load i32, i32* %5
%188 = load i32, i32* %4
%189 = load i32, i32* %8
%190 = add nsw i32 %188, %189
%191 = icmp slt i32 %187, %190
br i1 %191, label %192, label %200
192: ; preds = %186
%193 = load double*, double** %14
%194 = load i32, i32* %5
%195 = sext i32 %194 to i64
%196 = getelementptr inbounds double, double* %193, i64 %195
store double 0.000000e+00, double* %196
br label %197
197: ; preds = %192
%198 = load i32, i32* %5
%199 = add nsw i32 %198, 1
store i32 %199, i32* %5
br label %186
200: ; preds = %186
store i32 0, i32* %6
br label %201
201: ; preds = %248, %200
%202 = load i32, i32* %6
%203 = load i32, i32* %4
%204 = load i32, i32* %8
%205 = add nsw i32 %203, %204
%206 = icmp slt i32 %202, %205
br i1 %206, label %207, label %251
207: ; preds = %201
%208 = load double*, double** %16
%209 = load i32, i32* %6
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %208, i64 %210
store double 0.000000e+00, double* %211
store i32 0, i32* %5
br label %212
212: ; preds = %244, %207
%213 = load i32, i32* %5
%214 = load i32, i32* %12
%215 = icmp slt i32 %213, %214
br i1 %215, label %216, label %247
216: ; preds = %212
%217 = load i32, i32* %6
%218 = load i32, i32* %5
%219 = sub nsw i32 %217, %218
%220 = icmp sge i32 %219, 0
br i1 %220, label %221, label %243
221: ; preds = %216
%222 = load double*, double** %16
%223 = load i32, i32* %6
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds double, double* %222, i64 %224
%226 = load double, double* %225
%227 = load i32, i32* %5
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [183 x double], [183 x double]* %11, i64 0, i64 %228
%230 = load double, double* %229
%231 = load double*, double** %14
%232 = load i32, i32* %6
%233 = load i32, i32* %5
%234 = sub nsw i32 %232, %233
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds double, double* %231, i64 %235
%237 = load double, double* %236
%238 = call double @llvm.fmuladd.f64(double %230, double %237, double %226)
%239 = load double*, double** %16
%240 = load i32, i32* %6
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds double, double* %239, i64 %241
store double %238, double* %242
br label %243
243: ; preds = %221, %216
br label %244
244: ; preds = %243
%245 = load i32, i32* %5
%246 = add nsw i32 %245, 1
store i32 %246, i32* %5
br label %212
247: ; preds = %212
br label %248
248: ; preds = %247
%249 = load i32, i32* %6
%250 = add nsw i32 %249, 1
store i32 %250, i32* %6
br label %201
251: ; preds = %201
%252 = load i32, i32* %8
store i32 %252, i32* %5
br label %253
253: ; preds = %271, %251
%254 = load i32, i32* %5
%255 = load i32, i32* %8
%256 = load i32, i32* %4
%257 = add nsw i32 %255, %256
%258 = icmp slt i32 %254, %257
br i1 %258, label %259, label %274
259: ; preds = %253
%260 = load double*, double** %16
%261 = load i32, i32* %5
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds double, double* %260, i64 %262
%264 = load double, double* %263
%265 = load double*, double** %18
%266 = load i32, i32* %5
%267 = load i32, i32* %8
%268 = sub nsw i32 %266, %267
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds double, double* %265, i64 %269
store double %264, double* %270
br label %271
271: ; preds = %259
%272 = load i32, i32* %5
%273 = add nsw i32 %272, 1
store i32 %273, i32* %5
br label %253
274: ; preds = %253
%275 = load double*, double** %13
%276 = bitcast double* %275 to i8*
%277 = load double*, double** %14
%278 = bitcast double* %277 to i8*
%279 = load double*, double** %15
%280 = bitcast double* %279 to i8*
%281 = load double*, double** %16
%282 = bitcast double* %281 to i8*
%283 = load double*, double** %17
%284 = bitcast double* %283 to i8*
%285 = load double*, double** %18
ret double* %285
}

LLVM IR (-O2):
@__const.noiseremoval.Num_high = [661 x double] [double -1.860000e-04, double -2.100000e-05, double -2.200000e-05, double -2.400000e-05, double -2.500000e-05, double -2.600000e-05, double -2.700000e-05, double -2.900000e-05, double -3.000000e-05, double -3.200000e-05, double -3.300000e-05, double -3.500000e-05, double -3.700000e-05, double -3.800000e-05, double -4.000000e-05, double -4.200000e-05, double -4.400000e-05, double -4.600000e-05, double -4.700000e-05, double -4.900000e-05, double -5.200000e-05, double -5.400000e-05, double -5.600000e-05, double -5.800000e-05, double -6.000000e-05, double -6.300000e-05, double -6.500000e-05, double 0xBF11D3671AC14C66, double 0xBF12599ED7C6FBD2, double -7.300000e-05, double -7.500000e-05, double -7.800000e-05, double -8.100000e-05, double -8.400000e-05, double -8.700000e-05, double -9.000000e-05, double -9.300000e-05, double -9.600000e-05, double 0xBF19F3C70C996B76, double -1.030000e-04, double -1.060000e-04, double -1.090000e-04, double -1.130000e-04, double -1.160000e-04, double -1.200000e-04, double -1.240000e-04, double -1.280000e-04, double -1.320000e-04, double -1.360000e-04, double -1.400000e-04, double -1.440000e-04, double -1.480000e-04, double -1.520000e-04, double -1.570000e-04, double -1.610000e-04, double -1.660000e-04, double -1.710000e-04, double -1.750000e-04, double -1.800000e-04, double -1.850000e-04, double -1.900000e-04, double -1.950000e-04, double -2.000000e-04, double -2.060000e-04, double -2.110000e-04, double -2.170000e-04, double -2.220000e-04, double -2.280000e-04, double -2.340000e-04, double -2.400000e-04, double -2.460000e-04, double -2.520000e-04, double -2.580000e-04, double -2.640000e-04, double -2.710000e-04, double -2.770000e-04, double -2.840000e-04, double -2.910000e-04, double -2.970000e-04, double -3.040000e-04, double -3.110000e-04, double -3.190000e-04, double -3.260000e-04, double -3.330000e-04, double -3.410000e-04, double -3.480000e-04, double -3.560000e-04, double -3.640000e-04, double -3.720000e-04, double -3.800000e-04, double -3.880000e-04, double -3.960000e-04, double -4.040000e-04, double -4.130000e-04, double -4.210000e-04, double -4.300000e-04, double -4.390000e-04, double -4.480000e-04, double -4.570000e-04, double -4.660000e-04, double -4.750000e-04, double -4.840000e-04, double -4.940000e-04, double -5.040000e-04, double -5.130000e-04, double -5.230000e-04, double -5.330000e-04, double -5.430000e-04, double -5.530000e-04, double -5.640000e-04, double -5.740000e-04, double -5.840000e-04, double -5.950000e-04, double -6.060000e-04, double -6.170000e-04, double -6.280000e-04, double -6.390000e-04, double 0xBF454C985F06F694, double -6.610000e-04, double -6.730000e-04, double -6.840000e-04, double -6.960000e-04, double -7.080000e-04, double -7.200000e-04, double -7.320000e-04, double -7.440000e-04, double -7.560000e-04, double -7.680000e-04, double -7.810000e-04, double -7.930000e-04, double 0xBF4A6937D1FE64F5, double 0xBF4AD6451B93037D, double 0xBF4B43526527A205, double -8.450000e-04, double -8.580000e-04, double -8.710000e-04, double -8.840000e-04, double -8.980000e-04, double -9.110000e-04, double -9.250000e-04, double -9.390000e-04, double -9.520000e-04, double 0xBF4FA76534373F31, double -9.800000e-04, double -9.940000e-04, double -1.009000e-03, double -1.023000e-03, double -1.038000e-03, double -1.052000e-03, double -1.067000e-03, double -1.081000e-03, double -1.096000e-03, double -1.111000e-03, double -1.126000e-03, double -1.141000e-03, double -1.156000e-03, double -1.172000e-03, double -1.187000e-03, double -1.202000e-03, double -1.218000e-03, double -1.234000e-03, double -1.249000e-03, double -1.265000e-03, double -1.281000e-03, double -1.297000e-03, double -1.313000e-03, double -1.329000e-03, double -1.345000e-03, double -1.361000e-03, double -1.377000e-03, double -1.394000e-03, double -1.410000e-03, double -1.427000e-03, double -1.443000e-03, double -1.460000e-03, double -1.476000e-03, double -1.493000e-03, double -1.510000e-03, double -1.527000e-03, double -1.544000e-03, double -1.560000e-03, double -1.577000e-03, double -1.594000e-03, double -1.611000e-03, double -1.629000e-03, double -1.646000e-03, double -1.663000e-03, double -1.680000e-03, double -1.697000e-03, double -1.715000e-03, double -1.732000e-03, double -1.749000e-03, double -1.767000e-03, double -1.784000e-03, double -1.801000e-03, double -1.819000e-03, double -1.836000e-03, double -1.854000e-03, double -1.871000e-03, double -1.889000e-03, double -1.906000e-03, double -1.924000e-03, double -1.941000e-03, double -1.959000e-03, double -1.976000e-03, double -1.994000e-03, double -2.011000e-03, double -2.029000e-03, double -2.046000e-03, double -2.064000e-03, double -2.081000e-03, double -2.099000e-03, double -2.116000e-03, double -2.133000e-03, double -2.151000e-03, double -2.168000e-03, double -2.186000e-03, double -2.203000e-03, double -2.220000e-03, double -2.237000e-03, double -2.255000e-03, double -2.272000e-03, double -2.289000e-03, double -2.306000e-03, double -2.323000e-03, double -2.340000e-03, double -2.357000e-03, double -2.374000e-03, double -2.390000e-03, double -2.407000e-03, double -2.424000e-03, double -2.440000e-03, double -2.457000e-03, double -2.473000e-03, double -2.490000e-03, double -2.506000e-03, double -2.522000e-03, double -2.538000e-03, double -2.554000e-03, double -2.570000e-03, double -2.586000e-03, double -2.602000e-03, double -2.618000e-03, double -2.634000e-03, double -2.649000e-03, double -2.664000e-03, double -2.680000e-03, double -2.695000e-03, double -2.710000e-03, double -2.725000e-03, double -2.740000e-03, double -2.755000e-03, double -2.769000e-03, double -2.784000e-03, double -2.798000e-03, double -2.813000e-03, double -2.827000e-03, double -2.841000e-03, double -2.855000e-03, double -2.869000e-03, double -2.882000e-03, double -2.896000e-03, double -2.909000e-03, double -2.922000e-03, double -2.935000e-03, double -2.948000e-03, double -2.961000e-03, double -2.974000e-03, double -2.986000e-03, double -2.998000e-03, double -3.011000e-03, double -3.023000e-03, double -3.035000e-03, double -3.046000e-03, double -3.058000e-03, double -3.069000e-03, double -3.080000e-03, double -3.091000e-03, double -3.102000e-03, double -3.113000e-03, double -3.123000e-03, double -3.134000e-03, double -3.144000e-03, double -3.154000e-03, double -3.163000e-03, double -3.173000e-03, double -3.182000e-03, double -3.192000e-03, double -3.201000e-03, double -3.210000e-03, double -3.218000e-03, double -3.227000e-03, double -3.235000e-03, double -3.243000e-03, double -3.251000e-03, double -3.259000e-03, double -3.266000e-03, double -3.273000e-03, double -3.280000e-03, double -3.287000e-03, double -3.294000e-03, double -3.300000e-03, double -3.307000e-03, double -3.313000e-03, double -3.318000e-03, double -3.324000e-03, double -3.329000e-03, double -3.335000e-03, double -3.339000e-03, double -3.344000e-03, double -3.349000e-03, double -3.353000e-03, double -3.357000e-03, double -3.361000e-03, double -3.365000e-03, double -3.368000e-03, double -3.371000e-03, double -3.374000e-03, double -3.377000e-03, double -3.380000e-03, double -3.382000e-03, double -3.384000e-03, double -3.386000e-03, double -3.388000e-03, double -3.389000e-03, double -3.391000e-03, double -3.392000e-03, double -3.392000e-03, double -3.393000e-03, double -3.393000e-03, double 9.966070e-01, double -3.393000e-03, double -3.393000e-03, double -3.392000e-03, double -3.392000e-03, double -3.391000e-03, double -3.389000e-03, double -3.388000e-03, double -3.386000e-03, double -3.384000e-03, double -3.382000e-03, double -3.380000e-03, double -3.377000e-03, double -3.374000e-03, double -3.371000e-03, double -3.368000e-03, double -3.365000e-03, double -3.361000e-03, double -3.357000e-03, double -3.353000e-03, double -3.349000e-03, double -3.344000e-03, double -3.339000e-03, double -3.335000e-03, double -3.329000e-03, double -3.324000e-03, double -3.318000e-03, double -3.313000e-03, double -3.307000e-03, double -3.300000e-03, double -3.294000e-03, double -3.287000e-03, double -3.280000e-03, double -3.273000e-03, double -3.266000e-03, double -3.259000e-03, double -3.251000e-03, double -3.243000e-03, double -3.235000e-03, double -3.227000e-03, double -3.218000e-03, double -3.210000e-03, double -3.201000e-03, double -3.192000e-03, double -3.182000e-03, double -3.173000e-03, double -3.163000e-03, double -3.154000e-03, double -3.144000e-03, double -3.134000e-03, double -3.123000e-03, double -3.113000e-03, double -3.102000e-03, double -3.091000e-03, double -3.080000e-03, double -3.069000e-03, double -3.058000e-03, double -3.046000e-03, double -3.035000e-03, double -3.023000e-03, double -3.011000e-03, double -2.998000e-03, double -2.986000e-03, double -2.974000e-03, double -2.961000e-03, double -2.948000e-03, double -2.935000e-03, double -2.922000e-03, double -2.909000e-03, double -2.896000e-03, double -2.882000e-03, double -2.869000e-03, double -2.855000e-03, double -2.841000e-03, double -2.827000e-03, double -2.813000e-03, double -2.798000e-03, double -2.784000e-03, double -2.769000e-03, double -2.755000e-03, double -2.740000e-03, double -2.725000e-03, double -2.710000e-03, double -2.695000e-03, double -2.680000e-03, double -2.664000e-03, double -2.649000e-03, double -2.634000e-03, double -2.618000e-03, double -2.602000e-03, double -2.586000e-03, double -2.570000e-03, double -2.554000e-03, double -2.538000e-03, double -2.522000e-03, double -2.506000e-03, double -2.490000e-03, double -2.473000e-03, double -2.457000e-03, double -2.440000e-03, double -2.424000e-03, double -2.407000e-03, double -2.390000e-03, double -2.374000e-03, double -2.357000e-03, double -2.340000e-03, double -2.323000e-03, double -2.306000e-03, double -2.289000e-03, double -2.272000e-03, double -2.255000e-03, double -2.237000e-03, double -2.220000e-03, double -2.203000e-03, double -2.186000e-03, double -2.168000e-03, double -2.151000e-03, double -2.133000e-03, double -2.116000e-03, double -2.099000e-03, double -2.081000e-03, double -2.064000e-03, double -2.046000e-03, double -2.029000e-03, double -2.011000e-03, double -1.994000e-03, double -1.976000e-03, double -1.959000e-03, double -1.941000e-03, double -1.924000e-03, double -1.906000e-03, double -1.889000e-03, double -1.871000e-03, double -1.854000e-03, double -1.836000e-03, double -1.819000e-03, double -1.801000e-03, double -1.784000e-03, double -1.767000e-03, double -1.749000e-03, double -1.732000e-03, double -1.715000e-03, double -1.697000e-03, double -1.680000e-03, double -1.663000e-03, double -1.646000e-03, double -1.629000e-03, double -1.611000e-03, double -1.594000e-03, double -1.577000e-03, double -1.560000e-03, double -1.544000e-03, double -1.527000e-03, double -1.510000e-03, double -1.493000e-03, double -1.476000e-03, double -1.460000e-03, double -1.443000e-03, double -1.427000e-03, double -1.410000e-03, double -1.394000e-03, double -1.377000e-03, double -1.361000e-03, double -1.345000e-03, double -1.329000e-03, double -1.313000e-03, double -1.297000e-03, double -1.281000e-03, double -1.265000e-03, double -1.249000e-03, double -1.234000e-03, double -1.218000e-03, double -1.202000e-03, double -1.187000e-03, double -1.172000e-03, double -1.156000e-03, double -1.141000e-03, double -1.126000e-03, double -1.111000e-03, double -1.096000e-03, double -1.081000e-03, double -1.067000e-03, double -1.052000e-03, double -1.038000e-03, double -1.023000e-03, double -1.009000e-03, double -9.940000e-04, double -9.800000e-04, double 0xBF4FA76534373F31, double -9.520000e-04, double -9.390000e-04, double -9.250000e-04, double -9.110000e-04, double -8.980000e-04, double -8.840000e-04, double -8.710000e-04, double -8.580000e-04, double -8.450000e-04, double 0xBF4B43526527A205, double 0xBF4AD6451B93037D, double 0xBF4A6937D1FE64F5, double -7.930000e-04, double -7.810000e-04, double -7.680000e-04, double -7.560000e-04, double -7.440000e-04, double -7.320000e-04, double -7.200000e-04, double -7.080000e-04, double -6.960000e-04, double -6.840000e-04, double -6.730000e-04, double -6.610000e-04, double 0xBF454C985F06F694, double -6.390000e-04, double -6.280000e-04, double -6.170000e-04, double -6.060000e-04, double -5.950000e-04, double -5.840000e-04, double -5.740000e-04, double -5.640000e-04, double -5.530000e-04, double -5.430000e-04, double -5.330000e-04, double -5.230000e-04, double -5.130000e-04, double -5.040000e-04, double -4.940000e-04, double -4.840000e-04, double -4.750000e-04, double -4.660000e-04, double -4.570000e-04, double -4.480000e-04, double -4.390000e-04, double -4.300000e-04, double -4.210000e-04, double -4.130000e-04, double -4.040000e-04, double -3.960000e-04, double -3.880000e-04, double -3.800000e-04, double -3.720000e-04, double -3.640000e-04, double -3.560000e-04, double -3.480000e-04, double -3.410000e-04, double -3.330000e-04, double -3.260000e-04, double -3.190000e-04, double -3.110000e-04, double -3.040000e-04, double -2.970000e-04, double -2.910000e-04, double -2.840000e-04, double -2.770000e-04, double -2.710000e-04, double -2.640000e-04, double -2.580000e-04, double -2.520000e-04, double -2.460000e-04, double -2.400000e-04, double -2.340000e-04, double -2.280000e-04, double -2.220000e-04, double -2.170000e-04, double -2.110000e-04, double -2.060000e-04, double -2.000000e-04, double -1.950000e-04, double -1.900000e-04, double -1.850000e-04, double -1.800000e-04, double -1.750000e-04, double -1.710000e-04, double -1.660000e-04, double -1.610000e-04, double -1.570000e-04, double -1.520000e-04, double -1.480000e-04, double -1.440000e-04, double -1.400000e-04, double -1.360000e-04, double -1.320000e-04, double -1.280000e-04, double -1.240000e-04, double -1.200000e-04, double -1.160000e-04, double -1.130000e-04, double -1.090000e-04, double -1.060000e-04, double -1.030000e-04, double 0xBF19F3C70C996B76, double -9.600000e-05, double -9.300000e-05, double -9.000000e-05, double -8.700000e-05, double -8.400000e-05, double -8.100000e-05, double -7.800000e-05, double -7.500000e-05, double -7.300000e-05, double 0xBF12599ED7C6FBD2, double 0xBF11D3671AC14C66, double -6.500000e-05, double -6.300000e-05, double -6.000000e-05, double -5.800000e-05, double -5.600000e-05, double -5.400000e-05, double -5.200000e-05, double -4.900000e-05, double -4.700000e-05, double -4.600000e-05, double -4.400000e-05, double -4.200000e-05, double -4.000000e-05, double -3.800000e-05, double -3.700000e-05, double -3.500000e-05, double -3.300000e-05, double -3.200000e-05, double -3.000000e-05, double -2.900000e-05, double -2.700000e-05, double -2.600000e-05, double -2.500000e-05, double -2.400000e-05, double -2.200000e-05, double -2.100000e-05, double -1.860000e-04]
@__const.noiseremoval.Num_low = [183 x double] [double 2.200000e-04, double 5.800000e-04, double 1.199000e-03, double 2.057000e-03, double 3.064000e-03, double 4.039000e-03, double 4.736000e-03, double 4.906000e-03, double 4.369000e-03, double 3.091000e-03, double 1.230000e-03, double 0xBF4C9B413986338B, double -2.771000e-03, double -4.021000e-03, double -4.324000e-03, double -3.634000e-03, double -2.187000e-03, double -4.550000e-04, double 0x3F505186DB50F40E, double 1.688000e-03, double 1.391000e-03, double 2.170000e-04, double -1.410000e-03, double -2.888000e-03, double -3.654000e-03, double -3.390000e-03, double -2.154000e-03, double -3.780000e-04, double 1.280000e-03, double 2.174000e-03, double 1.923000e-03, double 5.710000e-04, double -1.402000e-03, double -3.245000e-03, double -4.210000e-03, double -3.854000e-03, double -2.229000e-03, double 1.030000e-04, double 2.260000e-03, double 3.370000e-03, double 2.923000e-03, double 9.940000e-04, double -1.739000e-03, double -4.229000e-03, double -5.449000e-03, double -4.811000e-03, double -2.434000e-03, double 0x3F4C0CA600B02928, double 3.802000e-03, double 5.190000e-03, double 4.345000e-03, double 1.442000e-03, double -2.498000e-03, double -5.955000e-03, double 0xBF7EA9A3D2D87F88, double -6.312000e-03, double -2.689000e-03, double 2.116000e-03, double 6.248000e-03, double 0x3F805425F202107B, double 6.386000e-03, double 1.847000e-03, double -4.052000e-03, double -9.025000e-03, double -1.095200e-02, double 0xBF81EF30A4E379B7, double -2.936000e-03, double 4.490000e-03, double 1.064400e-02, double 1.286800e-02, double 0x3F841D8E86402081, double 2.167000e-03, double -7.485000e-03, double -1.539800e-02, double -1.808000e-02, double -1.372000e-02, double -3.126000e-03, double 1.024000e-02, double 2.126700e-02, double 2.496400e-02, double 1.844000e-02, double 2.373000e-03, double -1.860800e-02, double -3.690900e-02, double -4.410700e-02, double -3.365000e-02, double -3.231000e-03, double 4.393300e-02, double 0x3FB975C0767D34DF, double 1.517230e-01, double 1.889600e-01, double 2.024430e-01, double 1.889600e-01, double 1.517230e-01, double 0x3FB975C0767D34DF, double 4.393300e-02, double -3.231000e-03, double -3.365000e-02, double -4.410700e-02, double -3.690900e-02, double -1.860800e-02, double 2.373000e-03, double 1.844000e-02, double 2.496400e-02, double 2.126700e-02, double 1.024000e-02, double -3.126000e-03, double -1.372000e-02, double -1.808000e-02, double -1.539800e-02, double -7.485000e-03, double 2.167000e-03, double 0x3F841D8E86402081, double 1.286800e-02, double 1.064400e-02, double 4.490000e-03, double -2.936000e-03, double 0xBF81EF30A4E379B7, double -1.095200e-02, double -9.025000e-03, double -4.052000e-03, double 1.847000e-03, double 6.386000e-03, double 0x3F805425F202107B, double 6.248000e-03, double 2.116000e-03, double -2.689000e-03, double -6.312000e-03, double 0xBF7EA9A3D2D87F88, double -5.955000e-03, double -2.498000e-03, double 1.442000e-03, double 4.345000e-03, double 5.190000e-03, double 3.802000e-03, double 0x3F4C0CA600B02928, double -2.434000e-03, double -4.811000e-03, double -5.449000e-03, double -4.229000e-03, double -1.739000e-03, double 9.940000e-04, double 2.923000e-03, double 3.370000e-03, double 2.260000e-03, double 1.030000e-04, double -2.229000e-03, double -3.854000e-03, double -4.210000e-03, double -3.245000e-03, double -1.402000e-03, double 5.710000e-04, double 1.923000e-03, double 2.174000e-03, double 1.280000e-03, double -3.780000e-04, double -2.154000e-03, double -3.390000e-03, double -3.654000e-03, double -2.888000e-03, double -1.410000e-03, double 2.170000e-04, double 1.391000e-03, double 1.688000e-03, double 0x3F505186DB50F40E, double -4.550000e-04, double -2.187000e-03, double -3.634000e-03, double -4.324000e-03, double -4.021000e-03, double -2.771000e-03, double 0xBF4C9B413986338B, double 1.230000e-03, double 3.091000e-03, double 4.369000e-03, double 4.906000e-03, double 4.736000e-03, double 4.039000e-03, double 3.064000e-03, double 2.057000e-03, double 1.199000e-03, double 5.800000e-04, double 2.200000e-04]
define noalias double* @noiseremoval(double* nocapture %0, i32 %1) {
%3 = add nsw i32 %1, 330
%4 = sext i32 %3 to i64
%5 = shl nsw i64 %4, 3
%6 = tail call i8* @malloc(i64 %5)
%7 = bitcast i8* %6 to double*
%8 = add nsw i32 %1, 91
%9 = sext i32 %8 to i64
%10 = shl nsw i64 %9, 3
%11 = tail call i8* @malloc(i64 %10)
%12 = bitcast i8* %11 to double*
%13 = tail call i8* @malloc(i64 %5)
%14 = bitcast i8* %13 to double*
%15 = tail call i8* @malloc(i64 %10)
%16 = bitcast i8* %15 to double*
%17 = sext i32 %1 to i64
%18 = shl nsw i64 %17, 3
%19 = tail call i8* @malloc(i64 %18)
%20 = tail call i8* @malloc(i64 %18)
%21 = icmp sgt i32 %1, 0
br i1 %21, label %22, label %27
22: ; preds = %2
%23 = bitcast double* %0 to i8*
%24 = zext i32 %1 to i64
%25 = shl nuw nsw i64 %24, 3
%26 = getelementptr i8, i8* %6, i64 %18
br label %32
27: ; preds = %2
%28 = getelementptr i8, i8* %6, i64 %18
%29 = icmp sgt i32 %1, -330
br i1 %29, label %32, label %30
30: ; preds = %27
%31 = getelementptr i8, i8* %11, i64 %18
br label %127
32: ; preds = %22, %27
%33 = zext i32 %3 to i64
br label %35
34: ; preds = %67
br i1 %21, label %70, label %79
35: ; preds = %32, %67
%36 = phi i64 [ 0, %32 ], [ %68, %67 ]
%37 = getelementptr inbounds double, double* %14, i64 %36
store double 0.000000e+00, double* %37
br label %38
38: ; preds = %64, %35
%39 = phi double [ 0.000000e+00, %35 ], [ %65, %64 ]
%40 = phi i64 [ 0, %35 ], [ %66, %64 ]
%41 = sub nsw i64 %36, %40
%42 = icmp sgt i64 %41, -1
br i1 %42, label %43, label %50
43: ; preds = %38
%44 = getelementptr inbounds [661 x double], [661 x double]* @__const.noiseremoval.Num_high, i64 0, i64 %40
%45 = load double, double* %44
%46 = and i64 %41, 4294967295
%47 = getelementptr inbounds double, double* %7, i64 %46
%48 = load double, double* %47
%49 = tail call double @llvm.fmuladd.f64(double %45, double %48, double %39)
store double %49, double* %37
br label %50
50: ; preds = %38, %43
%51 = phi double [ %39, %38 ], [ %49, %43 ]
%52 = or i64 %40, 1
%53 = icmp eq i64 %52, 661
br i1 %53, label %67, label %54
54: ; preds = %50
%55 = sub nsw i64 %36, %52
%56 = icmp sgt i64 %55, -1
br i1 %56, label %57, label %64
57: ; preds = %54
%58 = getelementptr inbounds [661 x double], [661 x double]* @__const.noiseremoval.Num_high, i64 0, i64 %52
%59 = load double, double* %58
%60 = and i64 %55, 4294967295
%61 = getelementptr inbounds double, double* %7, i64 %60
%62 = load double, double* %61
%63 = tail call double @llvm.fmuladd.f64(double %59, double %62, double %51)
store double %63, double* %37
br label %64
64: ; preds = %57, %54
%65 = phi double [ %51, %54 ], [ %63, %57 ]
%66 = add nuw nsw i64 %40, 2
br label %38
67: ; preds = %50
%68 = add nuw nsw i64 %36, 1
%69 = icmp eq i64 %68, %33
br i1 %69, label %34, label %35
70: ; preds = %34
%71 = getelementptr i8, i8* %13, i64 2640
%72 = call i32 @llvm.smax.i32(i32 %3, i32 331)
%73 = add nsw i32 %72, -330
%74 = zext i32 %73 to i64
%75 = shl nuw nsw i64 %74, 3
%76 = zext i32 %1 to i64
%77 = shl nuw nsw i64 %76, 3
%78 = getelementptr i8, i8* %11, i64 %18
br label %82
79: ; preds = %34
%80 = getelementptr i8, i8* %11, i64 %18
%81 = icmp sgt i32 %1, -91
br i1 %81, label %82, label %127
82: ; preds = %70, %79
%83 = call i32 @llvm.smax.i32(i32 %8, i32 1)
%84 = zext i32 %83 to i64
br label %92
85: ; preds = %124
br i1 %21, label %86, label %127
86: ; preds = %85
%87 = getelementptr i8, i8* %15, i64 728
%88 = call i32 @llvm.smax.i32(i32 %8, i32 92)
%89 = add nsw i32 %88, -91
%90 = zext i32 %89 to i64
%91 = shl nuw nsw i64 %90, 3
br label %127
92: ; preds = %82, %124
%93 = phi i64 [ 0, %82 ], [ %125, %124 ]
%94 = getelementptr inbounds double, double* %16, i64 %93
store double 0.000000e+00, double* %94
br label %95
95: ; preds = %121, %92
%96 = phi double [ 0.000000e+00, %92 ], [ %122, %121 ]
%97 = phi i64 [ 0, %92 ], [ %123, %121 ]
%98 = sub nsw i64 %93, %97
%99 = icmp sgt i64 %98, -1
br i1 %99, label %100, label %107
100: ; preds = %95
%101 = getelementptr inbounds [183 x double], [183 x double]* @__const.noiseremoval.Num_low, i64 0, i64 %97
%102 = load double, double* %101
%103 = and i64 %98, 4294967295
%104 = getelementptr inbounds double, double* %12, i64 %103
%105 = load double, double* %104
%106 = tail call double @llvm.fmuladd.f64(double %102, double %105, double %96)
store double %106, double* %94
br label %107
107: ; preds = %95, %100
%108 = phi double [ %96, %95 ], [ %106, %100 ]
%109 = or i64 %97, 1
%110 = icmp eq i64 %109, 183
br i1 %110, label %124, label %111
111: ; preds = %107
%112 = sub nsw i64 %93, %109
%113 = icmp sgt i64 %112, -1
br i1 %113, label %114, label %121
114: ; preds = %111
%115 = getelementptr inbounds [183 x double], [183 x double]* @__const.noiseremoval.Num_low, i64 0, i64 %109
%116 = load double, double* %115
%117 = and i64 %112, 4294967295
%118 = getelementptr inbounds double, double* %12, i64 %117
%119 = load double, double* %118
%120 = tail call double @llvm.fmuladd.f64(double %116, double %119, double %108)
store double %120, double* %94
br label %121
121: ; preds = %114, %111
%122 = phi double [ %108, %111 ], [ %120, %114 ]
%123 = add nuw nsw i64 %97, 2
br label %95
124: ; preds = %107
%125 = add nuw nsw i64 %93, 1
%126 = icmp eq i64 %125, %84
br i1 %126, label %85, label %92
127: ; preds = %79, %30, %86, %85
%128 = bitcast i8* %20 to double*
tail call void @free(i8* %6)
tail call void @free(i8* %11)
tail call void @free(i8* %13)
tail call void @free(i8* %15)
tail call void @free(i8* %19)
ret double* %128
}