// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/parasail/apps/parasail_aligner.cpp
// Function: std::vector<long long, std::allocator<long long>> calc_batches<parasail_function_info>(long long, bool, unsigned long, parasail_function_info const*, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int>>> const&, std::vector<long, std::allocator<long>> const&, std::vector<long, std::allocator<long>> const&, unsigned long&)
vector<long long> calc_batches(
        long long batch_size,
        bool verbose_memory,
        size_t memory_budget,
        const info *function_info,
        const PairVec &vpairs,
        const vector<long> &BEG,
        const vector<long> &END,
        size_t &memory_estimate)
{
    vector<long long> batches;
    batches.push_back(0);
    size_t result_size = sizeof(parasail_result_t);
    memory_estimate = 0;

    if (verbose_memory) {
        eprintf(stdout, "%20s: %.4f GB\n", "memory remaining", memory_budget*GB);
    }

    /* if user specified batch size on command line, we use it */
    if (0 != batch_size) {
        size_t batch_size_ = static_cast<size_t>(batch_size);
        for (size_t batch=batch_size_; batch<vpairs.size(); batch+=batch_size_) {
            batches.push_back(batch);
        }
        batches.push_back(vpairs.size());
        if (verbose_memory) {
            for (size_t batch=0; batch<batches.size()-1; ++batch) {
                long long start = batches[batch];
                long long stop = batches[batch+1];
                eprintf(stdout, "%20s: %lld-%lld\t%.4f GB\n", "batch",
                        start, stop, memory_estimate*GB);
            }
        }
        return batches;
    }

    if (function_info->is_table
            || function_info->is_rowcol
            || function_info->is_trace) {
        size_t multiplier = 1;
        if (function_info->is_table) {
            if (function_info->is_stats) {
                multiplier = 4;
                result_size += sizeof(parasail_result_extra_stats_t);
                result_size += sizeof(parasail_result_extra_stats_tables_t);
            }
            else {
                multiplier = 1;
                result_size += sizeof(parasail_result_extra_tables_t);
            }
        }
        else if (function_info->is_rowcol) {
            if (function_info->is_stats) {
                multiplier = 4;
                result_size += sizeof(parasail_result_extra_stats_t);
                result_size += sizeof(parasail_result_extra_stats_rowcols_t);
            }
            else {
                multiplier = 1;
                result_size += sizeof(parasail_result_extra_rowcols_t);
            }
        }
        else /* if (function_info->is_trace) */ {
            result_size += sizeof(parasail_result_extra_trace_t);
        }
        int i = vpairs[0].first;
        int j = vpairs[0].second;
        long i_beg = BEG[i];
        long i_end = END[i];
        long i_len = i_end-i_beg;
        long j_beg = BEG[j];
        long j_end = END[j];
        long j_len = j_end-j_beg;
        size_t current_size = 0;
        if (function_info->is_table) {
            current_size = sizeof(int) * multiplier * i_len * j_len;
        }
        else if (function_info->is_rowcol) {
            current_size = sizeof(int) * multiplier * (i_len + j_len);
        }
        else /* if (function_info->is_trace) */ {
            current_size = sizeof(int8_t) * multiplier * i_len * j_len;
        }
        memory_estimate = current_size;
        for (size_t index=1; index<vpairs.size(); ++index) {
            i = vpairs[index].first;
            j = vpairs[index].second;
            i_beg = BEG[i];
            i_end = END[i];
            i_len = i_end-i_beg;
            j_beg = BEG[j];
            j_end = END[j];
            j_len = j_end-j_beg;
            unsigned long local_size = 0;
            if (function_info->is_table) {
                local_size = sizeof(int) * multiplier * i_len * j_len;
            }
            else if (function_info->is_rowcol) {
                local_size = sizeof(int) * multiplier * (i_len + j_len);
            }
            else /* if (function_info->is_trace) */ {
                local_size = sizeof(int8_t) * multiplier * i_len * j_len;
            }
            if ((current_size + local_size) > memory_budget) {
                batches.push_back(index);
                if (current_size > memory_estimate) {
                    memory_estimate = current_size;
                }
                if (verbose_memory) {
                    long long start = batches[batches.size()-2];
                    long long stop = batches[batches.size()-1];
                    eprintf(stdout, "%20s: %lld-%lld\t%.4f GB\n", "batch",
                            start, stop, current_size*GB);
                }
                current_size = local_size;
            }
            else {
                current_size += local_size;
            }
        }
        if (current_size > memory_estimate) {
            memory_estimate = current_size;
        }
        batches.push_back(vpairs.size());
        if (verbose_memory) {
            long long start = batches[batches.size()-2];
            long long stop = batches[batches.size()-1];
            eprintf(stdout, "%20s: %lld-%lld\t%.4f GB\n", "batch",
                    start, stop, current_size*GB);
        }
    }
    else {
        if (function_info->is_stats) {
            result_size += sizeof(parasail_result_extra_stats_t);
        }
        /* the score, and perhaps stats */
        size_t results_per_batch = memory_budget / result_size;
        size_t how_many_batches = vpairs.size() / results_per_batch;
        for (size_t i=0; i<how_many_batches; ++i) {
            batches.push_back((i+1)*results_per_batch);
        }
        batches.push_back(vpairs.size());
        if (results_per_batch > vpairs.size()) {
            memory_estimate = result_size*vpairs.size();
        }
        else {
            memory_estimate = result_size*results_per_batch;
        }
        if (verbose_memory) {
            for (size_t batch=0; batch<batches.size()-1; ++batch) {
                long long start = batches[batch];
                long long stop = batches[batch+1];
                eprintf(stdout, "%20s: %lld-%lld\t%.4f GB\n", "batch",
                        start, stop, memory_estimate*GB);
            }
        }
    }

    return batches;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, -0x168(%rbp)
movb %dl, %al
movq %rdi, %rdx
movq %rdx, -0x170(%rbp)
movq 0x20(%rbp), %rdx
movq 0x18(%rbp), %rdx
movq 0x10(%rbp), %rdx
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movb $0x0, -0x31(%rbp)
callq 0x2c5260
movq -0x168(%rbp), %rdi
movq $0x0, -0x40(%rbp)
leaq -0x40(%rbp), %rsi
callq 0x2c5280
jmp 0x2b9236
movq $0x18, -0x58(%rbp)
movq 0x20(%rbp), %rax
movq $0x0, (%rax)
testb $0x1, -0x11(%rbp)
je 0x2b92c0
movq 0xcc1d4a(%rip), %rax    # 0xf7afa0
movq (%rax), %rdi
movaps 0xaf4dd0(%rip), %xmm1   # 0xdae030
movq -0x20(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaf4dcf(%rip), %xmm1   # 0xdae040
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xaf4d80(%rip), %xmm1   # 0xdae008
mulsd %xmm1, %xmm0
leaq 0xaf5413(%rip), %rsi    # 0xdae6a6
leaq 0xaf68db(%rip), %rdx    # 0xdafb75
movb $0x1, %al
callq 0x2af440
jmp 0x2b92c0
movq -0x168(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
callq 0x2b9e40
jmp 0x2b9cbc
xorl %eax, %eax
cmpq -0x10(%rbp), %rax
je 0x2b9448
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq %rax, %rcx
movq -0x178(%rbp), %rax
cmpq %rcx, %rax
jae 0x2b9329
movq -0x168(%rbp), %rdi
movq -0x68(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0x70(%rbp), %rsi
callq 0x2c5280
jmp 0x2b9319
jmp 0x2b931b
movq -0x60(%rbp), %rax
addq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
jmp 0x2b92dc
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq -0x168(%rbp), %rdi
movq %rax, -0x78(%rbp)
leaq -0x78(%rbp), %rsi
callq 0x2c5280
jmp 0x2b9348
testb $0x1, -0x11(%rbp)
je 0x2b9435
movq $0x0, -0x80(%rbp)
movq -0x168(%rbp), %rdi
movq -0x80(%rbp), %rax
movq %rax, -0x180(%rbp)
callq 0x2b9d80
movq %rax, %rcx
movq -0x180(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x2b9433
movq -0x168(%rbp), %rdi
movq -0x80(%rbp), %rsi
callq 0x2b9da0
movq -0x168(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x2b9da0
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movq 0xcc1bda(%rip), %rax    # 0xf7afa0
movq (%rax), %rdi
movq -0x88(%rbp), %rcx
movq -0x90(%rbp), %r8
movq 0x20(%rbp), %rax
movq (%rax), %xmm0
movaps 0xaf4c4a(%rip), %xmm1   # 0xdae030
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaf4c4e(%rip), %xmm1   # 0xdae040
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xaf4bff(%rip), %xmm1   # 0xdae008
mulsd %xmm1, %xmm0
leaq 0xaf6772(%rip), %rsi    # 0xdafb86
leaq 0xaf6784(%rip), %rdx    # 0xdafb9f
movb $0x1, %al
callq 0x2af440
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x2b935a
jmp 0x2b9435
movb $0x1, -0x31(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0x2b9c9a
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3c(%rax)
jne 0x2b946a
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3d(%rax)
jne 0x2b946a
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3e(%rax)
je 0x2b9a5f
movq $0x1, -0xa0(%rbp)
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3c(%rax)
je 0x2b94c7
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3f(%rax)
je 0x2b94ae
movq $0x4, -0xa0(%rbp)
movq -0x58(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x58(%rbp)
jmp 0x2b94c5
movq $0x1, -0xa0(%rbp)
movq -0x58(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x58(%rbp)
jmp 0x2b9527
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3d(%rax)
je 0x2b9519
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3f(%rax)
je 0x2b9500
movq $0x4, -0xa0(%rbp)
movq -0x58(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x58(%rbp)
jmp 0x2b9517
movq $0x1, -0xa0(%rbp)
movq -0x58(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x58(%rbp)
jmp 0x2b9525
movq -0x58(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x58(%rbp)
jmp 0x2b9527
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2bdcc0
movl (%rax), %eax
movl %eax, -0xa4(%rbp)
movq -0x30(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2bdcc0
movl 0x4(%rax), %eax
movl %eax, -0xa8(%rbp)
movq 0x10(%rbp), %rdi
movslq -0xa4(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
movq 0x18(%rbp), %rdi
movslq -0xa4(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
subq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq 0x10(%rbp), %rdi
movslq -0xa8(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
movq 0x18(%rbp), %rdi
movslq -0xa8(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
subq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq $0x0, -0xe0(%rbp)
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3c(%rax)
je 0x2b961d
movq -0xa0(%rbp), %rax
shlq $0x2, %rax
imulq -0xc0(%rbp), %rax
imulq -0xd8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x2b9671
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3d(%rax)
je 0x2b964d
movq -0xa0(%rbp), %rax
shlq $0x2, %rax
movq -0xc0(%rbp), %rcx
addq -0xd8(%rbp), %rcx
imulq %rcx, %rax
movq %rax, -0xe0(%rbp)
jmp 0x2b966f
movq -0xa0(%rbp), %rax
shlq $0x0, %rax
imulq -0xc0(%rbp), %rax
imulq -0xd8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x2b9671
movq -0xe0(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq $0x1, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq %rax, %rcx
movq -0x188(%rbp), %rax
cmpq %rcx, %rax
jae 0x2b9959
movq -0x30(%rbp), %rdi
movq -0xe8(%rbp), %rsi
callq 0x2bdcc0
movl (%rax), %eax
movl %eax, -0xa4(%rbp)
movq -0x30(%rbp), %rdi
movq -0xe8(%rbp), %rsi
callq 0x2bdcc0
movl 0x4(%rax), %eax
movl %eax, -0xa8(%rbp)
movq 0x10(%rbp), %rdi
movslq -0xa4(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xb0(%rbp)
movq 0x18(%rbp), %rdi
movslq -0xa4(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rax
subq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq 0x10(%rbp), %rdi
movslq -0xa8(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xc8(%rbp)
movq 0x18(%rbp), %rdi
movslq -0xa8(%rbp), %rsi
callq 0x2bdce0
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
subq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq $0x0, -0xf0(%rbp)
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3c(%rax)
je 0x2b97b0
movq -0xa0(%rbp), %rax
shlq $0x2, %rax
imulq -0xc0(%rbp), %rax
imulq -0xd8(%rbp), %rax
movq %rax, -0xf0(%rbp)
jmp 0x2b9804
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3d(%rax)
je 0x2b97e0
movq -0xa0(%rbp), %rax
shlq $0x2, %rax
movq -0xc0(%rbp), %rcx
addq -0xd8(%rbp), %rcx
imulq %rcx, %rax
movq %rax, -0xf0(%rbp)
jmp 0x2b9802
movq -0xa0(%rbp), %rax
shlq $0x0, %rax
imulq -0xc0(%rbp), %rax
imulq -0xd8(%rbp), %rax
movq %rax, -0xf0(%rbp)
jmp 0x2b9804
movq -0xe0(%rbp), %rax
addq -0xf0(%rbp), %rax
cmpq -0x20(%rbp), %rax
jbe 0x2b992b
movq -0x168(%rbp), %rdi
movq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
leaq -0xf8(%rbp), %rsi
callq 0x2c5280
jmp 0x2b983f
movq -0xe0(%rbp), %rax
movq 0x20(%rbp), %rcx
cmpq (%rcx), %rax
jbe 0x2b985d
movq -0xe0(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
testb $0x1, -0x11(%rbp)
je 0x2b991b
movq -0x168(%rbp), %rdi
callq 0x2b9d80
movq -0x168(%rbp), %rdi
movq %rax, %rsi
addq $-0x2, %rsi
callq 0x2b9da0
movq -0x168(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x100(%rbp)
callq 0x2b9d80
movq -0x168(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x2b9da0
movq (%rax), %rax
movq %rax, -0x108(%rbp)
movq 0xcc16e1(%rip), %rax    # 0xf7afa0
movq (%rax), %rdi
movq -0x100(%rbp), %rcx
movq -0x108(%rbp), %r8
movaps 0xaf4759(%rip), %xmm1   # 0xdae030
movq -0xe0(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaf4755(%rip), %xmm1   # 0xdae040
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xaf4706(%rip), %xmm1   # 0xdae008
mulsd %xmm1, %xmm0
leaq 0xaf6279(%rip), %rsi    # 0xdafb86
leaq 0xaf628b(%rip), %rdx    # 0xdafb9f
movb $0x1, %al
callq 0x2af440
movq -0xf0(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x2b9940
movq -0xf0(%rbp), %rax
addq -0xe0(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x2b9942
movq -0xe8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe8(%rbp)
jmp 0x2b968a
movq -0xe0(%rbp), %rax
movq 0x20(%rbp), %rcx
cmpq (%rcx), %rax
jbe 0x2b9977
movq -0xe0(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq -0x168(%rbp), %rdi
movq %rax, -0x110(%rbp)
leaq -0x110(%rbp), %rsi
callq 0x2c5280
jmp 0x2b999c
testb $0x1, -0x11(%rbp)
je 0x2b9a5a
movq -0x168(%rbp), %rdi
callq 0x2b9d80
movq -0x168(%rbp), %rdi
movq %rax, %rsi
addq $-0x2, %rsi
callq 0x2b9da0
movq -0x168(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x118(%rbp)
callq 0x2b9d80
movq -0x168(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x2b9da0
movq (%rax), %rax
movq %rax, -0x120(%rbp)
movq 0xcc15a2(%rip), %rax    # 0xf7afa0
movq (%rax), %rdi
movq -0x118(%rbp), %rcx
movq -0x120(%rbp), %r8
movaps 0xaf461a(%rip), %xmm1   # 0xdae030
movq -0xe0(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaf4616(%rip), %xmm1   # 0xdae040
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xaf45c7(%rip), %xmm1   # 0xdae008
mulsd %xmm1, %xmm0
leaq 0xaf613a(%rip), %rsi    # 0xdafb86
leaq 0xaf614c(%rip), %rdx    # 0xdafb9f
movb $0x1, %al
callq 0x2af440
jmp 0x2b9c8c
movq -0x28(%rbp), %rax
cmpb $0x0, 0x3f(%rax)
je 0x2b9a75
movq -0x58(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x58(%rbp)
movq -0x20(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x58(%rbp)
movq %rax, -0x128(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x128(%rbp)
movq %rax, -0x130(%rbp)
movq $0x0, -0x138(%rbp)
movq -0x138(%rbp), %rax
cmpq -0x130(%rbp), %rax
jae 0x2b9b05
movq -0x168(%rbp), %rdi
movq -0x138(%rbp), %rax
incq %rax
movq -0x128(%rbp), %rcx
imulq %rcx, %rax
movq %rax, -0x140(%rbp)
leaq -0x140(%rbp), %rsi
callq 0x2c5280
jmp 0x2b9aef
jmp 0x2b9af1
movq -0x138(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x138(%rbp)
jmp 0x2b9aae
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq -0x168(%rbp), %rdi
movq %rax, -0x148(%rbp)
leaq -0x148(%rbp), %rsi
callq 0x2c5280
jmp 0x2b9b2a
movq -0x128(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq %rax, %rcx
movq -0x190(%rbp), %rax
cmpq %rcx, %rax
jbe 0x2b9b78
movq -0x58(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0x30(%rbp), %rdi
callq 0x2b8bc0
movq -0x198(%rbp), %rcx
imulq %rax, %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
jmp 0x2b9b8b
movq -0x58(%rbp), %rcx
imulq -0x128(%rbp), %rcx
movq 0x20(%rbp), %rax
movq %rcx, (%rax)
testb $0x1, -0x11(%rbp)
je 0x2b9c8a
movq $0x0, -0x150(%rbp)
movq -0x168(%rbp), %rdi
movq -0x150(%rbp), %rax
movq %rax, -0x1a0(%rbp)
callq 0x2b9d80
movq %rax, %rcx
movq -0x1a0(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x2b9c88
movq -0x168(%rbp), %rdi
movq -0x150(%rbp), %rsi
callq 0x2b9da0
movq -0x168(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0x158(%rbp)
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x2b9da0
movq (%rax), %rax
movq %rax, -0x160(%rbp)
movq 0xcc138b(%rip), %rax    # 0xf7afa0
movq (%rax), %rdi
movq -0x158(%rbp), %rcx
movq -0x160(%rbp), %r8
movq 0x20(%rbp), %rax
movq (%rax), %xmm0
movaps 0xaf43fb(%rip), %xmm1   # 0xdae030
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xaf43ff(%rip), %xmm1   # 0xdae040
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xaf43b0(%rip), %xmm1   # 0xdae008
mulsd %xmm1, %xmm0
leaq 0xaf5f23(%rip), %rsi    # 0xdafb86
leaq 0xaf5f35(%rip), %rdx    # 0xdafb9f
movb $0x1, %al
callq 0x2af440
movq -0x150(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x150(%rbp)
jmp 0x2b9ba0
jmp 0x2b9c8a
jmp 0x2b9c8c
movb $0x1, -0x31(%rbp)
movl $0x1, -0x94(%rbp)
testb $0x1, -0x31(%rbp)
jne 0x2b9cac
movq -0x168(%rbp), %rdi
callq 0x2b9e40
movq -0x170(%rbp), %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x2af510
nopw %cs:(%rax,%rax)
nop