// File: /workspace/github_c_makefile_star2_O2/nh13[P]ksw/src/parasail/src/memory.c
// Function: parasail_result_free
void parasail_result_free(parasail_result_t *result)
{
    /* validate inputs */
    if (!result) {
        fprintf(stderr, "%s: attempted free of NULL result pointer\n", __func__);
        return;
    }
    
    if (result->flag & PARASAIL_FLAG_STATS) {
        if (result->flag & PARASAIL_FLAG_TABLE) {
            free(result->stats->tables->score_table);
            free(result->stats->tables->matches_table);
            free(result->stats->tables->similar_table);
            free(result->stats->tables->length_table);
            free(result->stats->tables);
        }
        if (result->flag & PARASAIL_FLAG_ROWCOL) {
            free(result->stats->rowcols->score_row);
            free(result->stats->rowcols->matches_row);
            free(result->stats->rowcols->similar_row);
            free(result->stats->rowcols->length_row);
            free(result->stats->rowcols->score_col);
            free(result->stats->rowcols->matches_col);
            free(result->stats->rowcols->similar_col);
            free(result->stats->rowcols->length_col);
            free(result->stats->rowcols);
        }
        free(result->stats);
    }
    else {
        if (result->flag & PARASAIL_FLAG_TABLE) {
            free(result->tables->score_table);
            free(result->tables);
        }
        if (result->flag & PARASAIL_FLAG_ROWCOL) {
            free(result->rowcols->score_row);
            free(result->rowcols->score_col);
            free(result->rowcols);
        }
    }
    if (result->flag & PARASAIL_FLAG_TRACE) {
        parasail_free(result->trace->trace_table);
        if (NULL != result->trace->trace_ins_table)
            parasail_free(result->trace->trace_ins_table);
        if (NULL != result->trace->trace_del_table)
            parasail_free(result->trace->trace_del_table);
        free(result->trace);
    }

    free(result);
}

// Assembly:
testq %rdi, %rdi
je 0x1abf57
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl 0xc(%rdi), %eax
btl $0x10, %eax
jb 0x1abe10
btl $0x11, %eax
jae 0x1abde4
movq 0x10(%rbx), %rax
movq (%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rdi
callq 0x19e120
movl 0xc(%rbx), %eax
btl $0x12, %eax
jae 0x1abf13
leaq 0x10(%rbx), %r14
movq 0x10(%rbx), %rax
movq (%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
jmp 0x1abf0b
btl $0x11, %eax
jae 0x1abe69
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movl 0xc(%rbx), %eax
btl $0x12, %eax
jae 0x1abf07
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x30(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rax
movq 0x38(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
leaq 0x10(%rbx), %r14
movq (%r14), %rdi
callq 0x19e120
testb $0x8, 0xe(%rbx)
je 0x1abf48
movq 0x10(%rbx), %rax
movq (%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq 0x10(%rbx), %rdi
callq 0x19e120
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x19e120
movq 0x58f07a(%rip), %rax    # 0x73afd8
movq (%rax), %rdi
leaq 0x41b043(%rip), %rsi    # 0x5c6fab
leaq 0x41b067(%rip), %rdx    # 0x5c6fd6
xorl %eax, %eax
jmp 0x19e180