// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x1c45c7
movq 0xc62a2e(%rip), %rax    # 0xe26fd8
movq (%rax), %rdi
leaq 0xb279f7(%rip), %rsi    # 0xcebfab
leaq 0xb27a1b(%rip), %rdx    # 0xcebfd6
movb $0x0, %al
callq 0x19e180
jmp 0x1c4815
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x10000, %eax          # imm = 0x10000
cmpl $0x0, %eax
je 0x1c472d
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
je 0x1c4651
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x40000, %eax          # imm = 0x40000
cmpl $0x0, %eax
je 0x1c471e
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x20(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x30(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rax
movq 0x38(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
jmp 0x1c479c
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x20000, %eax          # imm = 0x20000
cmpl $0x0, %eax
je 0x1c475b
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x40000, %eax          # imm = 0x40000
cmpl $0x0, %eax
je 0x1c479a
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
jmp 0x1c479c
movq -0x8(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x80000, %eax          # imm = 0x80000
cmpl $0x0, %eax
je 0x1c480c
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x1c3590
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq 0x8(%rcx), %rax
je 0x1c47de
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rdi
callq 0x1c3590
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
cmpq 0x10(%rcx), %rax
je 0x1c47ff
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x10(%rax), %rdi
callq 0x1c3590
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x19e120
movq -0x8(%rbp), %rdi
callq 0x19e120
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)