// File: /workspace/github_cpp_makefile_star2_O2/Cell-veto[P]postlhc/./adap_prober.hpp
// Function: AdaptiveProber::calib_begin(unsigned int, double, double, double, double)
void calib_begin (unsigned DIM,
        double rinner, double inner_paralpha,
        double rcut, double tail_paralpha)
    {
        binrate_.fill (0.);

        // set up radial bins
        binrad_[N_-1] = INFINITY;
        binexp_[N_-1] = tail_paralpha;
        unsigned i = N_-2;
        for (; i > 0 && rcut > rinner; --i)
        {
            binrad_[i] = rcut;
            binexp_[i] = inner_paralpha;
            rcut *= .9;
        }
        for (; i > 0; --i)
        {
            binrad_[i] = rcut;
            binexp_[i] = -1.; // const. rate
            rcut *= .9;
        }
        binrad_[0] = rcut;
        binexp_[0] = -1.;  // const. rate (not used)

        // fix bad exponents
        for (unsigned i = 1; i != N_; ++i)
        {
            double iexpon = DIM - (1.+binexp_[i]);
            if (iexpon == 0.)
            {
                std::cerr << "adap_prober: fixing singular exponent " << binexp_[i];
                binexp_[i] += .1;
                std::cerr << " -> " << binexp_[i] << "\n";
            }
        }

        assert (bin_from_radius (-1) == 0);
        assert (bin_from_radius (0) == 0);
        assert (bin_from_radius (1e-19) == 0);
        assert (bin_from_radius (1e19) == N_-1);
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movsd %xmm3, 0x18(%rsp)
movsd %xmm2, 0x10(%rsp)
movsd %xmm1, 0x8(%rsp)
movsd %xmm0, (%rsp)
movl %esi, %ebp
movq %rdi, %rbx
addq $0x600, %rdi            # imm = 0x600
leaq 0x20(%rsp), %rsi
andq $0x0, (%rsi)
callq 0x40d49c
movsd 0x8(%rsp), %xmm2
movsd 0x10(%rsp), %xmm1
movabsq $0x7ff0000000000000, %rax # imm = 0x7FF0000000000000
movq %rax, 0x3f8(%rbx)
movsd 0x18(%rsp), %xmm0
movsd %xmm0, 0x5f8(%rbx)
pushq $0x7e
popq %rax
movsd 0x1b2637(%rip), %xmm0   # 0x5bf178
cmpq $0x40, %rax
je 0x40cb7d
ucomisd (%rsp), %xmm1
jbe 0x40cb7d
movsd %xmm1, (%rbx,%rax,8)
movsd %xmm2, 0x200(%rbx,%rax,8)
mulsd %xmm0, %xmm1
decq %rax
jmp 0x40cb41
movsd %xmm1, (%rbx,%rax,8)
movq %rcx, 0x200(%rbx,%rax,8)
mulsd 0x1b25fe(%rip), %xmm1   # 0x5bf178
decq %rax
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
cmpq $0x40, %rax
jne 0x40cb65
movsd %xmm1, 0x200(%rbx)
movl %ebp, %eax
cvtsi2sd %rax, %xmm0
movsd %xmm0, (%rsp)
movq %rcx, 0x400(%rbx)
movl $0x81, %ebp
movq $0x64eaa0, %r14         # imm = 0x64EAA0
leaq 0x1b29fa(%rip), %r15    # 0x5bf5b5
leaq 0x1b2a1a(%rip), %r12    # 0x5bf5dc
leaq 0x1c3841(%rip), %r13    # 0x5d040a
cmpq $0xc0, %rbp
je 0x40cc3a
movsd (%rbx,%rbp,8), %xmm0
addsd 0x1b1439(%rip), %xmm0   # 0x5be018
ucomisd (%rsp), %xmm0
jne 0x40cc35
jp 0x40cc35
movq %r14, %rdi
movq %r15, %rsi
callq 0x4a4910
movsd (%rbx,%rbp,8), %xmm0
movq %rax, %rdi
callq 0x4a5640
movsd (%rbx,%rbp,8), %xmm0
addsd 0x1b2573(%rip), %xmm0   # 0x5bf180
movsd %xmm0, (%rbx,%rbp,8)
movq %r14, %rdi
movq %r12, %rsi
callq 0x4a4910
movsd (%rbx,%rbp,8), %xmm0
movq %rax, %rdi
callq 0x4a5640
movq %rax, %rdi
movq %r13, %rsi
callq 0x4a4910
incq %rbp
jmp 0x40cbc9
movsd 0x1b24ee(%rip), %xmm0   # 0x5bf130
movq %rbx, %rdi
callq 0x40d4b6
testl %eax, %eax
jne 0x40cc95
xorps %xmm0, %xmm0
movq %rbx, %rdi
callq 0x40d4b6
testl %eax, %eax
jne 0x40ccae
movsd 0x1b2523(%rip), %xmm0   # 0x5bf188
movq %rbx, %rdi
callq 0x40d4b6
testl %eax, %eax
jne 0x40ccc7
movsd 0x1b2517(%rip), %xmm0   # 0x5bf190
movq %rbx, %rdi
callq 0x40d4b6
cmpl $0x3f, %eax
jne 0x40cce0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1b2945(%rip), %rdi    # 0x5bf5e1
leaq 0x1b2958(%rip), %rsi    # 0x5bf5fb
leaq 0x1b2963(%rip), %rcx    # 0x5bf60d
pushq $0x32
jmp 0x40ccf7
leaq 0x1b29a7(%rip), %rdi    # 0x5bf65c
leaq 0x1b293f(%rip), %rsi    # 0x5bf5fb
leaq 0x1b294a(%rip), %rcx    # 0x5bf60d
pushq $0x33
jmp 0x40ccf7
leaq 0x1b29a7(%rip), %rdi    # 0x5bf675
leaq 0x1b2926(%rip), %rsi    # 0x5bf5fb
leaq 0x1b2931(%rip), %rcx    # 0x5bf60d
pushq $0x34
jmp 0x40ccf7
leaq 0x1b29ab(%rip), %rdi    # 0x5bf692
leaq 0x1b290d(%rip), %rsi    # 0x5bf5fb
leaq 0x1b2918(%rip), %rcx    # 0x5bf60d
pushq $0x35
popq %rdx
callq 0x4ffe80
nop