double bessel_Y1(double x) {
  int k;
  double t, y, v, theta;
  const static double a[16] = {-9.46499e-14,
                               2.141432796e-11,
                               -3.5977944347e-9,
                               4.3173541397185e-7,
                               -3.453883313621946e-5,
                               0.00165786399054057257,
                               -0.03978873577297383381,
                               0.31830988618379067154,
                               -5.571931463e-11,
                               8.93098810365e-9,
                               -9.9267351748541e-7,
                               7.164268731546281e-5,
                               -0.00295530533604595764,
                               0.05434868816050718549,
                               -0.1960570906462388432,
                               -0.63661977236758134367};
  const static double b[112] = {
      2.553685555e-11,         7.384080449e-11,         -2.9605446927e-10,
      -5.2081739106e-9,        -3.676554001376e-8,      -1.532652533627e-7,
      -1.3967947147386e-7,     3.88730181348638e-6,     4.052240780599446e-5,
      2.5133005806772436e-4,   0.00109380629039004777,  0.00298157276348996763,
      4.7188983238582062e-4,   -0.19643830264444486066, 1.056916126e-11,
      6.2160122556e-10,        3.85741197273e-9,        7.491469406e-9,
      -6.306874425799e-8,      -6.869833657799e-7,      -3.29785491054157e-6,
      -5.57893716372629e-6,    4.634569030169549e-5,    4.9086790937752985e-4,
      0.00256488729380268318,  0.00822571374211646414,  0.01094512145046992425,
      -0.19159562910398869317, -4.0211480479e-10,       -2.29721816531e-9,
      6.2931855684e-10,        6.509879184236e-8,       3.1589903600713e-7,
      -3.093448289001e-8,      -8.45532004628483e-6,    -4.930719004112743e-5,
      -9.865914153735679e-5,   4.7059803263198826e-4,   0.00472271367216891688,
      0.01915518502418162917,  0.0372239136138415874,   -0.1693323078896687811,
      1.10728466147e-9,        2.05608441891e-9,        -2.536199750468e-8,
      -1.1751665325851e-7,     3.404534385077e-7,       4.36083390507752e-6,
      8.34725302600388e-6,     -7.154971448642437e-5,   -5.1956165332380432e-4,
      -0.00100811886858456098, 0.00436854257164588225,  0.03425644258611852849,
      0.0907397117201493499,   -0.10791597118914788657, -1.17749768422e-9,
      1.68403859797e-9,        3.471030171126e-8,       -6.227816248757e-8,
      -1.18405395385178e-6,    1.4478514453927e-7,      3.630744090017806e-5,
      1.0481065165516454e-4,   -5.2483993430622472e-4,  -0.00407014291708523893,
      -0.00574311514714191566, 0.03534768318503458091,  0.16539360869993020163,
      0.01986240425870529979,  4.008050552e-10,         -3.36044652853e-9,
      -9.2387130705e-10,       1.7840823064933e-7,      -2.2643988836534e-7,
      -8.08896250262948e-6,    -1.69403516892975e-6,    2.6617475073041589e-4,
      7.2562705080786576e-4,   -0.00399208199997748377, -0.02399816920965700841,
      -0.0092557474455754244,  0.2008281402282066699,   0.21040564991987672576,
      6.692975871e-11,         1.672202705e-10,         -1.433097981251e-8,
      5.455077276306e-8,       1.04954046999028e-6,     -3.39572219821681e-6,
      -5.541577161092338e-5,   4.344113487321887e-5,    0.00184798594297387512,
      0.0030104150846815045,   -0.02789739141907399514, -0.09421628519129373841,
      0.09950212445529771576,  0.3749697583874640408,   4.528583204e-11,
      6.6861092459e-10,        -9.2464816857e-9,        -8.002058622489e-8,
      8.7578676979688e-7,      6.28456150216647e-6,     -4.276239654834506e-5,
      -3.4630842915911896e-4,  8.9431202169021474e-4,   0.01086380107342193819,
      0.00145563493724746238,  -0.14193383817937981478, -0.15148562296986494725,
      0.35720232689066512346};
  const static double c[126] = {
      3.201620498e-10,         -1.77431944127e-9,
      1.367520951871e-8,       -6.171755212447e-8,
      -4.3602779932091e-7,     1.79827173442894e-6,
      4.990624965075363e-5,    -1.8618453816525107e-4,
      -0.00206578613620093339, 0.00640292258731756063,
      0.04663627606907821596,  -0.11400070635033154332,
      -0.26159330264498333979, 0.30099732306965462346,
      -5.9774708e-13,          -3.8827648808e-10,
      5.27269271362e-9,        2.971059814012e-8,
      -5.2701406514027e-7,     -3.20369808906187e-6,
      4.475144442564492e-5,    1.6907703884518866e-4,
      -0.00209937055264007564, -0.00491023437935628693,
      0.0496717554070154514,   0.04195559522923170315,
      -0.33516091307165838036, -0.02375823895638961835,
      2.83380103e-12,          -4.4715450235e-10,
      1.769519961e-10,         6.05337984007e-8,
      -2.888550814408e-8,      -5.93780185020349e-6,
      5.14027455732102e-6,     3.5667482807472357e-4,
      -3.813272996260773e-4,   -0.01158750857180657934,
      0.01376562658346365929,  0.14388461069626297876,
      -0.1310745466175553429,  -0.27409127395927545296,
      2.683697058e-11,         -2.4302161327e-10,
      -4.30151236236e-9,       3.557058903199e-8,
      4.9328952592926e-7,      -3.65732389065382e-6,
      -3.642356546467712e-5,   2.3636175253326716e-4,
      0.00154549935517002108,  -0.00837084637397210913,
      -0.02941202173717025197, 0.11713664042453548043,
      0.15186375421302413107,  -0.25912851048611625179,
      2.914434604e-11,         1.5185121893e-10,
      -4.88084673389e-9,       -1.936460341189e-8,
      5.7968735781303e-7,      1.58978381365925e-6,
      -4.521858314881102e-5,   -7.426575562367423e-5,
      0.00206293925392279862,  0.00143934355204571641,
      -0.04414786410004317489, -0.00317227451807568106,
      0.273283773530321296,    -0.02616867939853747003,
      6.44550655e-12,          4.0249587279e-10,
      -1.23789833341e-9,       -5.58299757877e-8,
      1.6975984093144e-7,      5.24003568623094e-6,
      -1.539871212028104e-5,   -3.0372172637669852e-4,
      8.2284448843625174e-4,   0.00923614667011392611,
      -0.02069442879928366384, -0.10834973445898588438,
      0.14982326837249145873,  0.20317989938720766823,
      -2.115691215e-11,        2.9752035314e-10,
      3.34739862269e-9,        -4.304625868398e-8,
      -3.6733494871207e-7,     4.25328270524107e-6,
      2.584872967637478e-5,    -2.6244994622929809e-4,
      -0.00102234403086242668, 0.00863185023199066935,
      0.01816610124346617164,  -0.11151661591132254182,
      -0.0897879180557114995,  0.23370422835726857838,
      -2.957977086e-11,        -6.150420279e-11,
      4.88089472193e-9,        6.24218182859e-9,
      -5.6561995267846e-7,     -3.2077350100271e-7,
      4.27856984896483e-5,     -5.3069698280036e-7,
      -0.0018714153878560023,  7.3172821883575326e-4,
      0.03832854206202077374,  -0.01874044416229564036,
      -0.2302705940514488064,  0.05794254714300082167,
      -1.203179184e-11,        -3.5509887475e-10,
      2.13620090322e-9,        4.813181550803e-8,
      -2.6815627351126e-7,     -4.39191902440609e-6,
      2.211921535574542e-5,    2.45935054805247e-4,
      -0.00106158930833741898, -0.00722666167492552731,
      0.02396424370522244155,  0.08278313570069734843,
      -0.15890724632166919294, -0.15383825653750118007};
  const static double d[52] = {
      -1.272346002224188092e-14, 3.370464692346669075e-13,
      -1.144940314335484869e-11, 6.863141561083429745e-10,
      -9.491933932960924159e-8,  5.301676561445687562e-5,
      0.162867503967639974,      -3.652982212914147794e-13,
      1.151126750560028914e-11,  -5.165585095674343486e-10,
      4.657991250060549892e-8,   -1.186794704692706504e-5,
      0.01562499999999994026,    -8.713069680903981555e-15,
      3.140780373478474935e-13,  -1.139089186076256597e-11,
      6.862299023338785566e-10,  -9.491926788274594674e-8,
      5.301676558106268323e-5,   0.162867503967646622,
      -2.792555727162752006e-13, 1.108650207651756807e-11,
      -5.156745588549830981e-10, 4.657894859077370979e-8,
      -1.186794650130550256e-5,  0.01562499999987299901,
      -6.304859171204770696e-15, 2.857249044208791652e-13,
      -1.124956921556753188e-11, 6.858482894906716661e-10,
      -9.49186795351689846e-8,   5.301676509057781574e-5,
      0.1628675039678191167,     -2.185193490132496053e-13,
      1.048820673697426074e-11,  -5.132819367467680132e-10,
      4.65740943737299422e-8,    -1.186794150862988921e-5,
      0.01562499999779270706,    -4.74041720979200985e-15,
      2.578715253644144182e-13,  -1.104148898414138857e-11,
      6.850134201626289183e-10,  -9.49167823417491964e-8,
      5.301676277588728159e-5,   0.1628675039690033136,
      -1.75512205749384229e-13,  9.848723331445182397e-12,
      -5.094535425482245697e-10, 4.656255982268609304e-8,
      -1.186792402114394891e-5,  0.01562499998712198636};
  if (x < 0.85) {
    t = x * x;
    y = (((((((a[0] * t + a[1]) * t + a[2]) * t + a[3]) * t + a[4]) * t +
           a[5]) *
              t +
          a[6]) *
             t +
         a[7]) *
        x;
    y = (((((((a[8] * t + a[9]) * t + a[10]) * t + a[11]) * t + a[12]) * t +
           a[13]) *
              t +
          a[14]) *
             t +
         a[15]) /
            x +
        y * log(x);
  } else if (x < 4.15) {
    v = 4 / x;
    t = x - v;
    k = (int)(t + 4);
    t -= k - 3.5;
    k *= 14;
    y = (((((((((((((b[k] * t + b[k + 1]) * t + b[k + 2]) * t + b[k + 3]) * t +
                  b[k + 4]) *
                     t +
                 b[k + 5]) *
                    t +
                b[k + 6]) *
                   t +
               b[k + 7]) *
                  t +
              b[k + 8]) *
                 t +
             b[k + 9]) *
                t +
            b[k + 10]) *
               t +
           b[k + 11]) *
              t +
          b[k + 12]) *
             t +
         b[k + 13]) *
        v;
  } else if (x < 12.5) {
    k = (int)x;
    t = x - (k + 0.5);
    k = 14 * (k - 4);
    y = ((((((((((((c[k] * t + c[k + 1]) * t + c[k + 2]) * t + c[k + 3]) * t +
                 c[k + 4]) *
                    t +
                c[k + 5]) *
                   t +
               c[k + 6]) *
                  t +
              c[k + 7]) *
                 t +
             c[k + 8]) *
                t +
            c[k + 9]) *
               t +
           c[k + 10]) *
              t +
          c[k + 11]) *
             t +
         c[k + 12]) *
            t +
        c[k + 13];
  } else {
    v = 24 / x;
    t = v * v;
    k = 13 * ((int)t);
    y = ((((((d[k] * t + d[k + 1]) * t + d[k + 2]) * t + d[k + 3]) * t +
           d[k + 4]) *
              t +
          d[k + 5]) *
             t +
         d[k + 6]) *
        sqrt(v);
    theta = (((((d[k + 7] * t + d[k + 8]) * t + d[k + 9]) * t + d[k + 10]) * t +
              d[k + 11]) *
                 t +
             d[k + 12]) *
                v -
            0.78539816339744830962;
    y *= -cos(x + theta);
  }
  return y;
}


x86 assembly (clang, -O0):
<bessel_Y1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  0xebb(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    12dc <bessel_Y1+0x1ac>
movsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xed9(%rip),%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xed4(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xec7(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xeba(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xead(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xea0(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe93(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe86(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xe74(%rip),%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe6f(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe62(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe55(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe48(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe3b(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe2e(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
movsd  0xe21(%rip),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1040 <log@plt>
movsd  -0x40(%rbp),%xmm1
movaps %xmm0,%xmm2
movsd  -0x38(%rbp),%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1978 <bessel_Y1+0x848>
movsd  0xd24(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    1523 <bessel_Y1+0x3f3>
movsd  0xd41(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xd20(%rip),%xmm0
addsd  -0x18(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xc(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xcff(%rip),%xmm0
subsd  %xmm0,%xmm1
movsd  -0x18(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
imul   $0xe,-0xc(%rbp),%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rcx
lea    0xd6b(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0xd51(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    0xd2f(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x3,%eax
movslq %eax,%rcx
lea    0xd0d(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x4,%eax
movslq %eax,%rcx
lea    0xceb(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x5,%eax
movslq %eax,%rcx
lea    0xcc9(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x6,%eax
movslq %eax,%rcx
lea    0xca7(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x7,%eax
movslq %eax,%rcx
lea    0xc85(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x8,%eax
movslq %eax,%rcx
lea    0xc63(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x9,%eax
movslq %eax,%rcx
lea    0xc41(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xa,%eax
movslq %eax,%rcx
lea    0xc1f(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xb,%eax
movslq %eax,%rcx
lea    0xbfd(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xc,%eax
movslq %eax,%rcx
lea    0xbdb(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xd,%eax
movslq %eax,%rcx
lea    0xbb9(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1973 <bessel_Y1+0x843>
movsd  0xae5(%rip),%xmm0
ucomisd -0x8(%rbp),%xmm0
jbe    173d <bessel_Y1+0x60d>
cvttsd2si -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
movsd  0xad8(%rip),%xmm2
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x4,%eax
imul   $0xe,%eax,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rcx
lea    0xecc(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0xeb2(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    0xe90(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x3,%eax
movslq %eax,%rcx
lea    0xe6e(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x4,%eax
movslq %eax,%rcx
lea    0xe4c(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x5,%eax
movslq %eax,%rcx
lea    0xe2a(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x6,%eax
movslq %eax,%rcx
lea    0xe08(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x7,%eax
movslq %eax,%rcx
lea    0xde6(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x8,%eax
movslq %eax,%rcx
lea    0xdc4(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x9,%eax
movslq %eax,%rcx
lea    0xda2(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xa,%eax
movslq %eax,%rcx
lea    0xd80(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xb,%eax
movslq %eax,%rcx
lea    0xd5e(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xc,%eax
movslq %eax,%rcx
lea    0xd3c(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xd,%eax
movslq %eax,%rcx
lea    0xd1a(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    196e <bessel_Y1+0x83e>
movsd  0x8db(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
cvttsd2si -0x18(%rbp),%eax
imul   $0xd,%eax,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rcx
lea    0x10bc(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x1,%eax
movslq %eax,%rcx
lea    0x10a2(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x2,%eax
movslq %eax,%rcx
lea    0x1080(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x3,%eax
movslq %eax,%rcx
lea    0x105e(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x4,%eax
movslq %eax,%rcx
lea    0x103c(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x5,%eax
movslq %eax,%rcx
lea    0x101a(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x6,%eax
movslq %eax,%rcx
lea    0xff8(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0xc(%rbp),%eax
add    $0x7,%eax
movslq %eax,%rcx
lea    0xfbb(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x8,%eax
movslq %eax,%rcx
lea    0xfa1(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0x9,%eax
movslq %eax,%rcx
lea    0xf7f(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xa,%eax
movslq %eax,%rcx
lea    0xf5d(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xb,%eax
movslq %eax,%rcx
lea    0xf3b(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm2
mov    -0xc(%rbp),%eax
add    $0xc,%eax
movslq %eax,%rcx
lea    0xf19(%rip),%rax
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x6e3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x8(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
call   1030 <cos@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1973 <bessel_Y1+0x843>
jmp    1978 <bessel_Y1+0x848>
movsd  -0x20(%rbp),%xmm0
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bessel_Y1>:
push   %r14
push   %rbx
sub    $0x38,%rsp
movapd %xmm0,%xmm2
movsd  0xebd(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    123b <bessel_Y1+0x10b>
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
movsd  0xee3(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xedf(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xedb(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xed7(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xed3(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xecf(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xecb(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xec7(%rip),%xmm1
movsd  0xec7(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xec3(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xebf(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xebb(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xeb7(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xeb3(%rip),%xmm3
mulsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%rsp)
mulsd  %xmm0,%xmm3
addsd  0xea5(%rip),%xmm3
mulsd  %xmm0,%xmm3
addsd  0xea1(%rip),%xmm3
divsd  %xmm2,%xmm3
movsd  %xmm3,0x10(%rsp)
movapd %xmm2,%xmm0
call   1040 <log@plt>
mulsd  0x8(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
jmp    155e <bessel_Y1+0x42e>
movsd  0xdc5(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    1327 <bessel_Y1+0x1f7>
movsd  0xddb(%rip),%xmm0
movapd %xmm0,%xmm1
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm2
addsd  %xmm2,%xmm0
cvttsd2si %xmm0,%eax
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
addsd  0xdbf(%rip),%xmm0
subsd  %xmm0,%xmm2
mov    %eax,%ecx
shl    $0x4,%ecx
sub    %eax,%ecx
sub    %eax,%ecx
movslq %ecx,%rax
lea    0xe40(%rip),%rcx
mov    %eax,%edx
or     $0x1,%edx
movslq %edx,%rdx
movsd  (%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x10(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x18(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x20(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x28(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x30(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x38(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x40(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x48(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x50(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x58(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x60(%rcx,%rax,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  0x68(%rcx,%rax,8),%xmm0
mulsd  %xmm1,%xmm0
jmp    155e <bessel_Y1+0x42e>
movsd  0xce1(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    1433 <bessel_Y1+0x303>
cvttsd2si %xmm2,%ecx
cvttpd2dq %xmm2,%xmm0
cvtdq2pd %xmm0,%xmm0
addsd  0xcdb(%rip),%xmm0
subsd  %xmm0,%xmm2
mov    %ecx,%eax
shl    $0x4,%eax
sub    %ecx,%eax
sub    %ecx,%eax
lea    -0x38(%rax),%ecx
movslq %ecx,%rdx
lea    0x10e9(%rip),%rcx
lea    -0x37(%rax),%esi
movslq %esi,%rsi
movsd  (%rcx,%rdx,8),%xmm0
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rsi,8),%xmm0
lea    -0x36(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x35(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x34(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x33(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x32(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x31(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x30(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x2f(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x2e(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x2d(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
lea    -0x2c(%rax),%edx
movslq %edx,%rdx
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rdx,8),%xmm0
add    $0xffffffd5,%eax
cltq
mulsd  %xmm2,%xmm0
addsd  (%rcx,%rax,8),%xmm0
jmp    155e <bessel_Y1+0x42e>
movsd  0xbdd(%rip),%xmm3
divsd  %xmm2,%xmm3
movapd %xmm3,%xmm4
mulsd  %xmm3,%xmm4
cvttsd2si %xmm4,%eax
lea    (%rax,%rax,2),%ecx
lea    (%rax,%rcx,4),%eax
movslq %eax,%rbx
lea    0x13e5(%rip),%r14
movsd  (%r14,%rbx,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x8(%r14,%rbx,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x10(%r14,%rbx,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x18(%r14,%rbx,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x20(%r14,%rbx,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x28(%r14,%rbx,8),%xmm0
mulsd  %xmm4,%xmm0
addsd  0x30(%r14,%rbx,8),%xmm0
movsd  %xmm0,0x8(%rsp)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jb     14bc <bessel_Y1+0x38c>
xorps  %xmm0,%xmm0
sqrtsd %xmm3,%xmm0
jmp    14e9 <bessel_Y1+0x3b9>
movapd %xmm3,%xmm0
movapd %xmm2,0x10(%rsp)
movsd  %xmm3,0x30(%rsp)
movsd  %xmm4,0x28(%rsp)
call   1050 <sqrt@plt>
movsd  0x28(%rsp),%xmm4
movsd  0x30(%rsp),%xmm3
movapd 0x10(%rsp),%xmm2
movsd  0x38(%r14,%rbx,8),%xmm1
mulsd  %xmm4,%xmm1
addsd  0x40(%r14,%rbx,8),%xmm1
mulsd  %xmm4,%xmm1
addsd  0x48(%r14,%rbx,8),%xmm1
mulsd  %xmm4,%xmm1
addsd  0x50(%r14,%rbx,8),%xmm1
mulsd  %xmm4,%xmm1
addsd  0x58(%r14,%rbx,8),%xmm1
movsd  0x8(%rsp),%xmm5
mulsd  %xmm0,%xmm5
movsd  %xmm5,0x8(%rsp)
mulsd  %xmm4,%xmm1
addsd  0x60(%r14,%rbx,8),%xmm1
mulsd  %xmm3,%xmm1
addsd  0xadd(%rip),%xmm1
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm0
call   1030 <cos@plt>
xorpd  0xb68(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
add    $0x38,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@bessel_Y1.a = internal constant [16 x double] [double -9.464990e-14, double 0x3DB78B98F3637B78, double 0xBE2EE7A2359D7472, double 0x3E9CF9286E5F1F0E, double 0xBF021BB945250B7B, double 0x3F5B2995E7B7B5F2, double 0xBFA45F306DC9C883, double 0x3FD45F306DC9C883, double 0xBDCEA1CBE0789713, double 0x3E432DDCD590B025, double 0xBEB0A78013372A67, double 0x3F12C7DBFEFE6F50, double 0xBF6835B978938D3A, double 0x3FABD3975C75B2EE, double 0xBFC91866143CBC86, double 0xBFE45F306DC9C883]
@bessel_Y1.b = internal constant [112 x double] [double 0x3DBC13FC5EC73424, double 0x3DD44C15ADA7ED36, double 0xBDF4583ECC28068D, double 0xBE365E72A1543591, double 0xBE63BD04709CB1E1, double 0xBE8492276CF76FD5, double 0xBE82BF599FD72A79, double 0x3ED04DF562DAC691, double 0x3F053ED3548B9DB0, double 0x3F30789E61414CF0, double 0x3F51EBC18FB4607F, double 0x3F686CCFB0508EE0, double 0x3F3EECFF65BCCB52, double 0xBFC924E3EAC512F5, double 0x3DA73DE8A9AC8960, double 0x3E055BA9861E79E8, double 0x3E309144F1F7D03B, double 0x3E40167A969A40E3, double 0xBE70EE0D15239616, double 0xBEA70D2465C45AD3, double 0xBECBAA16E911E553, double 0xBED76656920EB97B, double 0x3F084C69CB1278DC, double 0x3F4015B2CF080639, double 0x3F6502F5616F122B, double 0x3F80D8A49C11B60A, double 0x3F866A655571B296, double 0xBFC88634A087725A, double 0xBDFBA21415C35F76, double 0xBE23BBA2DBF1E67D, double 0x3E059F8B68B6E8E5, double 0x3E71798E0EAEFB4C, double 0x3E95331AA7364C58, double 0xBE609B9A5B3B91F8, double 0xBEE1BB6A56A37E48, double 0xBF09D9E62643F430, double 0xBF19DCE7253A1551, double 0x3F3ED75328E32B60, double 0x3F73581FCC534D7B, double 0x3F939D6AB4E92753, double 0x3FA30F0347337F10, double 0xBFC5ACAE5A456B13, double 0x3E1305E3B27B865C, double 0x3E21A960A0BB2631, double 0xBE5B3B73EA0BB91A, double 0xBE7F8BAED3D32998, double 0x3E96D8F20EB337D1, double 0x3ED24A68E577BA1B, double 0x3EE18165B862F4E6, double 0xBF12C19EBC2AE1AD, double 0xBF410666279688AC, double 0xBF50845B648C1A61, double 0x3F71E4BFB79F588B, double 0x3FA18A0F792B5B46, double 0x3FB73AB7BE4958AD, double 0xBFBBA0618EF9353A, double 0xBE143AB08870C49D, double 0x3E1CEE7AE68C0145, double 0x3E62A28C2BB49B64, double 0xBE70B7B9055F51A3, double 0xBEB3DD791715A7B0, double 0x3E836EC7997F77AE, double 0x3F03091A2B8E68BB, double 0x3F1B79B948D6AA1B, double 0xBF4132AD2D3ED55B, double 0xBF70ABDAAB80B9BF, double 0xBF778617BBBF062F, double 0x3FA219176E89C683, double 0x3FC52B9E262AB41A, double 0x3F9456CF62D822D6, double 0x3DFB8B097F4B932B, double 0xBE2CDDB3377A5B73, double 0xBE0FBE753CB18F20, double 0x3E87F20F64893C48, double 0xBE8E646A526E964E, double 0xBEE0F6BA8A814FE5, double 0xBEBC6BD35DB8B66D, double 0x3F3171ABD972CEF8, double 0x3F47C70039E5620D, double 0xBF705A005A202B0F, double 0xBF9892F9DFAD6A5A, double 0xBF82F4AD64A15873, double 0x3FC9B4BC8B32C56A, double 0x3FCAEE9284A655DF, double 0x3DD265C35875AA07, double 0x3DE6FB8A4BBB3310, double 0xBE4EC68A1ABF6F5E, double 0x3E6D4966AFC6E81C, double 0x3EB19BBDF358EF89, double 0xBECC7C42055457F5, double 0xBF0D0DC769FCB397, double 0x3F06C6920755CA3C, double 0x3F5E4703CC110C3C, double 0x3F68A94C4AC1444A, double 0xBF9C91223F278FA1, double 0xBFB81E8EF7A5AFEE, double 0x3FB978F8A26B03B8, double 0x3FD7FF812850D7F0, double 0x3DC8E56A0CE747B8, double 0x3E06F929F4966266, double 0xBE43DB4E9BCB2CD9, double 0xBE757AF90A4DEC10, double 0x3EAD62F379439FA8, double 0x3EDA5BFF1C9D6022, double 0xBF066B78C1E44C50, double 0xBF36B21760A84452, double 0x3F4D4E08715AA80C, double 0x3F863FC2B290951E, double 0x3F57D9601CD33C96, double 0xBFC22AE354968D7A, double 0xBFC363E1823C20FA, double 0x3FD6DC6726033B86]
@bessel_Y1.c = internal constant [126 x double] [double 0x3DF60059B02C65CC, double 0xBE1E7B8A17F875C7, double 0x3E4D5E06A3F10005, double 0xBE709132A8BFFED6, double 0xBE9D42E68AA2DE75, double 0x3EBE2B84AE915C72, double 0x3F0A2A4DAE514BE7, double 0xBF286751013FE586, double 0xBF60EC447CA80B52, double 0x3F7A39F371C81580, double 0x3FA7E0B5C10C3F07, double 0xBFBD2F26797EDDE8, double 0xBFD0BDF1D5ED9F11, double 0x3FD3438A46B12235, double 0xBD650806ECFA680B, double 0xBDFAAEA1D8D7353D, double 0x3E36A5630F0B7616, double 0x3E5FE6C97AD9E7FA, double 0xBEA1AF042F6C4FB6, double 0xBECADFE3A680DA55, double 0x3F07766FEC0BD01E, double 0x3F262948B4668327, double 0xBF6132B2FBB46CE0, double 0xBF741CC1013352C6, double 0x3FA96E938A041E27, double 0x3FA57B342AC99B68, double 0xBFD57346C22293D0, double 0xBF9854146D501FDF, double 0x3D88ED2712D98C3E, double 0xBDFEBA6CD9A41E56, double 0x3DE851F1E32C70A5, double 0x3E703FD9D7EBB3DD, double 0xBE5F03FCEEDB3964, double 0xBED8E7AA8B5FE7B6, double 0x3ED58F53E953BB61, double 0x3F376002B8CD9C2C, double 0xBF38FD9C47ED6330, double 0xBF87BB3112DD3E45, double 0x3F8C31271FE1202A, double 0x3FC26ACF98AB4837, double 0xBFC0C70CFD87BC18, double 0xBFD18AB620718A46, double 0x3DBD81EF8800C031, double 0xBDF0B3480C05F283, double 0xBE327990178E5A4B, double 0x3E6318C8D7050706, double 0x3EA08D5323A52524, double 0xBECEAE0B1278F95B, double 0xBF0318B02E071CC4, double 0x3F2EFAFBFE8B2EB3, double 0x3F59524B4BEEB432, double 0xBF8124BBFB54123B, double 0xBF9E1E2F5DE1AD38, double 0x3FBDFCAAB7C9649C, double 0x3FC3704580E577E1, double 0xBFD0958FBF7FF0A3, double 0x3DC005B3BA4C39B0, double 0x3DE4DECA2F9C3DD8, double 0xBE34F68C388311EA, double 0xBE54CAE6D2D70121, double 0x3EA37379FB146BB8, double 0x3EBAAC11C9ECBA24, double 0xBF07B522AFB59A82, double 0xBF1377E3F76A4ABA, double 0x3F60E64C1422AD5F, double 0x3F57950B5EF5ACDC, double 0xBFA69A8C80FEF1B8, double 0xBF69FCBDE9E3E51D, double 0x3FD17D7B3975C5D8, double 0xBF9ACBF658C8EFD5, double 0x3D9C58FEC70358D8, double 0x3DFBA8C843414DC4, double 0xBE1544559E46BE4F, double 0xBE6DF936A44EA34A, double 0x3E86C8E75A2E3F56, double 0x3ED5FA720AAFABCA, double 0xBEF0258F7076E21C, double 0xBF33E79AE1C266C5, double 0x3F4AF68515718AF5, double 0x3F82EA669F1D142A, double 0xBF9530EB9B9BFACB, double 0xBFBBBCCEE60818D0, double 0x3FC32D68AAEB7AB3, double 0x3FCA01CC87894BDB, double 0xBDB743242FD22D75, double 0x3DF472088D317E07, double 0x3E2CC101E612E68A, double 0xBE671C3B95234272, double 0xBE98A6C43088F31E, double 0x3ED1D6ED7299B342, double 0x3EFB1AB72D7A85AB, double 0xBF31332DEF969AC7, double 0xBF50C0058B6151E7, double 0x3F81AD93539A5B8E, double 0x3F929A226AF2303D, double 0xBFBC8C5A5A4CBAAF, double 0xBFB6FC574BA00DAF, double 0x3FCDEA0528DD9E01, double 0xBDC042FB8F681D36, double 0xBDD0E7F93814C747, double 0x3E34F699BA6A2997, double 0x3E3ACF59FC1D8F5E, double 0xBEA2FAA36E03B685, double 0xBE9586D8C6E58339, double 0x3F066E9967EF621C, double 0xBEA1CEA701BF9029, double 0xBF5EA948F8D62ED1, double 0x3F47FA2E627DA967, double 0x3FA39FCC7551C964, double 0xBF9330B1EB28860F, double 0xBFCD7981BF573A3D, double 0x3FADAAA5420D607D, double 0xBDAA754BF1A42937, double 0xBDF866F728F60205, double 0x3E22598E32EF73FB, double 0x3E69D72FB4C5F449, double 0xBE91FEE3C35D977E, double 0xBED26BC9824706D2, double 0x3EF73194E7B1DCE2, double 0x3F301E1B046FA40C, double 0xBF5164A0D71C239C, double 0xBF7D99B438D95740, double 0x3F988A152BF2FFE3, double 0x3FB531468C7EACDD, double 0xBFC4571299064528, double 0xBFC3B0F8D459E289]
@bessel_Y1.d = internal constant [52 x double] [double 0xBD0CA693493DC829, double 0x3D57B7B07D5EEF24, double 0xBDA92D70E32A1525, double 0x3E0794E216BF2809, double 0xBE797ACEAD3C2E53, double 0x3F0BCBCA3214D416, double 0x3FC4D8D7A58FA311, double 0xBD59B4A0B31E9F59, double 0x3DA950447B479628, double 0xBE01BFB25B08B2CF, double 0x3E6901E4F9294E87, double 0xBEE8E38E38D46314, double 0x3F8FFFFFFFFFFFDE, double 0xBD039EBE21CAC510, double 0x3D5619ED4B24ECD7, double 0xBDA90C8085DA83FD, double 0x3E0794245DC0A359, double 0xBE797ACD6B778E4A, double 0x3F0BCBCA31C9A1A5, double 0x3FC4D8D7A58FA401, double 0xBD53A69F052FFE71, double 0x3DA8612554F4D294, double 0xBE01B7EBE0242AE6, double 0x3E6901C30F088F42, double 0xBEE8E38E25A1DD69, double 0x3F8FFFFFFFFEE205, double 0xBCFC6501FA11A819, double 0x3D541B298BFD54AB, double 0xBDA8BCF1C884A2F5, double 0x3E0790C90CED01CE, double 0xBE797AC311C8FB6F, double 0x3F0BCBCA2D79285E, double 0x3FC4D8D7A58FBC48, double 0xBD4EC0FD40D1BFBE, double 0x3DA71055E2F03091, double 0xBE01A2E02B669AD6, double 0x3E69011844221FC0, double 0xBEE8E38D75F7D740, double 0x3F8FFFFFFFEC959E, double 0xBCF55954358A9C0E, double 0x3D52256682111CC2, double 0xBDA847CE42F75E0E, double 0x3E07897117865F34, double 0xBE797AA1B195E3DD, double 0x3F0BCBCA191CF01F, double 0x3FC4D8D7A59062F1, double 0xBD48B37E5EE1F90F, double 0x3DA5A8569D7EF22D, double 0xBE0181336466A786, double 0x3E68FF826E223C32, double 0xBEE8E38B0EAE920C, double 0x3F8FFFFFFF8EB94B]
define double @bessel_Y1(double %0) {
%2 = alloca double
%3 = alloca i32
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
store double %0, double* %2
%8 = load double, double* %2
%9 = fcmp olt double %8, 8.500000e-01
br i1 %9, label %10, label %66
10: ; preds = %1
%11 = load double, double* %2
%12 = load double, double* %2
%13 = fmul double %11, %12
store double %13, double* %4
%14 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 0)
%15 = load double, double* %4
%16 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 1)
%17 = call double @llvm.fmuladd.f64(double %14, double %15, double %16)
%18 = load double, double* %4
%19 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 2)
%20 = call double @llvm.fmuladd.f64(double %17, double %18, double %19)
%21 = load double, double* %4
%22 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 3)
%23 = call double @llvm.fmuladd.f64(double %20, double %21, double %22)
%24 = load double, double* %4
%25 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 4)
%26 = call double @llvm.fmuladd.f64(double %23, double %24, double %25)
%27 = load double, double* %4
%28 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 5)
%29 = call double @llvm.fmuladd.f64(double %26, double %27, double %28)
%30 = load double, double* %4
%31 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 6)
%32 = call double @llvm.fmuladd.f64(double %29, double %30, double %31)
%33 = load double, double* %4
%34 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 7)
%35 = call double @llvm.fmuladd.f64(double %32, double %33, double %34)
%36 = load double, double* %2
%37 = fmul double %35, %36
store double %37, double* %5
%38 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 8)
%39 = load double, double* %4
%40 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 9)
%41 = call double @llvm.fmuladd.f64(double %38, double %39, double %40)
%42 = load double, double* %4
%43 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 10)
%44 = call double @llvm.fmuladd.f64(double %41, double %42, double %43)
%45 = load double, double* %4
%46 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 11)
%47 = call double @llvm.fmuladd.f64(double %44, double %45, double %46)
%48 = load double, double* %4
%49 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 12)
%50 = call double @llvm.fmuladd.f64(double %47, double %48, double %49)
%51 = load double, double* %4
%52 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 13)
%53 = call double @llvm.fmuladd.f64(double %50, double %51, double %52)
%54 = load double, double* %4
%55 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 14)
%56 = call double @llvm.fmuladd.f64(double %53, double %54, double %55)
%57 = load double, double* %4
%58 = load double, double* getelementptr inbounds ([16 x double], [16 x double]* @bessel_Y1.a, i64 0, i64 15)
%59 = call double @llvm.fmuladd.f64(double %56, double %57, double %58)
%60 = load double, double* %2
%61 = fdiv double %59, %60
%62 = load double, double* %5
%63 = load double, double* %2
%64 = call double @log(double %63)
%65 = call double @llvm.fmuladd.f64(double %62, double %64, double %61)
store double %65, double* %5
br label %400
66: ; preds = %1
%67 = load double, double* %2
%68 = fcmp olt double %67, 4.150000e+00
br i1 %68, label %69, label %182
69: ; preds = %66
%70 = load double, double* %2
%71 = fdiv double 4.000000e+00, %70
store double %71, double* %6
%72 = load double, double* %2
%73 = load double, double* %6
%74 = fsub double %72, %73
store double %74, double* %4
%75 = load double, double* %4
%76 = fadd double %75, 4.000000e+00
%77 = fptosi double %76 to i32
store i32 %77, i32* %3
%78 = load i32, i32* %3
%79 = sitofp i32 %78 to double
%80 = fsub double %79, 3.500000e+00
%81 = load double, double* %4
%82 = fsub double %81, %80
store double %82, double* %4
%83 = load i32, i32* %3
%84 = mul nsw i32 %83, 14
store i32 %84, i32* %3
%85 = load i32, i32* %3
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %86
%88 = load double, double* %87
%89 = load double, double* %4
%90 = load i32, i32* %3
%91 = add nsw i32 %90, 1
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %92
%94 = load double, double* %93
%95 = call double @llvm.fmuladd.f64(double %88, double %89, double %94)
%96 = load double, double* %4
%97 = load i32, i32* %3
%98 = add nsw i32 %97, 2
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %99
%101 = load double, double* %100
%102 = call double @llvm.fmuladd.f64(double %95, double %96, double %101)
%103 = load double, double* %4
%104 = load i32, i32* %3
%105 = add nsw i32 %104, 3
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %106
%108 = load double, double* %107
%109 = call double @llvm.fmuladd.f64(double %102, double %103, double %108)
%110 = load double, double* %4
%111 = load i32, i32* %3
%112 = add nsw i32 %111, 4
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %113
%115 = load double, double* %114
%116 = call double @llvm.fmuladd.f64(double %109, double %110, double %115)
%117 = load double, double* %4
%118 = load i32, i32* %3
%119 = add nsw i32 %118, 5
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %120
%122 = load double, double* %121
%123 = call double @llvm.fmuladd.f64(double %116, double %117, double %122)
%124 = load double, double* %4
%125 = load i32, i32* %3
%126 = add nsw i32 %125, 6
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %127
%129 = load double, double* %128
%130 = call double @llvm.fmuladd.f64(double %123, double %124, double %129)
%131 = load double, double* %4
%132 = load i32, i32* %3
%133 = add nsw i32 %132, 7
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %134
%136 = load double, double* %135
%137 = call double @llvm.fmuladd.f64(double %130, double %131, double %136)
%138 = load double, double* %4
%139 = load i32, i32* %3
%140 = add nsw i32 %139, 8
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %141
%143 = load double, double* %142
%144 = call double @llvm.fmuladd.f64(double %137, double %138, double %143)
%145 = load double, double* %4
%146 = load i32, i32* %3
%147 = add nsw i32 %146, 9
%148 = sext i32 %147 to i64
%149 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %148
%150 = load double, double* %149
%151 = call double @llvm.fmuladd.f64(double %144, double %145, double %150)
%152 = load double, double* %4
%153 = load i32, i32* %3
%154 = add nsw i32 %153, 10
%155 = sext i32 %154 to i64
%156 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %155
%157 = load double, double* %156
%158 = call double @llvm.fmuladd.f64(double %151, double %152, double %157)
%159 = load double, double* %4
%160 = load i32, i32* %3
%161 = add nsw i32 %160, 11
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %162
%164 = load double, double* %163
%165 = call double @llvm.fmuladd.f64(double %158, double %159, double %164)
%166 = load double, double* %4
%167 = load i32, i32* %3
%168 = add nsw i32 %167, 12
%169 = sext i32 %168 to i64
%170 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %169
%171 = load double, double* %170
%172 = call double @llvm.fmuladd.f64(double %165, double %166, double %171)
%173 = load double, double* %4
%174 = load i32, i32* %3
%175 = add nsw i32 %174, 13
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %176
%178 = load double, double* %177
%179 = call double @llvm.fmuladd.f64(double %172, double %173, double %178)
%180 = load double, double* %6
%181 = fmul double %179, %180
store double %181, double* %5
br label %399
182: ; preds = %66
%183 = load double, double* %2
%184 = fcmp olt double %183, 1.250000e+01
br i1 %184, label %185, label %291
185: ; preds = %182
%186 = load double, double* %2
%187 = fptosi double %186 to i32
store i32 %187, i32* %3
%188 = load double, double* %2
%189 = load i32, i32* %3
%190 = sitofp i32 %189 to double
%191 = fadd double %190, 5.000000e-01
%192 = fsub double %188, %191
store double %192, double* %4
%193 = load i32, i32* %3
%194 = sub nsw i32 %193, 4
%195 = mul nsw i32 14, %194
store i32 %195, i32* %3
%196 = load i32, i32* %3
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %197
%199 = load double, double* %198
%200 = load double, double* %4
%201 = load i32, i32* %3
%202 = add nsw i32 %201, 1
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %203
%205 = load double, double* %204
%206 = call double @llvm.fmuladd.f64(double %199, double %200, double %205)
%207 = load double, double* %4
%208 = load i32, i32* %3
%209 = add nsw i32 %208, 2
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %210
%212 = load double, double* %211
%213 = call double @llvm.fmuladd.f64(double %206, double %207, double %212)
%214 = load double, double* %4
%215 = load i32, i32* %3
%216 = add nsw i32 %215, 3
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %217
%219 = load double, double* %218
%220 = call double @llvm.fmuladd.f64(double %213, double %214, double %219)
%221 = load double, double* %4
%222 = load i32, i32* %3
%223 = add nsw i32 %222, 4
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %224
%226 = load double, double* %225
%227 = call double @llvm.fmuladd.f64(double %220, double %221, double %226)
%228 = load double, double* %4
%229 = load i32, i32* %3
%230 = add nsw i32 %229, 5
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %231
%233 = load double, double* %232
%234 = call double @llvm.fmuladd.f64(double %227, double %228, double %233)
%235 = load double, double* %4
%236 = load i32, i32* %3
%237 = add nsw i32 %236, 6
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %238
%240 = load double, double* %239
%241 = call double @llvm.fmuladd.f64(double %234, double %235, double %240)
%242 = load double, double* %4
%243 = load i32, i32* %3
%244 = add nsw i32 %243, 7
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %245
%247 = load double, double* %246
%248 = call double @llvm.fmuladd.f64(double %241, double %242, double %247)
%249 = load double, double* %4
%250 = load i32, i32* %3
%251 = add nsw i32 %250, 8
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %252
%254 = load double, double* %253
%255 = call double @llvm.fmuladd.f64(double %248, double %249, double %254)
%256 = load double, double* %4
%257 = load i32, i32* %3
%258 = add nsw i32 %257, 9
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %259
%261 = load double, double* %260
%262 = call double @llvm.fmuladd.f64(double %255, double %256, double %261)
%263 = load double, double* %4
%264 = load i32, i32* %3
%265 = add nsw i32 %264, 10
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %266
%268 = load double, double* %267
%269 = call double @llvm.fmuladd.f64(double %262, double %263, double %268)
%270 = load double, double* %4
%271 = load i32, i32* %3
%272 = add nsw i32 %271, 11
%273 = sext i32 %272 to i64
%274 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %273
%275 = load double, double* %274
%276 = call double @llvm.fmuladd.f64(double %269, double %270, double %275)
%277 = load double, double* %4
%278 = load i32, i32* %3
%279 = add nsw i32 %278, 12
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %280
%282 = load double, double* %281
%283 = call double @llvm.fmuladd.f64(double %276, double %277, double %282)
%284 = load double, double* %4
%285 = load i32, i32* %3
%286 = add nsw i32 %285, 13
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %287
%289 = load double, double* %288
%290 = call double @llvm.fmuladd.f64(double %283, double %284, double %289)
store double %290, double* %5
br label %398
291: ; preds = %182
%292 = load double, double* %2
%293 = fdiv double 2.400000e+01, %292
store double %293, double* %6
%294 = load double, double* %6
%295 = load double, double* %6
%296 = fmul double %294, %295
store double %296, double* %4
%297 = load double, double* %4
%298 = fptosi double %297 to i32
%299 = mul nsw i32 13, %298
store i32 %299, i32* %3
%300 = load i32, i32* %3
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %301
%303 = load double, double* %302
%304 = load double, double* %4
%305 = load i32, i32* %3
%306 = add nsw i32 %305, 1
%307 = sext i32 %306 to i64
%308 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %307
%309 = load double, double* %308
%310 = call double @llvm.fmuladd.f64(double %303, double %304, double %309)
%311 = load double, double* %4
%312 = load i32, i32* %3
%313 = add nsw i32 %312, 2
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %314
%316 = load double, double* %315
%317 = call double @llvm.fmuladd.f64(double %310, double %311, double %316)
%318 = load double, double* %4
%319 = load i32, i32* %3
%320 = add nsw i32 %319, 3
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %321
%323 = load double, double* %322
%324 = call double @llvm.fmuladd.f64(double %317, double %318, double %323)
%325 = load double, double* %4
%326 = load i32, i32* %3
%327 = add nsw i32 %326, 4
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %328
%330 = load double, double* %329
%331 = call double @llvm.fmuladd.f64(double %324, double %325, double %330)
%332 = load double, double* %4
%333 = load i32, i32* %3
%334 = add nsw i32 %333, 5
%335 = sext i32 %334 to i64
%336 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %335
%337 = load double, double* %336
%338 = call double @llvm.fmuladd.f64(double %331, double %332, double %337)
%339 = load double, double* %4
%340 = load i32, i32* %3
%341 = add nsw i32 %340, 6
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %342
%344 = load double, double* %343
%345 = call double @llvm.fmuladd.f64(double %338, double %339, double %344)
%346 = load double, double* %6
%347 = call double @sqrt(double %346)
%348 = fmul double %345, %347
store double %348, double* %5
%349 = load i32, i32* %3
%350 = add nsw i32 %349, 7
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %351
%353 = load double, double* %352
%354 = load double, double* %4
%355 = load i32, i32* %3
%356 = add nsw i32 %355, 8
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %357
%359 = load double, double* %358
%360 = call double @llvm.fmuladd.f64(double %353, double %354, double %359)
%361 = load double, double* %4
%362 = load i32, i32* %3
%363 = add nsw i32 %362, 9
%364 = sext i32 %363 to i64
%365 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %364
%366 = load double, double* %365
%367 = call double @llvm.fmuladd.f64(double %360, double %361, double %366)
%368 = load double, double* %4
%369 = load i32, i32* %3
%370 = add nsw i32 %369, 10
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %371
%373 = load double, double* %372
%374 = call double @llvm.fmuladd.f64(double %367, double %368, double %373)
%375 = load double, double* %4
%376 = load i32, i32* %3
%377 = add nsw i32 %376, 11
%378 = sext i32 %377 to i64
%379 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %378
%380 = load double, double* %379
%381 = call double @llvm.fmuladd.f64(double %374, double %375, double %380)
%382 = load double, double* %4
%383 = load i32, i32* %3
%384 = add nsw i32 %383, 12
%385 = sext i32 %384 to i64
%386 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %385
%387 = load double, double* %386
%388 = call double @llvm.fmuladd.f64(double %381, double %382, double %387)
%389 = load double, double* %6
%390 = call double @llvm.fmuladd.f64(double %388, double %389, double 0xBFE921FB54442D18)
store double %390, double* %7
%391 = load double, double* %2
%392 = load double, double* %7
%393 = fadd double %391, %392
%394 = call double @cos(double %393)
%395 = fneg double %394
%396 = load double, double* %5
%397 = fmul double %396, %395
store double %397, double* %5
br label %398
398: ; preds = %291, %185
br label %399
399: ; preds = %398, %69
br label %400
400: ; preds = %399, %10
%401 = load double, double* %5
ret double %401
}

LLVM IR (-O2):
@bessel_Y1.b = internal unnamed_addr constant [112 x double] [double 0x3DBC13FC5EC73424, double 0x3DD44C15ADA7ED36, double 0xBDF4583ECC28068D, double 0xBE365E72A1543591, double 0xBE63BD04709CB1E1, double 0xBE8492276CF76FD5, double 0xBE82BF599FD72A79, double 0x3ED04DF562DAC691, double 0x3F053ED3548B9DB0, double 0x3F30789E61414CF0, double 0x3F51EBC18FB4607F, double 0x3F686CCFB0508EE0, double 0x3F3EECFF65BCCB52, double 0xBFC924E3EAC512F5, double 0x3DA73DE8A9AC8960, double 0x3E055BA9861E79E8, double 0x3E309144F1F7D03B, double 0x3E40167A969A40E3, double 0xBE70EE0D15239616, double 0xBEA70D2465C45AD3, double 0xBECBAA16E911E553, double 0xBED76656920EB97B, double 0x3F084C69CB1278DC, double 0x3F4015B2CF080639, double 0x3F6502F5616F122B, double 0x3F80D8A49C11B60A, double 0x3F866A655571B296, double 0xBFC88634A087725A, double 0xBDFBA21415C35F76, double 0xBE23BBA2DBF1E67D, double 0x3E059F8B68B6E8E5, double 0x3E71798E0EAEFB4C, double 0x3E95331AA7364C58, double 0xBE609B9A5B3B91F8, double 0xBEE1BB6A56A37E48, double 0xBF09D9E62643F430, double 0xBF19DCE7253A1551, double 0x3F3ED75328E32B60, double 0x3F73581FCC534D7B, double 0x3F939D6AB4E92753, double 0x3FA30F0347337F10, double 0xBFC5ACAE5A456B13, double 0x3E1305E3B27B865C, double 0x3E21A960A0BB2631, double 0xBE5B3B73EA0BB91A, double 0xBE7F8BAED3D32998, double 0x3E96D8F20EB337D1, double 0x3ED24A68E577BA1B, double 0x3EE18165B862F4E6, double 0xBF12C19EBC2AE1AD, double 0xBF410666279688AC, double 0xBF50845B648C1A61, double 0x3F71E4BFB79F588B, double 0x3FA18A0F792B5B46, double 0x3FB73AB7BE4958AD, double 0xBFBBA0618EF9353A, double 0xBE143AB08870C49D, double 0x3E1CEE7AE68C0145, double 0x3E62A28C2BB49B64, double 0xBE70B7B9055F51A3, double 0xBEB3DD791715A7B0, double 0x3E836EC7997F77AE, double 0x3F03091A2B8E68BB, double 0x3F1B79B948D6AA1B, double 0xBF4132AD2D3ED55B, double 0xBF70ABDAAB80B9BF, double 0xBF778617BBBF062F, double 0x3FA219176E89C683, double 0x3FC52B9E262AB41A, double 0x3F9456CF62D822D6, double 0x3DFB8B097F4B932B, double 0xBE2CDDB3377A5B73, double 0xBE0FBE753CB18F20, double 0x3E87F20F64893C48, double 0xBE8E646A526E964E, double 0xBEE0F6BA8A814FE5, double 0xBEBC6BD35DB8B66D, double 0x3F3171ABD972CEF8, double 0x3F47C70039E5620D, double 0xBF705A005A202B0F, double 0xBF9892F9DFAD6A5A, double 0xBF82F4AD64A15873, double 0x3FC9B4BC8B32C56A, double 0x3FCAEE9284A655DF, double 0x3DD265C35875AA07, double 0x3DE6FB8A4BBB3310, double 0xBE4EC68A1ABF6F5E, double 0x3E6D4966AFC6E81C, double 0x3EB19BBDF358EF89, double 0xBECC7C42055457F5, double 0xBF0D0DC769FCB397, double 0x3F06C6920755CA3C, double 0x3F5E4703CC110C3C, double 0x3F68A94C4AC1444A, double 0xBF9C91223F278FA1, double 0xBFB81E8EF7A5AFEE, double 0x3FB978F8A26B03B8, double 0x3FD7FF812850D7F0, double 0x3DC8E56A0CE747B8, double 0x3E06F929F4966266, double 0xBE43DB4E9BCB2CD9, double 0xBE757AF90A4DEC10, double 0x3EAD62F379439FA8, double 0x3EDA5BFF1C9D6022, double 0xBF066B78C1E44C50, double 0xBF36B21760A84452, double 0x3F4D4E08715AA80C, double 0x3F863FC2B290951E, double 0x3F57D9601CD33C96, double 0xBFC22AE354968D7A, double 0xBFC363E1823C20FA, double 0x3FD6DC6726033B86]
@bessel_Y1.c = internal unnamed_addr constant [126 x double] [double 0x3DF60059B02C65CC, double 0xBE1E7B8A17F875C7, double 0x3E4D5E06A3F10005, double 0xBE709132A8BFFED6, double 0xBE9D42E68AA2DE75, double 0x3EBE2B84AE915C72, double 0x3F0A2A4DAE514BE7, double 0xBF286751013FE586, double 0xBF60EC447CA80B52, double 0x3F7A39F371C81580, double 0x3FA7E0B5C10C3F07, double 0xBFBD2F26797EDDE8, double 0xBFD0BDF1D5ED9F11, double 0x3FD3438A46B12235, double 0xBD650806ECFA680B, double 0xBDFAAEA1D8D7353D, double 0x3E36A5630F0B7616, double 0x3E5FE6C97AD9E7FA, double 0xBEA1AF042F6C4FB6, double 0xBECADFE3A680DA55, double 0x3F07766FEC0BD01E, double 0x3F262948B4668327, double 0xBF6132B2FBB46CE0, double 0xBF741CC1013352C6, double 0x3FA96E938A041E27, double 0x3FA57B342AC99B68, double 0xBFD57346C22293D0, double 0xBF9854146D501FDF, double 0x3D88ED2712D98C3E, double 0xBDFEBA6CD9A41E56, double 0x3DE851F1E32C70A5, double 0x3E703FD9D7EBB3DD, double 0xBE5F03FCEEDB3964, double 0xBED8E7AA8B5FE7B6, double 0x3ED58F53E953BB61, double 0x3F376002B8CD9C2C, double 0xBF38FD9C47ED6330, double 0xBF87BB3112DD3E45, double 0x3F8C31271FE1202A, double 0x3FC26ACF98AB4837, double 0xBFC0C70CFD87BC18, double 0xBFD18AB620718A46, double 0x3DBD81EF8800C031, double 0xBDF0B3480C05F283, double 0xBE327990178E5A4B, double 0x3E6318C8D7050706, double 0x3EA08D5323A52524, double 0xBECEAE0B1278F95B, double 0xBF0318B02E071CC4, double 0x3F2EFAFBFE8B2EB3, double 0x3F59524B4BEEB432, double 0xBF8124BBFB54123B, double 0xBF9E1E2F5DE1AD38, double 0x3FBDFCAAB7C9649C, double 0x3FC3704580E577E1, double 0xBFD0958FBF7FF0A3, double 0x3DC005B3BA4C39B0, double 0x3DE4DECA2F9C3DD8, double 0xBE34F68C388311EA, double 0xBE54CAE6D2D70121, double 0x3EA37379FB146BB8, double 0x3EBAAC11C9ECBA24, double 0xBF07B522AFB59A82, double 0xBF1377E3F76A4ABA, double 0x3F60E64C1422AD5F, double 0x3F57950B5EF5ACDC, double 0xBFA69A8C80FEF1B8, double 0xBF69FCBDE9E3E51D, double 0x3FD17D7B3975C5D8, double 0xBF9ACBF658C8EFD5, double 0x3D9C58FEC70358D8, double 0x3DFBA8C843414DC4, double 0xBE1544559E46BE4F, double 0xBE6DF936A44EA34A, double 0x3E86C8E75A2E3F56, double 0x3ED5FA720AAFABCA, double 0xBEF0258F7076E21C, double 0xBF33E79AE1C266C5, double 0x3F4AF68515718AF5, double 0x3F82EA669F1D142A, double 0xBF9530EB9B9BFACB, double 0xBFBBBCCEE60818D0, double 0x3FC32D68AAEB7AB3, double 0x3FCA01CC87894BDB, double 0xBDB743242FD22D75, double 0x3DF472088D317E07, double 0x3E2CC101E612E68A, double 0xBE671C3B95234272, double 0xBE98A6C43088F31E, double 0x3ED1D6ED7299B342, double 0x3EFB1AB72D7A85AB, double 0xBF31332DEF969AC7, double 0xBF50C0058B6151E7, double 0x3F81AD93539A5B8E, double 0x3F929A226AF2303D, double 0xBFBC8C5A5A4CBAAF, double 0xBFB6FC574BA00DAF, double 0x3FCDEA0528DD9E01, double 0xBDC042FB8F681D36, double 0xBDD0E7F93814C747, double 0x3E34F699BA6A2997, double 0x3E3ACF59FC1D8F5E, double 0xBEA2FAA36E03B685, double 0xBE9586D8C6E58339, double 0x3F066E9967EF621C, double 0xBEA1CEA701BF9029, double 0xBF5EA948F8D62ED1, double 0x3F47FA2E627DA967, double 0x3FA39FCC7551C964, double 0xBF9330B1EB28860F, double 0xBFCD7981BF573A3D, double 0x3FADAAA5420D607D, double 0xBDAA754BF1A42937, double 0xBDF866F728F60205, double 0x3E22598E32EF73FB, double 0x3E69D72FB4C5F449, double 0xBE91FEE3C35D977E, double 0xBED26BC9824706D2, double 0x3EF73194E7B1DCE2, double 0x3F301E1B046FA40C, double 0xBF5164A0D71C239C, double 0xBF7D99B438D95740, double 0x3F988A152BF2FFE3, double 0x3FB531468C7EACDD, double 0xBFC4571299064528, double 0xBFC3B0F8D459E289]
@bessel_Y1.d = internal unnamed_addr constant [52 x double] [double 0xBD0CA693493DC829, double 0x3D57B7B07D5EEF24, double 0xBDA92D70E32A1525, double 0x3E0794E216BF2809, double 0xBE797ACEAD3C2E53, double 0x3F0BCBCA3214D416, double 0x3FC4D8D7A58FA311, double 0xBD59B4A0B31E9F59, double 0x3DA950447B479628, double 0xBE01BFB25B08B2CF, double 0x3E6901E4F9294E87, double 0xBEE8E38E38D46314, double 0x3F8FFFFFFFFFFFDE, double 0xBD039EBE21CAC510, double 0x3D5619ED4B24ECD7, double 0xBDA90C8085DA83FD, double 0x3E0794245DC0A359, double 0xBE797ACD6B778E4A, double 0x3F0BCBCA31C9A1A5, double 0x3FC4D8D7A58FA401, double 0xBD53A69F052FFE71, double 0x3DA8612554F4D294, double 0xBE01B7EBE0242AE6, double 0x3E6901C30F088F42, double 0xBEE8E38E25A1DD69, double 0x3F8FFFFFFFFEE205, double 0xBCFC6501FA11A819, double 0x3D541B298BFD54AB, double 0xBDA8BCF1C884A2F5, double 0x3E0790C90CED01CE, double 0xBE797AC311C8FB6F, double 0x3F0BCBCA2D79285E, double 0x3FC4D8D7A58FBC48, double 0xBD4EC0FD40D1BFBE, double 0x3DA71055E2F03091, double 0xBE01A2E02B669AD6, double 0x3E69011844221FC0, double 0xBEE8E38D75F7D740, double 0x3F8FFFFFFFEC959E, double 0xBCF55954358A9C0E, double 0x3D52256682111CC2, double 0xBDA847CE42F75E0E, double 0x3E07897117865F34, double 0xBE797AA1B195E3DD, double 0x3F0BCBCA191CF01F, double 0x3FC4D8D7A59062F1, double 0xBD48B37E5EE1F90F, double 0x3DA5A8569D7EF22D, double 0xBE0181336466A786, double 0x3E68FF826E223C32, double 0xBEE8E38B0EAE920C, double 0x3F8FFFFFFF8EB94B]
define double @bessel_Y1(double %0) {
%2 = fcmp olt double %0, 8.500000e-01
br i1 %2, label %3, label %23
3: ; preds = %1
%4 = fmul double %0, %0
%5 = tail call double @llvm.fmuladd.f64(double %4, double -9.464990e-14, double 0x3DB78B98F3637B78)
%6 = tail call double @llvm.fmuladd.f64(double %5, double %4, double 0xBE2EE7A2359D7472)
%7 = tail call double @llvm.fmuladd.f64(double %6, double %4, double 0x3E9CF9286E5F1F0E)
%8 = tail call double @llvm.fmuladd.f64(double %7, double %4, double 0xBF021BB945250B7B)
%9 = tail call double @llvm.fmuladd.f64(double %8, double %4, double 0x3F5B2995E7B7B5F2)
%10 = tail call double @llvm.fmuladd.f64(double %9, double %4, double 0xBFA45F306DC9C883)
%11 = tail call double @llvm.fmuladd.f64(double %10, double %4, double 0x3FD45F306DC9C883)
%12 = fmul double %11, %0
%13 = tail call double @llvm.fmuladd.f64(double %4, double 0xBDCEA1CBE0789713, double 0x3E432DDCD590B025)
%14 = tail call double @llvm.fmuladd.f64(double %13, double %4, double 0xBEB0A78013372A67)
%15 = tail call double @llvm.fmuladd.f64(double %14, double %4, double 0x3F12C7DBFEFE6F50)
%16 = tail call double @llvm.fmuladd.f64(double %15, double %4, double 0xBF6835B978938D3A)
%17 = tail call double @llvm.fmuladd.f64(double %16, double %4, double 0x3FABD3975C75B2EE)
%18 = tail call double @llvm.fmuladd.f64(double %17, double %4, double 0xBFC91866143CBC86)
%19 = tail call double @llvm.fmuladd.f64(double %18, double %4, double 0xBFE45F306DC9C883)
%20 = fdiv double %19, %0
%21 = tail call double @log(double %0)
%22 = tail call double @llvm.fmuladd.f64(double %12, double %21, double %20)
br label %254
23: ; preds = %1
%24 = fcmp olt double %0, 4.150000e+00
br i1 %24, label %25, label %103
25: ; preds = %23
%26 = fdiv double 4.000000e+00, %0
%27 = fsub double %0, %26
%28 = fadd double %27, 4.000000e+00
%29 = fptosi double %28 to i32
%30 = sitofp i32 %29 to double
%31 = fadd double %30, -3.500000e+00
%32 = fsub double %27, %31
%33 = mul nsw i32 %29, 14
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %34
%36 = load double, double* %35
%37 = or i32 %33, 1
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %38
%40 = load double, double* %39
%41 = tail call double @llvm.fmuladd.f64(double %36, double %32, double %40)
%42 = add nsw i32 %33, 2
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %43
%45 = load double, double* %44
%46 = tail call double @llvm.fmuladd.f64(double %41, double %32, double %45)
%47 = add nsw i32 %33, 3
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %48
%50 = load double, double* %49
%51 = tail call double @llvm.fmuladd.f64(double %46, double %32, double %50)
%52 = add nsw i32 %33, 4
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %53
%55 = load double, double* %54
%56 = tail call double @llvm.fmuladd.f64(double %51, double %32, double %55)
%57 = add nsw i32 %33, 5
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %58
%60 = load double, double* %59
%61 = tail call double @llvm.fmuladd.f64(double %56, double %32, double %60)
%62 = add nsw i32 %33, 6
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %63
%65 = load double, double* %64
%66 = tail call double @llvm.fmuladd.f64(double %61, double %32, double %65)
%67 = add nsw i32 %33, 7
%68 = sext i32 %67 to i64
%69 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %68
%70 = load double, double* %69
%71 = tail call double @llvm.fmuladd.f64(double %66, double %32, double %70)
%72 = add nsw i32 %33, 8
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %73
%75 = load double, double* %74
%76 = tail call double @llvm.fmuladd.f64(double %71, double %32, double %75)
%77 = add nsw i32 %33, 9
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %78
%80 = load double, double* %79
%81 = tail call double @llvm.fmuladd.f64(double %76, double %32, double %80)
%82 = add nsw i32 %33, 10
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %83
%85 = load double, double* %84
%86 = tail call double @llvm.fmuladd.f64(double %81, double %32, double %85)
%87 = add nsw i32 %33, 11
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %88
%90 = load double, double* %89
%91 = tail call double @llvm.fmuladd.f64(double %86, double %32, double %90)
%92 = add nsw i32 %33, 12
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %93
%95 = load double, double* %94
%96 = tail call double @llvm.fmuladd.f64(double %91, double %32, double %95)
%97 = add nsw i32 %33, 13
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds [112 x double], [112 x double]* @bessel_Y1.b, i64 0, i64 %98
%100 = load double, double* %99
%101 = tail call double @llvm.fmuladd.f64(double %96, double %32, double %100)
%102 = fmul double %26, %101
br label %254
103: ; preds = %23
%104 = fcmp olt double %0, 1.250000e+01
br i1 %104, label %105, label %180
105: ; preds = %103
%106 = fptosi double %0 to i32
%107 = sitofp i32 %106 to double
%108 = fadd double %107, 5.000000e-01
%109 = fsub double %0, %108
%110 = mul i32 %106, 14
%111 = add i32 %110, -56
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %112
%114 = load double, double* %113
%115 = add i32 %110, -55
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %116
%118 = load double, double* %117
%119 = tail call double @llvm.fmuladd.f64(double %114, double %109, double %118)
%120 = add i32 %110, -54
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %121
%123 = load double, double* %122
%124 = tail call double @llvm.fmuladd.f64(double %119, double %109, double %123)
%125 = add i32 %110, -53
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %126
%128 = load double, double* %127
%129 = tail call double @llvm.fmuladd.f64(double %124, double %109, double %128)
%130 = add i32 %110, -52
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %131
%133 = load double, double* %132
%134 = tail call double @llvm.fmuladd.f64(double %129, double %109, double %133)
%135 = add i32 %110, -51
%136 = sext i32 %135 to i64
%137 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %136
%138 = load double, double* %137
%139 = tail call double @llvm.fmuladd.f64(double %134, double %109, double %138)
%140 = add i32 %110, -50
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %141
%143 = load double, double* %142
%144 = tail call double @llvm.fmuladd.f64(double %139, double %109, double %143)
%145 = add i32 %110, -49
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %146
%148 = load double, double* %147
%149 = tail call double @llvm.fmuladd.f64(double %144, double %109, double %148)
%150 = add i32 %110, -48
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %151
%153 = load double, double* %152
%154 = tail call double @llvm.fmuladd.f64(double %149, double %109, double %153)
%155 = add i32 %110, -47
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %156
%158 = load double, double* %157
%159 = tail call double @llvm.fmuladd.f64(double %154, double %109, double %158)
%160 = add i32 %110, -46
%161 = sext i32 %160 to i64
%162 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %161
%163 = load double, double* %162
%164 = tail call double @llvm.fmuladd.f64(double %159, double %109, double %163)
%165 = add i32 %110, -45
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %166
%168 = load double, double* %167
%169 = tail call double @llvm.fmuladd.f64(double %164, double %109, double %168)
%170 = add i32 %110, -44
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %171
%173 = load double, double* %172
%174 = tail call double @llvm.fmuladd.f64(double %169, double %109, double %173)
%175 = add i32 %110, -43
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds [126 x double], [126 x double]* @bessel_Y1.c, i64 0, i64 %176
%178 = load double, double* %177
%179 = tail call double @llvm.fmuladd.f64(double %174, double %109, double %178)
br label %254
180: ; preds = %103
%181 = fdiv double 2.400000e+01, %0
%182 = fmul double %181, %181
%183 = fptosi double %182 to i32
%184 = mul nsw i32 %183, 13
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %185
%187 = load double, double* %186
%188 = add nsw i32 %184, 1
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %189
%191 = load double, double* %190
%192 = tail call double @llvm.fmuladd.f64(double %187, double %182, double %191)
%193 = add nsw i32 %184, 2
%194 = sext i32 %193 to i64
%195 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %194
%196 = load double, double* %195
%197 = tail call double @llvm.fmuladd.f64(double %192, double %182, double %196)
%198 = add nsw i32 %184, 3
%199 = sext i32 %198 to i64
%200 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %199
%201 = load double, double* %200
%202 = tail call double @llvm.fmuladd.f64(double %197, double %182, double %201)
%203 = add nsw i32 %184, 4
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %204
%206 = load double, double* %205
%207 = tail call double @llvm.fmuladd.f64(double %202, double %182, double %206)
%208 = add nsw i32 %184, 5
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %209
%211 = load double, double* %210
%212 = tail call double @llvm.fmuladd.f64(double %207, double %182, double %211)
%213 = add nsw i32 %184, 6
%214 = sext i32 %213 to i64
%215 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %214
%216 = load double, double* %215
%217 = tail call double @llvm.fmuladd.f64(double %212, double %182, double %216)
%218 = tail call double @sqrt(double %181)
%219 = fmul double %217, %218
%220 = add nsw i32 %184, 7
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %221
%223 = load double, double* %222
%224 = add nsw i32 %184, 8
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %225
%227 = load double, double* %226
%228 = tail call double @llvm.fmuladd.f64(double %223, double %182, double %227)
%229 = add nsw i32 %184, 9
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %230
%232 = load double, double* %231
%233 = tail call double @llvm.fmuladd.f64(double %228, double %182, double %232)
%234 = add nsw i32 %184, 10
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %235
%237 = load double, double* %236
%238 = tail call double @llvm.fmuladd.f64(double %233, double %182, double %237)
%239 = add nsw i32 %184, 11
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %240
%242 = load double, double* %241
%243 = tail call double @llvm.fmuladd.f64(double %238, double %182, double %242)
%244 = add nsw i32 %184, 12
%245 = sext i32 %244 to i64
%246 = getelementptr inbounds [52 x double], [52 x double]* @bessel_Y1.d, i64 0, i64 %245
%247 = load double, double* %246
%248 = tail call double @llvm.fmuladd.f64(double %243, double %182, double %247)
%249 = tail call double @llvm.fmuladd.f64(double %248, double %181, double 0xBFE921FB54442D18)
%250 = fadd double %249, %0
%251 = tail call double @cos(double %250)
%252 = fneg double %251
%253 = fmul double %219, %252
br label %254
254: ; preds = %25, %180, %105, %3
%255 = phi double [ %22, %3 ], [ %102, %25 ], [ %179, %105 ], [ %253, %180 ]
ret double %255
}