// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/parasail/apps/parasail_aligner.cpp
// Function: output_emboss(_IO_FILE*, bool, long, parasail_matrix const*, std::vector<std::pair<int, int>, std::allocator<std::pair<int, int>>> const&, parasail_sequences*, parasail_sequences*, std::vector<parasail_result*, std::allocator<parasail_result*>> const&, long long, long long, bool, char const*)
inline static void output_emboss(
        FILE *fop,
        bool has_query,
        long sid_crossover,
        const parasail_matrix_t *matrix,
        const PairVec &vpairs,
        parasail_sequences_t *queries,
        parasail_sequences_t *sequences,
        const vector<parasail_result_t*> &results,
        long long start,
        long long stop,
        bool case_sensitive,
        const char *alphabet_aliases)
{
    for (long long index=start; index<stop; ++index) {
        parasail_result_t *result = results[index];
        int i = vpairs[index].first;
        int j = vpairs[index].second;

        if (has_query) {
            i = i - sid_crossover;
            if (parasail_result_is_saturated(result)) {
                fprintf(stderr, "query %d (%s) and ref %d (%s) saturated\n",
                        i, queries->seqs[i].name.s,
                        j, sequences->seqs[j].name.s);
                continue;
            }
            parasail_traceback_generic_extra2(
                    queries->seqs[i].seq.s,
                    queries->seqs[i].seq.l,
                    sequences->seqs[j].seq.s,
                    sequences->seqs[j].seq.l,
                    queries->seqs[i].name.s,
                    sequences->seqs[j].name.s,
                    matrix,
                    result,
                    '|', ':', '.',
                    50,
                    14,
                    1,
                    7,
                    fop,
                    case_sensitive,
                    alphabet_aliases);
        }
        else {
            if (parasail_result_is_saturated(result)) {
                fprintf(stderr, "seq %d (%s) and seq %d (%s) saturated\n",
                        i, sequences->seqs[i].name.s,
                        j, sequences->seqs[j].name.s);
                continue;
            }
            parasail_traceback_generic_extra2(
                    matrix->type == PARASAIL_MATRIX_TYPE_SQUARE ? sequences->seqs[i].seq.s : matrix->query,
                    matrix->type == PARASAIL_MATRIX_TYPE_SQUARE ? sequences->seqs[i].seq.l : matrix->length,
                    sequences->seqs[j].seq.s,
                    sequences->seqs[j].seq.l,
                    matrix->type == PARASAIL_MATRIX_TYPE_SQUARE ? sequences->seqs[i].name.s : matrix->name,
                    sequences->seqs[j].name.s,
                    matrix,
                    result,
                    '|', ':', '.',
                    50,
                    14,
                    1,
                    7,
                    fop,
                    case_sensitive,
                    alphabet_aliases);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0xf0, %rsp
movq 0x38(%rbp), %rax
movb 0x30(%rbp), %al
movq 0x28(%rbp), %r10
movq 0x20(%rbp), %r10
movq 0x18(%rbp), %r10
movq 0x10(%rbp), %r10
movq %rdi, -0x18(%rbp)
andb $0x1, %sil
movb %sil, -0x19(%rbp)
movq %rdx, -0x28(%rbp)
movq %rcx, -0x30(%rbp)
movq %r8, -0x38(%rbp)
movq %r9, -0x40(%rbp)
andb $0x1, %al
movb %al, -0x41(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
cmpq 0x28(%rbp), %rax
jge 0x2b6ec6
movq 0x18(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x2bdca0
movq (%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x38(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x2bdcc0
movl (%rax), %eax
movl %eax, -0x5c(%rbp)
movq -0x38(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x2bdcc0
movl 0x4(%rax), %eax
movl %eax, -0x60(%rbp)
testb $0x1, -0x19(%rbp)
je 0x2b6cd3
movslq -0x5c(%rbp), %rax
subq -0x28(%rbp), %rax
movl %eax, -0x5c(%rbp)
movq -0x58(%rbp), %rdi
callq 0x2daa80
cmpl $0x0, %eax
je 0x2b6bd8
movq 0xcc4441(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
movl -0x5c(%rbp), %edx
movq -0x40(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
movl -0x60(%rbp), %r8d
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %rsi
shlq $0x6, %rsi
addq %rsi, %rax
movq 0x8(%rax), %r9
leaq 0xaf8c72(%rip), %rsi    # 0xdaf83e
movb $0x0, %al
callq 0x2af440
jmp 0x2b6eb5
movq -0x40(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x28(%rax), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rax
movl %eax, %esi
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x28(%rax), %rdx
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rax
movl %eax, %ecx
movq -0x40(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %r8
shlq $0x6, %r8
addq %r8, %rax
movq 0x8(%rax), %r8
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %r9
shlq $0x6, %r9
addq %r9, %rax
movq 0x8(%rax), %r9
movq -0x30(%rbp), %r14
movq -0x58(%rbp), %rbx
movq -0x18(%rbp), %r11
movb -0x41(%rbp), %al
andb $0x1, %al
movzbl %al, %r10d
movq 0x38(%rbp), %rax
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movl $0x7c, 0x10(%rsp)
movl $0x3a, 0x18(%rsp)
movl $0x2e, 0x20(%rsp)
movl $0x32, 0x28(%rsp)
movl $0xe, 0x30(%rsp)
movl $0x1, 0x38(%rsp)
movl $0x7, 0x40(%rsp)
movq %r11, 0x48(%rsp)
movl %r10d, 0x50(%rsp)
movq %rax, 0x58(%rsp)
callq 0x3af940
jmp 0x2b6eb3
movq -0x58(%rbp), %rdi
callq 0x2daa80
cmpl $0x0, %eax
je 0x2b6d31
movq 0xcc42e8(%rip), %rax    # 0xf7afd0
movq (%rax), %rdi
movl -0x5c(%rbp), %edx
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
movl -0x60(%rbp), %r8d
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %rsi
shlq $0x6, %rsi
addq %rsi, %rax
movq 0x8(%rax), %r9
leaq 0xaf8b42(%rip), %rsi    # 0xdaf867
movb $0x0, %al
callq 0x2af440
jmp 0x2b6eb5
movq -0x30(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jne 0x2b6d57
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x28(%rax), %rax
movq %rax, -0x68(%rbp)
jmp 0x2b6d63
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x30(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jne 0x2b6d91
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rax
movq %rax, -0x78(%rbp)
jmp 0x2b6d9d
movq -0x30(%rbp), %rax
movslq 0x34(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movl %eax, -0x8c(%rbp)
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x28(%rax), %rax
movq %rax, -0x88(%rbp)
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x20(%rax), %rax
movl %eax, -0x7c(%rbp)
movq -0x30(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jne 0x2b6e06
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x5c(%rbp), %rcx
shlq $0x6, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
jmp 0x2b6e14
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x98(%rbp)
movl -0x7c(%rbp), %ecx
movq -0x88(%rbp), %rdx
movl -0x8c(%rbp), %esi
movq -0x70(%rbp), %rdi
movq -0x98(%rbp), %r8
movq 0x10(%rbp), %rax
movq (%rax), %rax
movslq -0x60(%rbp), %r9
shlq $0x6, %r9
addq %r9, %rax
movq 0x8(%rax), %r9
movq -0x30(%rbp), %r14
movq -0x58(%rbp), %rbx
movq -0x18(%rbp), %r11
movb -0x41(%rbp), %al
andb $0x1, %al
movzbl %al, %r10d
movq 0x38(%rbp), %rax
movq %r14, (%rsp)
movq %rbx, 0x8(%rsp)
movl $0x7c, 0x10(%rsp)
movl $0x3a, 0x18(%rsp)
movl $0x2e, 0x20(%rsp)
movl $0x32, 0x28(%rsp)
movl $0xe, 0x30(%rsp)
movl $0x1, 0x38(%rsp)
movl $0x7, 0x40(%rsp)
movq %r11, 0x48(%rsp)
movl %r10d, 0x50(%rsp)
movq %rax, 0x58(%rsp)
callq 0x3af940
jmp 0x2b6eb5
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x2b6b1e
addq $0xf0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
nopw %cs:(%rax,%rax)