// File: /workspace/github_cpp_makefile_star2_O3/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, 0x10(%rsp)
movsd %xmm2, 0x8(%rsp)
movsd %xmm1, 0x18(%rsp)
movsd %xmm0, 0x20(%rsp)
movl %esi, %r14d
movq %rdi, %rbx
addq $0x600, %rdi            # imm = 0x600
movl $0x200, %edx            # imm = 0x200
xorl %esi, %esi
callq 0x401088
movsd 0x20(%rsp), %xmm3
movsd 0x8(%rsp), %xmm1
movabsq $0x7ff0000000000000, %rax # imm = 0x7FF0000000000000
movq %rax, 0x3f8(%rbx)
movsd 0x10(%rsp), %xmm0
movsd %xmm0, 0x5f8(%rbx)
movl $0x3e, %ecx
ucomisd %xmm3, %xmm1
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
jbe 0x40f855
xorl %ecx, %ecx
movsd 0x1ba963(%rip), %xmm0   # 0x5ca180
movsd 0x18(%rsp), %xmm2
movq %rcx, %rdx
movsd %xmm1, 0x3f0(%rbx,%rcx,8)
movsd %xmm2, 0x5f0(%rbx,%rcx,8)
mulsd %xmm0, %xmm1
decq %rcx
cmpq $-0x3d, %rdx
je 0x40f84b
ucomisd %xmm3, %xmm1
ja 0x40f823
cmpq $-0x3e, %rcx
je 0x40f882
addq $0x3e, %rcx
decq %rcx
movsd 0x1ba920(%rip), %xmm0   # 0x5ca180
movq %rcx, %rdx
movsd %xmm1, 0x208(%rbx,%rcx,8)
movq %rax, 0x408(%rbx,%rcx,8)
mulsd %xmm0, %xmm1
decq %rdx
testl %ecx, %ecx
movq %rdx, %rcx
jne 0x40f863
leaq 0x200(%rbx), %rcx
movq %rcx, 0x8(%rsp)
movsd %xmm1, 0x200(%rbx)
movl %r14d, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %rcx, %xmm0
movsd %xmm0, 0x10(%rsp)
movq %rax, 0x400(%rbx)
xorl %ebp, %ebp
movq $0x655aa0, %r14         # imm = 0x655AA0
leaq 0x1bacba(%rip), %r15    # 0x5ca578
leaq 0x1bacda(%rip), %r12    # 0x5ca59f
leaq 0x1cb49e(%rip), %r13    # 0x5dad6a
movsd 0x408(%rbx,%rbp,8), %xmm0
addsd 0x1b973b(%rip), %xmm0   # 0x5c9018
ucomisd 0x10(%rsp), %xmm0
jne 0x40f953
jp 0x40f953
movl $0x26, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x4b0120
movsd 0x408(%rbx,%rbp,8), %xmm0
movq %r14, %rdi
callq 0x4b1380
movsd 0x408(%rbx,%rbp,8), %xmm0
addsd 0x1ba86f(%rip), %xmm0   # 0x5ca188
movsd %xmm0, 0x408(%rbx,%rbp,8)
movl $0x4, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x4b0120
movsd 0x408(%rbx,%rbp,8), %xmm0
movq %r14, %rdi
callq 0x4b1380
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x4b0120
incq %rbp
cmpq $0x3f, %rbp
jne 0x40f8cc
movl $0x40, %edx
movsd 0x1ba7cb(%rip), %xmm0   # 0x5ca138
movq 0x8(%rsp), %rdi
movq %rdi, %rcx
movq %rdx, %rax
shrq %rax
ucomisd (%rcx,%rax,8), %xmm0
jbe 0x40f990
leaq (%rcx,%rax,8), %rcx
addq $0x8, %rcx
notq %rax
addq %rdx, %rax
movq %rax, %rdx
testq %rax, %rax
jg 0x40f978
movabsq $0x7fffffff8, %rax      # imm = 0x7FFFFFFF8
subq %rdi, %rcx
testq %rax, %rcx
jne 0x40fa79
movl $0x40, %esi
xorpd %xmm0, %xmm0
movq %rdi, %rcx
movq %rsi, %rdx
shrq %rdx
ucomisd (%rcx,%rdx,8), %xmm0
jbe 0x40f9d5
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
notq %rdx
addq %rsi, %rdx
movq %rdx, %rsi
testq %rdx, %rdx
jg 0x40f9bd
subq %rdi, %rcx
testq %rax, %rcx
jne 0x40fa98
movl $0x40, %esi
movsd 0x1ba79a(%rip), %xmm0   # 0x5ca190
movq %rdi, %rcx
movq %rsi, %rdx
shrq %rdx
ucomisd (%rcx,%rdx,8), %xmm0
jbe 0x40fa14
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
notq %rdx
addq %rsi, %rdx
movq %rdx, %rsi
testq %rdx, %rdx
jg 0x40f9fc
subq %rdi, %rcx
testq %rax, %rcx
jne 0x40fab7
movl $0x40, %esi
movsd 0x1ba763(%rip), %xmm0   # 0x5ca198
movq %rdi, %rcx
movq %rsi, %rdx
shrq %rdx
ucomisd (%rcx,%rdx,8), %xmm0
jbe 0x40fa53
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
notq %rdx
addq %rsi, %rdx
movq %rdx, %rsi
testq %rdx, %rdx
jg 0x40fa3b
subq %rdi, %rcx
andq %rax, %rcx
cmpq $0x1f8, %rcx            # imm = 0x1F8
jne 0x40fad6
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1bab24(%rip), %rdi    # 0x5ca5a4
leaq 0x1bab37(%rip), %rsi    # 0x5ca5be
leaq 0x1bab42(%rip), %rcx    # 0x5ca5d0
movl $0x32, %edx
callq 0x50b050
leaq 0x1bab80(%rip), %rdi    # 0x5ca61f
leaq 0x1bab18(%rip), %rsi    # 0x5ca5be
leaq 0x1bab23(%rip), %rcx    # 0x5ca5d0
movl $0x33, %edx
callq 0x50b050
leaq 0x1bab7a(%rip), %rdi    # 0x5ca638
leaq 0x1baaf9(%rip), %rsi    # 0x5ca5be
leaq 0x1bab04(%rip), %rcx    # 0x5ca5d0
movl $0x34, %edx
callq 0x50b050
leaq 0x1bab78(%rip), %rdi    # 0x5ca655
leaq 0x1baada(%rip), %rsi    # 0x5ca5be
leaq 0x1baae5(%rip), %rcx    # 0x5ca5d0
movl $0x35, %edx
callq 0x50b050
nop