// File: 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
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movsd %xmm0, -0x18(%rbp)
movsd %xmm1, -0x20(%rbp)
movsd %xmm2, -0x28(%rbp)
movsd %xmm3, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x58(%rbp)
addq $0x600, %rdi            # imm = 0x600
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x38(%rbp), %rsi
callq 0x41b7f0
movq -0x58(%rbp), %rdi
addq $0x200, %rdi            # imm = 0x200
movl $0x3f, %esi
callq 0x41b830
movq -0x58(%rbp), %rdi
movsd 0x1e1d29(%rip), %xmm0   # 0x5fc320
movsd %xmm0, (%rax)
movsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
addq $0x400, %rdi            # imm = 0x400
movl $0x3f, %esi
callq 0x41b830
movsd -0x50(%rbp), %xmm0
movsd %xmm0, (%rax)
movl $0x3e, -0x3c(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x3c(%rbp)
movb %al, -0x59(%rbp)
jbe 0x41a641
movsd -0x28(%rbp), %xmm0
ucomisd -0x18(%rbp), %xmm0
seta %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x41a64a
jmp 0x41a6ba
movq -0x58(%rbp), %rdi
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
addq $0x200, %rdi            # imm = 0x200
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movsd -0x70(%rbp), %xmm0
movq -0x58(%rbp), %rdi
movsd %xmm0, (%rax)
movsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
addq $0x400, %rdi            # imm = 0x400
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movsd -0x68(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x1e1c9e(%rip), %xmm0   # 0x5fc340
mulsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x41a626
jmp 0x41a6bc
cmpl $0x0, -0x3c(%rbp)
jbe 0x41a728
movq -0x58(%rbp), %rdi
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
addq $0x200, %rdi            # imm = 0x200
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movsd -0x78(%rbp), %xmm0
movq -0x58(%rbp), %rdi
movsd %xmm0, (%rax)
addq $0x400, %rdi            # imm = 0x400
movl -0x3c(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movsd 0x1e1bf1(%rip), %xmm0   # 0x5fc2f8
movsd %xmm0, (%rax)
movsd 0x1e1c2d(%rip), %xmm0   # 0x5fc340
mulsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movl -0x3c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x41a6bc
movq -0x58(%rbp), %rdi
movsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x80(%rbp)
addq $0x200, %rdi            # imm = 0x200
xorl %eax, %eax
movl %eax, %esi
callq 0x41b830
movsd -0x80(%rbp), %xmm0
movq -0x58(%rbp), %rdi
movsd %xmm0, (%rax)
addq $0x400, %rdi            # imm = 0x400
xorl %eax, %eax
movl %eax, %esi
callq 0x41b830
movsd 0x1e1b8d(%rip), %xmm0   # 0x5fc2f8
movsd %xmm0, (%rax)
movl $0x1, -0x40(%rbp)
cmpl $0x40, -0x40(%rbp)
je 0x41a89c
movq -0x58(%rbp), %rdi
movl -0xc(%rbp), %eax
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0x88(%rbp)
addq $0x400, %rdi            # imm = 0x400
movl -0x40(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movsd -0x88(%rbp), %xmm0
movsd 0x1e0863(%rip), %xmm1   # 0x5fb018
addsd (%rax), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x48(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0x41a88c
jp 0x41a88c
movq $0x698ac0, %rdi         # imm = 0x698AC0
leaq 0x1e1fc6(%rip), %rsi    # 0x5fc7ae
callq 0x4e1b60
movq -0x58(%rbp), %rdi
movq %rax, -0x98(%rbp)
addq $0x400, %rdi            # imm = 0x400
movl -0x40(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movq -0x98(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4e2ad0
movq -0x58(%rbp), %rdi
addq $0x400, %rdi            # imm = 0x400
movl -0x40(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movsd 0x1e1b02(%rip), %xmm0   # 0x5fc338
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
movq $0x698ac0, %rdi         # imm = 0x698AC0
leaq 0x1e1f89(%rip), %rsi    # 0x5fc7d5
callq 0x4e1b60
movq -0x58(%rbp), %rdi
movq %rax, -0x90(%rbp)
addq $0x400, %rdi            # imm = 0x400
movl -0x40(%rbp), %eax
movl %eax, %esi
callq 0x41b830
movq -0x90(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x4e2ad0
movq %rax, %rdi
leaq 0x1f3b83(%rip), %rsi    # 0x60e40a
callq 0x4e1b60
jmp 0x41a88e
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x41a776
movq -0x58(%rbp), %rdi
movsd 0x1e1a50(%rip), %xmm0   # 0x5fc2f8
callq 0x41b860
cmpl $0x0, %eax
jne 0x41a8b4
jmp 0x41a8d3
leaq 0x1e1f1f(%rip), %rdi    # 0x5fc7da
leaq 0x1e1f32(%rip), %rsi    # 0x5fc7f4
movl $0x32, %edx
leaq 0x1e1f38(%rip), %rcx    # 0x5fc806
callq 0x53d020
movq -0x58(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x41b860
cmpl $0x0, %eax
jne 0x41a8e6
jmp 0x41a905
leaq 0x1e1f68(%rip), %rdi    # 0x5fc855
leaq 0x1e1f00(%rip), %rsi    # 0x5fc7f4
movl $0x33, %edx
leaq 0x1e1f06(%rip), %rcx    # 0x5fc806
callq 0x53d020
movq -0x58(%rbp), %rdi
movsd 0x1e1a17(%rip), %xmm0   # 0x5fc328
callq 0x41b860
cmpl $0x0, %eax
jne 0x41a91d
jmp 0x41a93c
leaq 0x1e1f4a(%rip), %rdi    # 0x5fc86e
leaq 0x1e1ec9(%rip), %rsi    # 0x5fc7f4
movl $0x34, %edx
leaq 0x1e1ecf(%rip), %rcx    # 0x5fc806
callq 0x53d020
movq -0x58(%rbp), %rdi
movsd 0x1e19e8(%rip), %xmm0   # 0x5fc330
callq 0x41b860
cmpl $0x3f, %eax
jne 0x41a954
jmp 0x41a973
leaq 0x1e1f30(%rip), %rdi    # 0x5fc88b
leaq 0x1e1e92(%rip), %rsi    # 0x5fc7f4
movl $0x35, %edx
leaq 0x1e1e98(%rip), %rcx    # 0x5fc806
callq 0x53d020
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax)