// File: /workspace/github_cpp_makefile_star2_O1/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, %eax
ucomisd %xmm3, %xmm1
jbe 0x40f84a
xorl %ecx, %ecx
movsd 0x1bb823(%rip), %xmm0   # 0x5cb040
movsd 0x18(%rsp), %xmm2
movsd %xmm1, 0x3f0(%rbx,%rcx,8)
movsd %xmm2, 0x5f0(%rbx,%rcx,8)
mulsd %xmm0, %xmm1
decl %eax
cmpq $-0x3d, %rcx
je 0x40f84a
decq %rcx
ucomisd %xmm3, %xmm1
ja 0x40f823
movabsq $-0x4010000000000000, %rcx # imm = 0xBFF0000000000000
testl %eax, %eax
je 0x40f887
movl %eax, %eax
decq %rax
movsd 0x1bb7db(%rip), %xmm0   # 0x5cb040
movq %rax, %rdx
movsd %xmm1, 0x208(%rbx,%rax,8)
movq %rcx, 0x408(%rbx,%rax,8)
mulsd %xmm0, %xmm1
decq %rdx
testl %eax, %eax
movq %rdx, %rax
jne 0x40f868
leaq 0x200(%rbx), %rax
movq %rax, 0x8(%rsp)
movsd %xmm1, 0x200(%rbx)
movl %r14d, %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd %xmm0, 0x10(%rsp)
movq %rcx, 0x400(%rbx)
xorl %ebp, %ebp
movq $0x656aa0, %r14         # imm = 0x656AA0
leaq 0x1bbbc5(%rip), %r15    # 0x5cb488
leaq 0x1bbbe5(%rip), %r12    # 0x5cb4af
leaq 0x1cc319(%rip), %r13    # 0x5dbbea
movsd 0x408(%rbx,%rbp,8), %xmm0
addsd 0x1ba736(%rip), %xmm0   # 0x5ca018
ucomisd 0x10(%rsp), %xmm0
jne 0x40f958
jp 0x40f958
movl $0x26, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x4b14d0
movsd 0x408(%rbx,%rbp,8), %xmm0
movq %r14, %rdi
callq 0x4b2730
movsd 0x408(%rbx,%rbp,8), %xmm0
addsd 0x1bb72a(%rip), %xmm0   # 0x5cb048
movsd %xmm0, 0x408(%rbx,%rbp,8)
movl $0x4, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x4b14d0
movsd 0x408(%rbx,%rbp,8), %xmm0
movq %r14, %rdi
callq 0x4b2730
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x4b14d0
incq %rbp
cmpq $0x3f, %rbp
jne 0x40f8d1
movl $0x40, %edx
movsd 0x1bb686(%rip), %xmm0   # 0x5caff8
movq 0x8(%rsp), %rdi
movq %rdi, %rcx
movq %rdx, %rax
shrq %rax
ucomisd (%rcx,%rax,8), %xmm0
jbe 0x40f995
leaq (%rcx,%rax,8), %rcx
addq $0x8, %rcx
notq %rax
addq %rdx, %rax
movq %rax, %rdx
testq %rax, %rax
jg 0x40f97d
movabsq $0x7fffffff8, %rax      # imm = 0x7FFFFFFF8
subq %rdi, %rcx
testq %rax, %rcx
jne 0x40fa7e
movl $0x40, %esi
xorpd %xmm0, %xmm0
movq %rdi, %rcx
movq %rsi, %rdx
shrq %rdx
ucomisd (%rcx,%rdx,8), %xmm0
jbe 0x40f9da
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
notq %rdx
addq %rsi, %rdx
movq %rdx, %rsi
testq %rdx, %rdx
jg 0x40f9c2
subq %rdi, %rcx
testq %rax, %rcx
jne 0x40fa9d
movl $0x40, %esi
movsd 0x1bb655(%rip), %xmm0   # 0x5cb050
movq %rdi, %rcx
movq %rsi, %rdx
shrq %rdx
ucomisd (%rcx,%rdx,8), %xmm0
jbe 0x40fa19
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
notq %rdx
addq %rsi, %rdx
movq %rdx, %rsi
testq %rdx, %rdx
jg 0x40fa01
subq %rdi, %rcx
testq %rax, %rcx
jne 0x40fabc
movl $0x40, %esi
movsd 0x1bb61e(%rip), %xmm0   # 0x5cb058
movq %rdi, %rcx
movq %rsi, %rdx
shrq %rdx
ucomisd (%rcx,%rdx,8), %xmm0
jbe 0x40fa58
leaq (%rcx,%rdx,8), %rcx
addq $0x8, %rcx
notq %rdx
addq %rsi, %rdx
movq %rdx, %rsi
testq %rdx, %rdx
jg 0x40fa40
subq %rdi, %rcx
andq %rax, %rcx
cmpq $0x1f8, %rcx            # imm = 0x1F8
jne 0x40fadb
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1bba2f(%rip), %rdi    # 0x5cb4b4
leaq 0x1bba42(%rip), %rsi    # 0x5cb4ce
leaq 0x1bba4d(%rip), %rcx    # 0x5cb4e0
movl $0x32, %edx
callq 0x50c400
leaq 0x1bba8b(%rip), %rdi    # 0x5cb52f
leaq 0x1bba23(%rip), %rsi    # 0x5cb4ce
leaq 0x1bba2e(%rip), %rcx    # 0x5cb4e0
movl $0x33, %edx
callq 0x50c400
leaq 0x1bba85(%rip), %rdi    # 0x5cb548
leaq 0x1bba04(%rip), %rsi    # 0x5cb4ce
leaq 0x1bba0f(%rip), %rcx    # 0x5cb4e0
movl $0x34, %edx
callq 0x50c400
leaq 0x1bba83(%rip), %rdi    # 0x5cb565
leaq 0x1bb9e5(%rip), %rsi    # 0x5cb4ce
leaq 0x1bb9f0(%rip), %rcx    # 0x5cb4e0
movl $0x35, %edx
callq 0x50c400