// File: /workspace/github_c_makefile_star2_O2/nh13[P]ksw/src/parasail/src/striped_unwind.c
// Function: parasail_striped_unwind
int* parasail_striped_unwind(
        int lena,
        int lenb,
        parasail_result_t *result,
        void *array)
{
    int *ret = NULL;

    PARASAIL_ASSERT((result->flag & PARASAIL_FLAG_STRIPED)
            || result->flag & PARASAIL_FLAG_SCAN);

    if (result->flag & PARASAIL_FLAG_LANES_1) {
        PARASAIL_ASSERT(0 && "internal error");
    }
    else if (result->flag & PARASAIL_FLAG_LANES_2) {
        if (result->flag & PARASAIL_FLAG_BITS_8) {
            ret = parasail_striped_unwind_8(lena, lenb, 2, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_16) {
            ret = parasail_striped_unwind_16(lena, lenb, 2, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_32) {
            ret = parasail_striped_unwind_32(lena, lenb, 2, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_64) {
            ret = parasail_striped_unwind_64(lena, lenb, 2, array);
        }
        else {
            PARASAIL_ASSERT(0 && "internal error");
        }
    }
    else if (result->flag & PARASAIL_FLAG_LANES_4) {
        if (result->flag & PARASAIL_FLAG_BITS_8) {
            ret = parasail_striped_unwind_8(lena, lenb, 4, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_16) {
            ret = parasail_striped_unwind_16(lena, lenb, 4, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_32) {
            ret = parasail_striped_unwind_32(lena, lenb, 4, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_64) {
            ret = parasail_striped_unwind_64(lena, lenb, 4, array);
        }
        else {
            PARASAIL_ASSERT(0 && "internal error");
        }
    }
    else if (result->flag & PARASAIL_FLAG_LANES_8) {
        if (result->flag & PARASAIL_FLAG_BITS_8) {
            ret = parasail_striped_unwind_8(lena, lenb, 8, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_16) {
            ret = parasail_striped_unwind_16(lena, lenb, 8, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_32) {
            ret = parasail_striped_unwind_32(lena, lenb, 8, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_64) {
            ret = parasail_striped_unwind_64(lena, lenb, 8, array);
        }
        else {
            PARASAIL_ASSERT(0 && "internal error");
        }
    }
    else if (result->flag & PARASAIL_FLAG_LANES_16) {
        if (result->flag & PARASAIL_FLAG_BITS_8) {
            ret = parasail_striped_unwind_8(lena, lenb, 16, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_16) {
            ret = parasail_striped_unwind_16(lena, lenb, 16, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_32) {
            ret = parasail_striped_unwind_32(lena, lenb, 16, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_64) {
            ret = parasail_striped_unwind_64(lena, lenb, 16, array);
        }
        else {
            PARASAIL_ASSERT(0 && "internal error");
        }
    }
    else if (result->flag & PARASAIL_FLAG_LANES_32) {
        if (result->flag & PARASAIL_FLAG_BITS_8) {
            ret = parasail_striped_unwind_8(lena, lenb, 32, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_16) {
            ret = parasail_striped_unwind_16(lena, lenb, 32, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_32) {
            ret = parasail_striped_unwind_32(lena, lenb, 32, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_64) {
            ret = parasail_striped_unwind_64(lena, lenb, 32, array);
        }
        else {
            PARASAIL_ASSERT(0 && "internal error");
        }
    }
    else if (result->flag & PARASAIL_FLAG_LANES_64) {
        if (result->flag & PARASAIL_FLAG_BITS_8) {
            ret = parasail_striped_unwind_8(lena, lenb, 64, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_16) {
            ret = parasail_striped_unwind_16(lena, lenb, 64, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_32) {
            ret = parasail_striped_unwind_32(lena, lenb, 64, array);
        }
        else if (result->flag & PARASAIL_FLAG_BITS_64) {
            ret = parasail_striped_unwind_64(lena, lenb, 64, array);
        }
        else {
            PARASAIL_ASSERT(0 && "internal error");
        }
    }
    else {
        PARASAIL_ASSERT(0 && "internal error");
    }

    return ret;
}

// Assembly:
pushq %rax
movl 0xc(%rdx), %eax
testw $0xc00, %ax             # imm = 0xC00
je 0x285f76
btl $0x18, %eax
jb 0x285fe7
btl $0x19, %eax
jb 0x285ee7
btl $0x1a, %eax
jb 0x285f0e
btl $0x1b, %eax
jb 0x285f40
btl $0x1c, %eax
jb 0x285f97
btl $0x1d, %eax
jb 0x285fc6
btl $0x1e, %eax
jae 0x285fe7
btl $0x14, %eax
jb 0x286029
btl $0x15, %eax
jb 0x286037
btl $0x16, %eax
jb 0x286044
btl $0x17, %eax
jae 0x285fe7
pushq $0x40
jmp 0x285fe0
btl $0x14, %eax
jb 0x285f39
btl $0x15, %eax
jb 0x285f68
btl $0x16, %eax
jb 0x285fb7
btl $0x17, %eax
jae 0x285fe7
pushq $0x2
jmp 0x285fe0
btl $0x14, %eax
jb 0x285f6f
btl $0x15, %eax
jb 0x285fbe
btl $0x16, %eax
jb 0x286011
btl $0x17, %eax
jae 0x285fe7
pushq $0x4
jmp 0x285fe0
pushq $0x2
jmp 0x28602b
btl $0x14, %eax
jb 0x285fc2
btl $0x15, %eax
jb 0x286015
btl $0x16, %eax
jb 0x28601d
btl $0x17, %eax
jae 0x285fe7
pushq $0x8
jmp 0x285fe0
pushq $0x2
jmp 0x286039
pushq $0x4
jmp 0x28602b
movq 0x4be05b(%rip), %rax    # 0x743fd8
movq (%rax), %rdi
leaq 0x38c8af(%rip), %rsi    # 0x612836
leaq 0x38ccec(%rip), %rdx    # 0x612c7a
leaq 0x38ccfd(%rip), %rcx    # 0x612c92
jmp 0x286006
btl $0x14, %eax
jb 0x286019
btl $0x15, %eax
jb 0x286021
btl $0x16, %eax
jb 0x28602f
btl $0x17, %eax
jae 0x285fe7
pushq $0x10
jmp 0x285fe0
pushq $0x2
jmp 0x286046
pushq $0x4
jmp 0x286039
pushq $0x8
jmp 0x28602b
btl $0x14, %eax
jb 0x286025
btl $0x15, %eax
jb 0x286033
btl $0x16, %eax
jb 0x286040
btl $0x17, %eax
jae 0x285fe7
pushq $0x20
popq %rdx
popq %rax
jmp 0x286242
movq 0x4bdfea(%rip), %rax    # 0x743fd8
movq (%rax), %rdi
leaq 0x38c83e(%rip), %rsi    # 0x612836
leaq 0x38cc7b(%rip), %rdx    # 0x612c7a
leaq 0x38ccd8(%rip), %rcx    # 0x612cde
xorl %eax, %eax
callq 0x1f0220
xorl %eax, %eax
popq %rcx
retq
pushq $0x4
jmp 0x286046
pushq $0x8
jmp 0x286039
pushq $0x10
jmp 0x28602b
pushq $0x8
jmp 0x286046
pushq $0x10
jmp 0x286039
pushq $0x20
jmp 0x28602b
pushq $0x40
popq %rdx
popq %rax
jmp 0x28604d
pushq $0x10
jmp 0x286046
pushq $0x20
jmp 0x286039
pushq $0x40
popq %rdx
popq %rax
jmp 0x2860f2
pushq $0x20
jmp 0x286046
pushq $0x40
popq %rdx
popq %rax
jmp 0x28619a