// File: /workspace/github_c_makefile_star2_O0/PoulinV[P]AxiCLASS/build/../source/transfer.c
// Function: transfer_selection_times
int transfer_selection_times(
                             struct precision * ppr,
                             struct background * pba,
                             struct perturbations * ppt,
                             struct transfer * ptr,
                             int bin,
                             double * tau_min,
                             double * tau_mean,
                             double * tau_max) {

  /* a value of redshift */
  double z=0.;

  /* lower edge of time interval for this bin */
  /* the few lines below should be consistent with their counterpart in input.c */
  if (ppt->selection==gaussian) {
    z = ppt->selection_mean[bin]+ppt->selection_width[bin]*ppr->selection_cut_at_sigma;
  }
  if (ppt->selection==tophat) {
    z = ppt->selection_mean[bin]+(1.+ppr->selection_cut_at_sigma*ppr->selection_tophat_edge)*ppt->selection_width[bin];
  }
  if (ppt->selection==dirac) {
    z = ppt->selection_mean[bin];
  }

  class_call(background_tau_of_z(pba,
                                 z,
                                 tau_min),
             pba->error_message,
             ppt->error_message);

  /* higher edge of time interval for this bin */

  if (ppt->selection==gaussian) {
    z = MAX(ppt->selection_mean[bin]-ppt->selection_width[bin]*ppr->selection_cut_at_sigma,0.);
  }
  if (ppt->selection==tophat) {
    z = MAX(ppt->selection_mean[bin]-(1.+ppr->selection_cut_at_sigma*ppr->selection_tophat_edge)*ppt->selection_width[bin],0.);
  }
  if (ppt->selection==dirac) {
    z = ppt->selection_mean[bin];
  }

  class_call(background_tau_of_z(pba,
                                 z,
                                 tau_max),
             pba->error_message,
             ppt->error_message);

  /* central value of time interval for this bin */

  z = MAX(ppt->selection_mean[bin],0.);

  class_call(background_tau_of_z(pba,
                                 z,
                                 tau_mean),
             pba->error_message,
             ppt->error_message);

  return _SUCCESS_;

}

// Assembly:
subq $0x1868, %rsp           # imm = 0x1868
movq 0x1878(%rsp), %rax
movq 0x1870(%rsp), %rax
movq %rdi, 0x1858(%rsp)
movq %rsi, 0x1850(%rsp)
movq %rdx, 0x1848(%rsp)
movq %rcx, 0x1840(%rsp)
movl %r8d, 0x183c(%rsp)
movq %r9, 0x1830(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1848(%rsp), %rax
cmpl $0x0, 0x68(%rax)
jne 0x13ca61
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm1
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x390(%rax,%rcx,8), %xmm0
movq 0x1858(%rsp), %rax
movsd 0x808(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1848(%rsp), %rax
cmpl $0x1, 0x68(%rax)
jne 0x13cadf
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm1
movq 0x1858(%rsp), %rax
movsd 0x808(%rax), %xmm0
movq 0x1858(%rsp), %rax
movsd 0x828(%rax), %xmm2
mulsd %xmm2, %xmm0
movsd 0x95797(%rip), %xmm2    # 0x1d2248
addsd %xmm2, %xmm0
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x390(%rax,%rcx,8), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1848(%rsp), %rax
cmpl $0x2, 0x68(%rax)
jne 0x13cb0c
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1850(%rsp), %rdi
movsd 0x1828(%rsp), %xmm0
movq 0x1830(%rsp), %rsi
callq 0x9ee00
cmpl $0x1, %eax
jne 0x13cb9c
leaq 0x1020(%rsp), %rdi
movq 0x1850(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x9588b(%rip), %rsi     # 0x1d23d8
leaq 0xc74b8(%rip), %rdx     # 0x20400c
movb $0x0, %al
callq 0x5b9c0
movq 0x1848(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x1020(%rsp), %r8
leaq 0x954bb(%rip), %rsi     # 0x1d2034
leaq 0xc74b1(%rip), %rdx     # 0x204031
movl $0xbec, %ecx            # imm = 0xBEC
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x1864(%rsp)
jmp 0x13cf6d
movq 0x1848(%rsp), %rax
cmpl $0x0, 0x68(%rax)
jne 0x13cc93
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm0
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x390(%rax,%rcx,8), %xmm1
movq 0x1858(%rsp), %rax
movsd 0x808(%rax), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x13cc20
xorps %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
jmp 0x13cc84
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm1
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x390(%rax,%rcx,8), %xmm0
movq 0x1858(%rsp), %rax
movsd 0x808(%rax), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1848(%rsp), %rax
cmpl $0x1, 0x68(%rax)
jne 0x13cdcd
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm0
movq 0x1858(%rsp), %rax
movsd 0x808(%rax), %xmm1
movq 0x1858(%rsp), %rax
movsd 0x828(%rax), %xmm2
mulsd %xmm2, %xmm1
movsd 0x95561(%rip), %xmm2    # 0x1d2248
addsd %xmm2, %xmm1
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x390(%rax,%rcx,8), %xmm2
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
xorps %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x13cd3a
xorps %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
jmp 0x13cdbe
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm1
movq 0x1858(%rsp), %rax
movsd 0x808(%rax), %xmm0
movq 0x1858(%rsp), %rax
movsd 0x828(%rax), %xmm2
mulsd %xmm2, %xmm0
movsd 0x954cc(%rip), %xmm2    # 0x1d2248
addsd %xmm2, %xmm0
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x390(%rax,%rcx,8), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1848(%rsp), %rax
cmpl $0x2, 0x68(%rax)
jne 0x13cdfa
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1850(%rsp), %rdi
movsd 0x1828(%rsp), %xmm0
movq 0x1878(%rsp), %rsi
callq 0x9ee00
cmpl $0x1, %eax
jne 0x13ce8a
leaq 0x820(%rsp), %rdi
movq 0x1850(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x9559d(%rip), %rsi     # 0x1d23d8
leaq 0xc7208(%rip), %rdx     # 0x20404a
movb $0x0, %al
callq 0x5b9c0
movq 0x1848(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x820(%rsp), %r8
leaq 0x951cd(%rip), %rsi     # 0x1d2034
leaq 0xc71c3(%rip), %rdx     # 0x204031
movl $0xbfe, %ecx            # imm = 0xBFE
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x1864(%rsp)
jmp 0x13cf6d
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
xorps %xmm0, %xmm0
ucomisd 0x70(%rax,%rcx,8), %xmm0
jbe 0x13ceb0
xorps %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
jmp 0x13cecc
movq 0x1848(%rsp), %rax
movslq 0x183c(%rsp), %rcx
movsd 0x70(%rax,%rcx,8), %xmm0
movsd %xmm0, 0x8(%rsp)
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x1828(%rsp)
movq 0x1850(%rsp), %rdi
movsd 0x1828(%rsp), %xmm0
movq 0x1870(%rsp), %rsi
callq 0x9ee00
cmpl $0x1, %eax
jne 0x13cf62
leaq 0x20(%rsp), %rdi
movq 0x1850(%rsp), %rcx
addq $0xd1c, %rcx            # imm = 0xD1C
leaq 0x954bf(%rip), %rsi     # 0x1d23d8
leaq 0xc714f(%rip), %rdx     # 0x20406f
movb $0x0, %al
callq 0x5b9c0
movq 0x1848(%rsp), %rdi
addq $0x6c8a, %rdi           # imm = 0x6C8A
leaq 0x20(%rsp), %r8
leaq 0x950f2(%rip), %rsi     # 0x1d2034
leaq 0xc70e8(%rip), %rdx     # 0x204031
movl $0xc08, %ecx            # imm = 0xC08
movb $0x0, %al
callq 0x5b9c0
movl $0x1, 0x1864(%rsp)
jmp 0x13cf6d
movl $0x0, 0x1864(%rsp)
movl 0x1864(%rsp), %eax
addq $0x1868, %rsp           # imm = 0x1868
retq
nopl (%rax)