// File: /workspace/github_c_makefile_star2_O0/nh13[P]ksw/src/parasail/src/memory.c
// Function: parasail_profile_free
void parasail_profile_free(parasail_profile_t *profile)
{
    if (!profile) {
        fprintf(stderr, "%s: attempted free of NULL profile pointer\n", __func__);
        return;
    }

    if (NULL != profile->profile8.score) {
        profile->free(profile->profile8.score);
    }
    if (NULL != profile->profile8.matches) {
        profile->free(profile->profile8.matches);
    }
    if (NULL != profile->profile8.similar) {
        profile->free(profile->profile8.similar);
    }

    if (NULL != profile->profile16.score) {
        profile->free(profile->profile16.score);
    }
    if (NULL != profile->profile16.matches) {
        profile->free(profile->profile16.matches);
    }
    if (NULL != profile->profile16.similar) {
        profile->free(profile->profile16.similar);
    }

    if (NULL != profile->profile32.score) {
        profile->free(profile->profile32.score);
    }
    if (NULL != profile->profile32.matches) {
        profile->free(profile->profile32.matches);
    }
    if (NULL != profile->profile32.similar) {
        profile->free(profile->profile32.similar);
    }

    if (NULL != profile->profile64.score) {
        profile->free(profile->profile64.score);
    }
    if (NULL != profile->profile64.matches) {
        profile->free(profile->profile64.matches);
    }
    if (NULL != profile->profile64.similar) {
        profile->free(profile->profile64.similar);
    }

    free(profile);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x1c5f27
movq 0xc610ce(%rip), %rax    # 0xe26fd8
movq (%rax), %rdi
leaq 0xb261fb(%rip), %rsi    # 0xcec10f
leaq 0xb26220(%rip), %rdx    # 0xcec13b
movb $0x0, %al
callq 0x19e180
jmp 0x1c6098
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x18(%rcx), %rax
je 0x1c5f45
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x20(%rcx), %rax
je 0x1c5f63
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x20(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x28(%rcx), %rax
je 0x1c5f81
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x28(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x30(%rcx), %rax
je 0x1c5f9f
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x30(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x38(%rcx), %rax
je 0x1c5fbd
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x38(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x40(%rcx), %rax
je 0x1c5fdb
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x40(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x48(%rcx), %rax
je 0x1c5ff9
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x48(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x50(%rcx), %rax
je 0x1c6017
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x50(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x58(%rcx), %rax
je 0x1c6035
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x58(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x60(%rcx), %rax
je 0x1c6053
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x60(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x68(%rcx), %rax
je 0x1c6071
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x68(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpq 0x70(%rcx), %rax
je 0x1c608f
movq -0x8(%rbp), %rax
movq 0x78(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x70(%rcx), %rdi
callq *%rax
movq -0x8(%rbp), %rdi
callq 0x19e120
addq $0x10, %rsp
popq %rbp
retq
nop