// File: /workspace/github_c_makefile_star2_O3/PoulinV[P]AxiCLASS/build/../tools/trigonometric_integrals.c
// Function: sine_integral
int sine_integral(
                  double x,
                  double *Si,
                  ErrorMsg error_message
                  ){

  double x2, y, f, g, si8;
  double pi8=3.1415926535897932384626433;

  if (fabs(x)<=4.){
    x2=x*x;

    si8 = x*(1.e0+x2*(-4.54393409816329991e-2+x2*(1.15457225751016682e-3
            +x2*(-1.41018536821330254e-5+x2*(9.43280809438713025e-8+x2*(-3.53201978997168357e-10
            +x2*(7.08240282274875911e-13+x2*(-6.05338212010422477e-16))))))))/
            (1.+x2*(1.01162145739225565e-2 +x2*(4.99175116169755106e-5+
            x2*(1.55654986308745614e-7+x2*(3.28067571055789734e-10+x2*(4.5049097575386581e-13
            +x2*(3.21107051193712168e-16)))))));

    *Si=si8;
  }
  else {
    y=1./(x*x);

    f = (1.e0 + y*(7.44437068161936700618e2 + y*(1.96396372895146869801e5 +
            y*(2.37750310125431834034e7 +y*(1.43073403821274636888e9 + y*(4.33736238870432522765e10
            + y*(6.40533830574022022911e11 + y*(4.20968180571076940208e12 +
            y*(1.00795182980368574617e13 + y*(4.94816688199951963482e12 +
            y*(-4.94701168645415959931e11)))))))))))/ (x*(1. +y*(7.46437068161927678031e2 +
            y*(1.97865247031583951450e5 +y*(2.41535670165126845144e7 +
            y*(1.47478952192985464958e9 + y*(4.58595115847765779830e10 +
            y*(7.08501308149515401563e11 + y*(5.06084464593475076774e12 +
            y*(1.43468549171581016479e13 + y*(1.11535493509914254097e13)))))))))));


    g = y*(1.e0 + y*(8.1359520115168615e2 + y*(2.35239181626478200e5 +
            y*(3.12557570795778731e7 + y*(2.06297595146763354e9 + y*(6.83052205423625007e10 +
            y*(1.09049528450362786e12 + y*(7.57664583257834349e12 +y*(1.81004487464664575e13 +
            y*(6.43291613143049485e12 +y*(-1.36517137670871689e12)))))))))))/
            (1. + y*(8.19595201151451564e2 +y*(2.40036752835578777e5 + y*(3.26026661647090822e7
            + y*(2.23355543278099360e9 + y*(7.87465017341829930e10 + y*(1.39866710696414565e12
            + y*(1.17164723371736605e13 + y*(4.01839087307656620e13 +y*(3.99653257887490811e13))))))))));

    *Si=pi8/2.-f*cos(x)-g*sin(x);
  }
  return _SUCCESS_;
}

// Assembly:
pushq %rbx
subq $0x30, %rsp
movq %rdi, %rbx
movapd 0xbd1d2(%rip), %xmm2    # 0xee240
andpd %xmm0, %xmm2
movsd 0xc03be(%rip), %xmm1    # 0xf1438
ucomisd %xmm2, %xmm1
movapd %xmm0, %xmm1
mulsd %xmm0, %xmm1
jae 0x312e7
movsd 0xbd1cc(%rip), %xmm2    # 0xee260
movapd %xmm2, %xmm3
divsd %xmm1, %xmm3
movsd %xmm3, 0x10(%rsp)
movsd 0xc11fe(%rip), %xmm1    # 0xf22a8
mulsd %xmm3, %xmm1
addsd 0xc11fa(%rip), %xmm1    # 0xf22b0
mulsd %xmm3, %xmm1
addsd 0xc11f6(%rip), %xmm1    # 0xf22b8
mulsd %xmm3, %xmm1
addsd 0xc11f2(%rip), %xmm1    # 0xf22c0
mulsd %xmm3, %xmm1
addsd 0xc11ee(%rip), %xmm1    # 0xf22c8
mulsd %xmm3, %xmm1
addsd 0xc11ea(%rip), %xmm1    # 0xf22d0
mulsd %xmm3, %xmm1
addsd 0xc11e6(%rip), %xmm1    # 0xf22d8
mulsd %xmm3, %xmm1
addsd 0xc11e2(%rip), %xmm1    # 0xf22e0
mulsd %xmm3, %xmm1
addsd 0xc11de(%rip), %xmm1    # 0xf22e8
mulsd %xmm3, %xmm1
addsd 0xc11da(%rip), %xmm1    # 0xf22f0
movapd %xmm1, %xmm4
movsd 0xc11d6(%rip), %xmm1    # 0xf22f8
mulsd %xmm3, %xmm1
addsd 0xc11d2(%rip), %xmm1    # 0xf2300
mulsd %xmm3, %xmm1
addsd 0xc11ce(%rip), %xmm1    # 0xf2308
mulsd %xmm3, %xmm1
addsd 0xc11ca(%rip), %xmm1    # 0xf2310
mulsd %xmm3, %xmm1
addsd 0xc11c6(%rip), %xmm1    # 0xf2318
mulsd %xmm3, %xmm1
addsd 0xc11c2(%rip), %xmm1    # 0xf2320
mulsd %xmm3, %xmm1
addsd 0xc11be(%rip), %xmm1    # 0xf2328
mulsd %xmm3, %xmm1
addsd 0xc11ba(%rip), %xmm1    # 0xf2330
mulsd %xmm3, %xmm1
addsd 0xc11b6(%rip), %xmm1    # 0xf2338
movsd 0xc11b6(%rip), %xmm5    # 0xf2340
mulsd %xmm3, %xmm5
addsd 0xc11b2(%rip), %xmm5    # 0xf2348
mulsd %xmm3, %xmm5
addsd 0xc11ae(%rip), %xmm5    # 0xf2350
mulsd %xmm3, %xmm5
addsd 0xc11aa(%rip), %xmm5    # 0xf2358
mulsd %xmm3, %xmm5
addsd 0xc11a6(%rip), %xmm5    # 0xf2360
mulsd %xmm3, %xmm5
addsd 0xc11a2(%rip), %xmm5    # 0xf2368
mulsd %xmm3, %xmm5
addsd 0xc119e(%rip), %xmm5    # 0xf2370
mulsd %xmm3, %xmm4
mulsd %xmm3, %xmm5
addsd 0xc1196(%rip), %xmm5    # 0xf2378
addsd %xmm2, %xmm4
mulsd %xmm3, %xmm5
addsd 0xc118e(%rip), %xmm5    # 0xf2380
mulsd %xmm3, %xmm1
mulsd %xmm3, %xmm5
addsd 0xc1186(%rip), %xmm5    # 0xf2388
movsd 0xc1186(%rip), %xmm6    # 0xf2390
mulsd %xmm3, %xmm6
addsd 0xc1182(%rip), %xmm6    # 0xf2398
addsd %xmm2, %xmm1
mulsd %xmm3, %xmm6
addsd 0xc117a(%rip), %xmm6    # 0xf23a0
mulsd %xmm0, %xmm1
mulsd %xmm3, %xmm6
addsd 0xc1172(%rip), %xmm6    # 0xf23a8
divsd %xmm1, %xmm4
movsd %xmm4, (%rsp)
mulsd %xmm3, %xmm6
addsd 0xc1165(%rip), %xmm6    # 0xf23b0
mulsd %xmm3, %xmm5
mulsd %xmm3, %xmm6
addsd 0xc115d(%rip), %xmm6    # 0xf23b8
addsd %xmm2, %xmm5
movsd %xmm5, 0x18(%rsp)
mulsd %xmm3, %xmm6
addsd 0xc114f(%rip), %xmm6    # 0xf23c0
mulsd %xmm3, %xmm6
addsd 0xc114b(%rip), %xmm6    # 0xf23c8
mulsd %xmm3, %xmm6
addsd 0xc1147(%rip), %xmm6    # 0xf23d0
mulsd %xmm3, %xmm6
addsd %xmm2, %xmm6
movsd %xmm6, 0x8(%rsp)
movapd %xmm0, 0x20(%rsp)
callq 0x86a0
mulsd (%rsp), %xmm0
movsd 0xc01e1(%rip), %xmm1    # 0xf1490
subsd %xmm0, %xmm1
movsd %xmm1, (%rsp)
movapd 0x20(%rsp), %xmm0
callq 0x80a0
movsd (%rsp), %xmm4
movsd 0x18(%rsp), %xmm1
mulsd 0x10(%rsp), %xmm1
divsd 0x8(%rsp), %xmm1
mulsd %xmm0, %xmm1
subsd %xmm1, %xmm4
jmp 0x3139b
movsd 0xc10e9(%rip), %xmm4    # 0xf23d8
mulsd %xmm1, %xmm4
addsd 0xc10e5(%rip), %xmm4    # 0xf23e0
mulsd %xmm1, %xmm4
addsd 0xc10e1(%rip), %xmm4    # 0xf23e8
mulsd %xmm1, %xmm4
addsd 0xc10dd(%rip), %xmm4    # 0xf23f0
mulsd %xmm1, %xmm4
addsd 0xc10d9(%rip), %xmm4    # 0xf23f8
mulsd %xmm1, %xmm4
addsd 0xc10d5(%rip), %xmm4    # 0xf2400
mulsd %xmm1, %xmm4
addsd 0xc10d1(%rip), %xmm4    # 0xf2408
movsd 0xc10d1(%rip), %xmm3    # 0xf2410
mulsd %xmm1, %xmm3
addsd 0xc10cd(%rip), %xmm3    # 0xf2418
mulsd %xmm1, %xmm3
addsd 0xc10c9(%rip), %xmm3    # 0xf2420
mulsd %xmm1, %xmm4
mulsd %xmm1, %xmm3
addsd 0xc10c1(%rip), %xmm3    # 0xf2428
movsd 0xbcef1(%rip), %xmm2    # 0xee260
mulsd %xmm1, %xmm3
addsd 0xc10b5(%rip), %xmm3    # 0xf2430
addsd %xmm2, %xmm4
mulsd %xmm1, %xmm3
addsd 0xc10ad(%rip), %xmm3    # 0xf2438
mulsd %xmm0, %xmm4
mulsd %xmm1, %xmm3
addsd %xmm2, %xmm3
divsd %xmm3, %xmm4
movsd %xmm4, (%rbx)
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
retq
nop