// File: /workspace/github_c_makefile_star2_O3/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 0x2e4149
btl $0x18, %eax
jb 0x2e433e
movq %rcx, %rbx
movl %esi, %ebp
movl %edi, %r14d
btl $0x19, %eax
jb 0x2e3de7
btl $0x1a, %eax
jb 0x2e3ea2
btl $0x1b, %eax
jb 0x2e3ff0
btl $0x1c, %eax
jb 0x2e4153
btl $0x1d, %eax
jb 0x2e434e
btl $0x1e, %eax
jae 0x2e45eb
btl $0x14, %eax
jb 0x2e456f
btl $0x15, %eax
jb 0x2e45a1
btl $0x16, %eax
jb 0x2e45c7
btl $0x17, %eax
jae 0x2e461d
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
jmp 0x2e4380
btl $0x14, %eax
jb 0x2e3f63
btl $0x15, %eax
jb 0x2e4027
btl $0x16, %eax
jb 0x2e418a
btl $0x17, %eax
jae 0x2e45e1
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %ebp, %ebp
jle 0x2e4345
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 0x2e3e92
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 0x2e3e8a
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 0x2e3e52
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3e4a
jmp 0x2e4345
btl $0x14, %eax
jb 0x2e40b7
btl $0x15, %eax
jb 0x2e421d
btl $0x16, %eax
jb 0x2e4390
btl $0x17, %eax
jae 0x2e45f5
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 0x2e4345
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
leaq (,%rsi,8), %r8
xorl %r9d, %r9d
cmpl $0x4, %ecx
jl 0x2e3f53
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 0x2e3f4b
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 0x2e3f11
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e3f09
jmp 0x2e4345
movslq %r14d, %rdi
movslq %ebp, %r15
imulq %r15, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %r15d, %r15d
jle 0x2e4345
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 0x2e3fe0
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 0x2e3fd8
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e3f9f
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e3f97
jmp 0x2e4345
btl $0x14, %eax
jb 0x2e42b3
btl $0x15, %eax
jb 0x2e4425
btl $0x16, %eax
jb 0x2e454b
btl $0x17, %eax
jae 0x2e45ff
movl %r14d, %edi
movl %ebp, %esi
movl $0x8, %edx
jmp 0x2e4380
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %ebp, %ebp
jle 0x2e4345
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 0x2e40a7
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 0x2e409f
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 0x2e4066
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e405e
jmp 0x2e4345
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 0x2e4345
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x4, %ecx
jl 0x2e4139
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 0x2e4131
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e40f6
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e40ee
jmp 0x2e4345
callq 0x1f1f38
jmp 0x2e4343
btl $0x14, %eax
jb 0x2e44bb
btl $0x15, %eax
jb 0x2e4557
btl $0x16, %eax
jb 0x2e4589
btl $0x17, %eax
jae 0x2e4609
movl %r14d, %edi
movl %ebp, %esi
movl $0x10, %edx
jmp 0x2e4380
movslq %r14d, %rax
movslq %ebp, %rdi
imulq %rax, %rdi
shlq $0x2, %rdi
callq 0x1f01f0
testl %ebp, %ebp
jle 0x2e4345
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 0x2e420d
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 0x2e4205
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 0x2e41cd
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e41c5
jmp 0x2e4345
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 0x2e4345
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
leaq (%rsi,%rsi), %r8
xorl %r9d, %r9d
cmpl $0x4, %ecx
jl 0x2e42a3
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 0x2e429b
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 0x2e4260
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e4258
jmp 0x2e4345
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 0x2e4345
sarl $0x3, %edx
leal (,%rdx,8), %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x8, %ecx
jl 0x2e4331
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 0x2e4329
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e42ee
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e42e6
jmp 0x2e4345
callq 0x1f1e08
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
btl $0x14, %eax
jb 0x2e4563
btl $0x15, %eax
jb 0x2e4595
btl $0x16, %eax
jb 0x2e45bb
btl $0x17, %eax
jae 0x2e4613
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e47fd
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 0x2e4345
sarl $0x2, %edx
leal (,%rdx,4), %esi
movl %ebp, %edi
leaq (,%rsi,4), %r8
xorl %r9d, %r9d
cmpl $0x4, %ecx
jl 0x2e4415
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 0x2e440d
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 0x2e43d3
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e43cb
jmp 0x2e4345
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 0x2e4345
sarl $0x3, %edx
leal (,%rdx,8), %esi
movl %ebp, %edi
leaq (%rsi,%rsi), %r8
xorl %r9d, %r9d
cmpl $0x8, %ecx
jl 0x2e44ab
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 0x2e44a3
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 0x2e4468
incq %r9
addq %r8, %rbx
cmpq %rdi, %r9
jne 0x2e4460
jmp 0x2e4345
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 0x2e4345
sarl $0x4, %edx
movl %edx, %esi
shll $0x4, %esi
movl %ebp, %edi
xorl %r8d, %r8d
cmpl $0x10, %ecx
jl 0x2e453b
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 0x2e4533
movsbl (%rbx,%r9), %r11d
imull %ebp, %r10d
addl %r8d, %r10d
movslq %r10d, %r10
movl %r11d, (%rax,%r10,4)
incq %r9
cmpq %r9, %rsi
jne 0x2e44f8
incq %r8
addq %rsi, %rbx
cmpq %rdi, %r8
jne 0x2e44f0
jmp 0x2e4345
movl %r14d, %edi
movl %ebp, %esi
movl $0x8, %edx
jmp 0x2e45d1
movl %r14d, %edi
movl %ebp, %esi
movl $0x10, %edx
jmp 0x2e45ab
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
jmp 0x2e4579
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e4627
movl %r14d, %edi
movl %ebp, %esi
movl $0x10, %edx
jmp 0x2e45d1
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
jmp 0x2e45ab
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e46c0
movl %r14d, %edi
movl %ebp, %esi
movl $0x20, %edx
jmp 0x2e45d1
movl %r14d, %edi
movl %ebp, %esi
movl $0x40, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2e475d
callq 0x1f1e2e
jmp 0x2e4343
callq 0x1f1f12
jmp 0x2e4343
callq 0x1f1e54
jmp 0x2e4343
callq 0x1f1e7a
jmp 0x2e4343
callq 0x1f1ea0
jmp 0x2e4343
callq 0x1f1ec6
jmp 0x2e4343
callq 0x1f1eec
jmp 0x2e4343