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

  double x2, y, f, g, ci8;
  double em_const = 0.577215664901532861e0;

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

    ci8=em_const+log(x)+x2*(-0.25e0+x2*(7.51851524438898291e-3+x2*(-1.27528342240267686e-4
            +x2*(1.05297363846239184e-6+x2*(-4.68889508144848019e-9+x2*(1.06480802891189243e-11
            +x2*(-9.93728488857585407e-15)))))))/ (1.+x2*(1.1592605689110735e-2+
            x2*(6.72126800814254432e-5+x2*(2.55533277086129636e-7+x2*(6.97071295760958946e-10+
            x2*(1.38536352772778619e-12+x2*(1.89106054713059759e-15+x2*(1.39759616731376855e-18))))))));

    *Ci=ci8;
  }
  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))))))))));
    *Ci=f*sin(x)-g*cos(x);
  }
  return _SUCCESS_;
}

// Assembly:
pushq %rbx
subq $0x40, %rsp
movq %rdi, %rbx
movapd 0xc03f0(%rip), %xmm2    # 0xf1240
andpd %xmm0, %xmm2
movsd 0xc35cc(%rip), %xmm1    # 0xf4428
ucomisd %xmm2, %xmm1
movapd %xmm0, %xmm1
mulsd %xmm0, %xmm1
jae 0x310bf
movsd 0xc03ea(%rip), %xmm2    # 0xf1260
movapd %xmm2, %xmm3
divsd %xmm1, %xmm3
movsd %xmm3, 0x20(%rsp)
movsd 0xc440c(%rip), %xmm1    # 0xf5298
mulsd %xmm3, %xmm1
addsd 0xc4408(%rip), %xmm1    # 0xf52a0
mulsd %xmm3, %xmm1
addsd 0xc4404(%rip), %xmm1    # 0xf52a8
mulsd %xmm3, %xmm1
addsd 0xc4400(%rip), %xmm1    # 0xf52b0
mulsd %xmm3, %xmm1
addsd 0xc43fc(%rip), %xmm1    # 0xf52b8
mulsd %xmm3, %xmm1
addsd 0xc43f8(%rip), %xmm1    # 0xf52c0
mulsd %xmm3, %xmm1
addsd 0xc43f4(%rip), %xmm1    # 0xf52c8
mulsd %xmm3, %xmm1
addsd 0xc43f0(%rip), %xmm1    # 0xf52d0
mulsd %xmm3, %xmm1
addsd 0xc43ec(%rip), %xmm1    # 0xf52d8
mulsd %xmm3, %xmm1
addsd 0xc43e8(%rip), %xmm1    # 0xf52e0
movapd %xmm1, %xmm4
movsd 0xc43e4(%rip), %xmm1    # 0xf52e8
mulsd %xmm3, %xmm1
addsd 0xc43e0(%rip), %xmm1    # 0xf52f0
mulsd %xmm3, %xmm1
addsd 0xc43dc(%rip), %xmm1    # 0xf52f8
mulsd %xmm3, %xmm1
addsd 0xc43d8(%rip), %xmm1    # 0xf5300
mulsd %xmm3, %xmm1
addsd 0xc43d4(%rip), %xmm1    # 0xf5308
mulsd %xmm3, %xmm1
addsd 0xc43d0(%rip), %xmm1    # 0xf5310
mulsd %xmm3, %xmm1
addsd 0xc43cc(%rip), %xmm1    # 0xf5318
mulsd %xmm3, %xmm1
addsd 0xc43c8(%rip), %xmm1    # 0xf5320
mulsd %xmm3, %xmm1
addsd 0xc43c4(%rip), %xmm1    # 0xf5328
movsd 0xc43c4(%rip), %xmm5    # 0xf5330
mulsd %xmm3, %xmm5
addsd 0xc43c0(%rip), %xmm5    # 0xf5338
mulsd %xmm3, %xmm5
addsd 0xc43bc(%rip), %xmm5    # 0xf5340
mulsd %xmm3, %xmm5
addsd 0xc43b8(%rip), %xmm5    # 0xf5348
mulsd %xmm3, %xmm5
addsd 0xc43b4(%rip), %xmm5    # 0xf5350
mulsd %xmm3, %xmm5
addsd 0xc43b0(%rip), %xmm5    # 0xf5358
mulsd %xmm3, %xmm5
addsd 0xc43ac(%rip), %xmm5    # 0xf5360
mulsd %xmm3, %xmm4
mulsd %xmm3, %xmm5
addsd 0xc43a4(%rip), %xmm5    # 0xf5368
addsd %xmm2, %xmm4
mulsd %xmm3, %xmm5
addsd 0xc439c(%rip), %xmm5    # 0xf5370
mulsd %xmm3, %xmm1
mulsd %xmm3, %xmm5
addsd 0xc4394(%rip), %xmm5    # 0xf5378
movsd 0xc4394(%rip), %xmm6    # 0xf5380
mulsd %xmm3, %xmm6
addsd 0xc4390(%rip), %xmm6    # 0xf5388
addsd %xmm2, %xmm1
mulsd %xmm3, %xmm6
addsd 0xc4388(%rip), %xmm6    # 0xf5390
mulsd %xmm0, %xmm1
mulsd %xmm3, %xmm6
addsd 0xc4380(%rip), %xmm6    # 0xf5398
divsd %xmm1, %xmm4
movsd %xmm4, (%rsp)
mulsd %xmm3, %xmm6
addsd 0xc4373(%rip), %xmm6    # 0xf53a0
mulsd %xmm3, %xmm5
mulsd %xmm3, %xmm6
addsd 0xc436b(%rip), %xmm6    # 0xf53a8
addsd %xmm2, %xmm5
movsd %xmm5, 0x28(%rsp)
mulsd %xmm3, %xmm6
addsd 0xc435d(%rip), %xmm6    # 0xf53b0
mulsd %xmm3, %xmm6
addsd 0xc4359(%rip), %xmm6    # 0xf53b8
mulsd %xmm3, %xmm6
addsd 0xc4355(%rip), %xmm6    # 0xf53c0
mulsd %xmm3, %xmm6
addsd %xmm2, %xmm6
movsd %xmm6, 0x18(%rsp)
movapd %xmm0, 0x30(%rsp)
callq 0x80a0
movsd %xmm0, 0x10(%rsp)
movapd 0x30(%rsp), %xmm0
callq 0x86a0
movsd 0x10(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
mulsd 0x20(%rsp), %xmm1
divsd 0x18(%rsp), %xmm1
mulsd %xmm0, %xmm1
mulsd (%rsp), %xmm2
subsd %xmm1, %xmm2
jmp 0x3118e
movapd %xmm1, (%rsp)
callq 0x82c0
addsd 0xc4157(%rip), %xmm0    # 0xf5228
movsd 0xc4157(%rip), %xmm2    # 0xf5230
movapd (%rsp), %xmm3
mulsd %xmm3, %xmm2
addsd 0xc414e(%rip), %xmm2    # 0xf5238
mulsd %xmm3, %xmm2
addsd 0xc414a(%rip), %xmm2    # 0xf5240
mulsd %xmm3, %xmm2
addsd 0xc4146(%rip), %xmm2    # 0xf5248
mulsd %xmm3, %xmm2
addsd 0xc4142(%rip), %xmm2    # 0xf5250
mulsd %xmm3, %xmm2
addsd 0xc413e(%rip), %xmm2    # 0xf5258
mulsd %xmm3, %xmm2
addsd 0xc0162(%rip), %xmm2    # 0xf1288
movsd 0xc4132(%rip), %xmm1    # 0xf5260
mulsd %xmm3, %xmm1
addsd 0xc412e(%rip), %xmm1    # 0xf5268
mulsd %xmm3, %xmm1
addsd 0xc412a(%rip), %xmm1    # 0xf5270
mulsd %xmm3, %xmm1
addsd 0xc4126(%rip), %xmm1    # 0xf5278
mulsd %xmm3, %xmm1
addsd 0xc4122(%rip), %xmm1    # 0xf5280
mulsd %xmm3, %xmm2
mulsd %xmm3, %xmm1
addsd 0xc411a(%rip), %xmm1    # 0xf5288
mulsd %xmm3, %xmm1
addsd 0xc4116(%rip), %xmm1    # 0xf5290
mulsd %xmm3, %xmm1
addsd 0xc00da(%rip), %xmm1    # 0xf1260
divsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd %xmm2, (%rbx)
xorl %eax, %eax
addq $0x40, %rsp
popq %rbx
retq