// File: /workspace/github_c_makefile_star2_O1/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl 0xc(%rdx), %eax
testl $0xc00, %eax            # imm = 0xC00
je 0x2e3ca5
btl $0x18, %eax
jb 0x2e3e9a
movq %rcx, %rbx
movl %esi, %ebp
movl %edi, %r14d
btl $0x19, %eax
jb 0x2e3943
btl $0x1a, %eax
jb 0x2e39fe
btl $0x1b, %eax
jb 0x2e3b4c
btl $0x1c, %eax
jb 0x2e3caf
btl $0x1d, %eax
jb 0x2e3eaa
btl $0x1e, %eax
jae 0x2e4147
btl $0x14, %eax
jb 0x2e40cb
btl $0x15, %eax
jb 0x2e40fd
btl $0x16, %eax
jb 0x2e4123
btl $0x17, %eax
jae 0x2e4179
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
jmp 0x2e3edc
btl $0x14, %eax
jb 0x2e3abf
btl $0x15, %eax
jb 0x2e3b83
btl $0x16, %eax
jb 0x2e3ce6
btl $0x17, %eax
jae 0x2e413d
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %ebp, %ebp
jle 0x2e3ea1
leal 0x1(%r14), %ecx
movl %ecx, %edx
shrl $0x1f, %edx
addl %r14d, %edx
incl %edx
sarl %edx
leal (%rdx,%rdx), %esi
movl %ebp, %edi
leaq (,%rsi,8), %r8
xorl %r9d, %r9d
cmpl $0x2, %ecx
jl 0x2e39ee
xorl %r10d, %r10d
movl %r10d, %r15d
shrl $0x1f, %r15d
addl %r10d, %r15d
movl %r15d, %r12d
sarl %r12d
andl $-0x2, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e39e6
movl (%rbx,%r10,8), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e39ae
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e39a6
jmp 0x2e3ea1
btl $0x14, %eax
jb 0x2e3c13
btl $0x15, %eax
jb 0x2e3d79
btl $0x16, %eax
jb 0x2e3eec
btl $0x17, %eax
jae 0x2e4151
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0x3(%r14), %ecx
leal 0x6(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
leaq (,%rsi,8), %r8
xorl %r9d, %r9d
cmpl $0x4, %ecx
jl 0x2e3aaf
xorl %r10d, %r10d
leal 0x3(%r10), %r15d
testl %r10d, %r10d
cmovnsl %r10d, %r15d
movl %r15d, %r12d
sarl $0x2, %r12d
andl $-0x4, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e3aa7
movl (%rbx,%r10,8), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e3a6d
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3a65
jmp 0x2e3ea1
movslq %r14d, %rdi
movslq %ebp, %r15
imulq %r15, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %r15d, %r15d
jle 0x2e3ea1
leal 0x1(%r14), %ecx
movl %ecx, %edx
shrl $0x1f, %edx
addl %r14d, %edx
incl %edx
sarl %edx
leal (%rdx,%rdx), %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x2, %ecx
jl 0x2e3b3c
xorl %r9d, %r9d
movl %r9d, %r11d
shrl $0x1f, %r11d
addl %r9d, %r11d
movl %r11d, %r15d
sarl %r15d
andl $-0x2, %r11d
movl %r9d, %r10d
subl %r11d, %r10d
imull %edx, %r10d
addl %r15d, %r10d
cmpl %r14d, %r10d
jge 0x2e3b34
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e3afb
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e3af3
jmp 0x2e3ea1
btl $0x14, %eax
jb 0x2e3e0f
btl $0x15, %eax
jb 0x2e3f81
btl $0x16, %eax
jb 0x2e40a7
btl $0x17, %eax
jae 0x2e415b
movl %r14d, %edi
movl %ebp, %esi
movl $0x8, %edx
jmp 0x2e3edc
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %ebp, %ebp
jle 0x2e3ea1
leal 0x1(%r14), %ecx
movl %ecx, %edx
shrl $0x1f, %edx
addl %r14d, %edx
incl %edx
sarl %edx
leal (%rdx,%rdx), %esi
movl %ebp, %edi
leaq (%rsi,%rsi), %r8
xorl %r9d, %r9d
cmpl $0x2, %ecx
jl 0x2e3c03
xorl %r10d, %r10d
movl %r10d, %r15d
shrl $0x1f, %r15d
addl %r10d, %r15d
movl %r15d, %r12d
sarl %r12d
andl $-0x2, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e3bfb
movswl (%rbx,%r10,2), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e3bc2
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3bba
jmp 0x2e3ea1
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0x3(%r14), %ecx
leal 0x6(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x4, %ecx
jl 0x2e3c95
xorl %r9d, %r9d
leal 0x3(%r9), %r11d
testl %r9d, %r9d
cmovnsl %r9d, %r11d
movl %r11d, %r15d
sarl $0x2, %r15d
andl $-0x4, %r11d
movl %r9d, %r10d
subl %r11d, %r10d
imull %edx, %r10d
addl %r15d, %r10d
cmpl %r14d, %r10d
jge 0x2e3c8d
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e3c52
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e3c4a
jmp 0x2e3ea1
callq 0x1f1edd
jmp 0x2e3e9f
btl $0x14, %eax
jb 0x2e4017
btl $0x15, %eax
jb 0x2e40b3
btl $0x16, %eax
jb 0x2e40e5
btl $0x17, %eax
jae 0x2e4165
movl %r14d, %edi
movl %ebp, %esi
movl $0x10, %edx
jmp 0x2e3edc
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %ebp, %ebp
jle 0x2e3ea1
leal 0x1(%r14), %ecx
movl %ecx, %edx
shrl $0x1f, %edx
addl %r14d, %edx
incl %edx
sarl %edx
leal (%rdx,%rdx), %esi
movl %ebp, %edi
leaq (,%rsi,4), %r8
xorl %r9d, %r9d
cmpl $0x2, %ecx
jl 0x2e3d69
xorl %r10d, %r10d
movl %r10d, %r15d
shrl $0x1f, %r15d
addl %r10d, %r15d
movl %r15d, %r12d
sarl %r12d
andl $-0x2, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e3d61
movl (%rbx,%r10,4), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e3d29
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3d21
jmp 0x2e3ea1
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0x3(%r14), %ecx
leal 0x6(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
leaq (%rsi,%rsi), %r8
xorl %r9d, %r9d
cmpl $0x4, %ecx
jl 0x2e3dff
xorl %r10d, %r10d
leal 0x3(%r10), %r15d
testl %r10d, %r10d
cmovnsl %r10d, %r15d
movl %r15d, %r12d
sarl $0x2, %r12d
andl $-0x4, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e3df7
movswl (%rbx,%r10,2), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e3dbc
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3db4
jmp 0x2e3ea1
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0x7(%r14), %ecx
leal 0xe(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x3, %edx
leal (,%rdx,8), %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x8, %ecx
jl 0x2e3e8d
xorl %r9d, %r9d
leal 0x7(%r9), %r11d
testl %r9d, %r9d
cmovnsl %r9d, %r11d
movl %r11d, %r15d
sarl $0x3, %r15d
andl $-0x8, %r11d
movl %r9d, %r10d
subl %r11d, %r10d
imull %edx, %r10d
addl %r15d, %r10d
cmpl %r14d, %r10d
jge 0x2e3e85
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e3e4a
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e3e42
jmp 0x2e3ea1
callq 0x1f1dad
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
btl $0x14, %eax
jb 0x2e40bf
btl $0x15, %eax
jb 0x2e40f1
btl $0x16, %eax
jb 0x2e4117
btl $0x17, %eax
jae 0x2e416f
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e4362
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0x3(%r14), %ecx
leal 0x6(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
leaq (,%rsi,4), %r8
xorl %r9d, %r9d
cmpl $0x4, %ecx
jl 0x2e3f71
xorl %r10d, %r10d
leal 0x3(%r10), %r15d
testl %r10d, %r10d
cmovnsl %r10d, %r15d
movl %r15d, %r12d
sarl $0x2, %r12d
andl $-0x4, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e3f69
movl (%rbx,%r10,4), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e3f2f
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3f27
jmp 0x2e3ea1
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0x7(%r14), %ecx
leal 0xe(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x3, %edx
leal (,%rdx,8), %esi
movl %ebp, %edi
leaq (%rsi,%rsi), %r8
xorl %r9d, %r9d
cmpl $0x8, %ecx
jl 0x2e4007
xorl %r10d, %r10d
leal 0x7(%r10), %r15d
testl %r10d, %r10d
cmovnsl %r10d, %r15d
movl %r15d, %r12d
sarl $0x3, %r12d
andl $-0x8, %r15d
movl %r10d, %r11d
subl %r15d, %r11d
imull %edx, %r11d
addl %r12d, %r11d
cmpl %r14d, %r11d
jge 0x2e3fff
movswl (%rbx,%r10,2), %r15d
imull %ebp, %r11d
addl %r9d, %r11d
movslq %r11d, %r11
movl %r15d, (%rax,%r11,4)
incq %r10
cmpq %r10, %rsi
jne 0x2e3fc4
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3fbc
jmp 0x2e3ea1
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
leal 0xf(%r14), %ecx
leal 0x1e(%r14), %edx
testl %ecx, %ecx
cmovnsl %ecx, %edx
testl %ebp, %ebp
jle 0x2e3ea1
sarl $0x4, %edx
movl %edx, %esi
shll $0x4, %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x10, %ecx
jl 0x2e4097
xorl %r9d, %r9d
leal 0xf(%r9), %r11d
testl %r9d, %r9d
cmovnsl %r9d, %r11d
movl %r11d, %r15d
sarl $0x4, %r15d
andl $-0x10, %r11d
movl %r9d, %r10d
subl %r11d, %r10d
imull %edx, %r10d
addl %r15d, %r10d
cmpl %r14d, %r10d
jge 0x2e408f
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e4054
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e404c
jmp 0x2e3ea1
movl %r14d, %edi
movl %ebp, %esi
movl $0x8, %edx
jmp 0x2e412d
movl %r14d, %edi
movl %ebp, %esi
movl $0x10, %edx
jmp 0x2e4107
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
jmp 0x2e40d5
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e4183
movl %r14d, %edi
movl %ebp, %esi
movl $0x10, %edx
jmp 0x2e412d
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
jmp 0x2e4107
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e421f
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
jmp 0x2e412d
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e42bf
callq 0x1f1dd3
jmp 0x2e3e9f
callq 0x1f1eb7
jmp 0x2e3e9f
callq 0x1f1df9
jmp 0x2e3e9f
callq 0x1f1e1f
jmp 0x2e3e9f
callq 0x1f1e45
jmp 0x2e3e9f
callq 0x1f1e6b
jmp 0x2e3e9f
callq 0x1f1e91
jmp 0x2e3e9f