// File: /workspace/github_c_makefile_star2_O3/nh13[P]ksw/src/parasail/src/sw_stats_striped_sse2_128_64.c
// Function: parasail_sw_stats_striped_profile_sse2_128_64
parasail_result_t* INAME(
        const parasail_profile_t * const restrict profile,
        const char * const restrict s2, const int s2Len,
        const int open, const int gap)
{
    const char *s1 = profile->s1;
    const parasail_matrix_t *matrix = profile->matrix;

    /* find the end loc first with the faster implementation */
    parasail_result_t *result = parasail_sw_striped_profile_sse2_128_64(profile, s2, s2Len, open, gap);
    if (!parasail_result_is_saturated(result)) {
#if 0
        int s1Len_new = 0;
        int s2Len_new = 0;
        char *s1_new = NULL;
        char *s2_new = NULL;
        parasail_profile_t *profile_new = NULL;
        parasail_result_t *result_new = NULL;
        int s1_begin = 0;
        int s2_begin = 0;
        int s1Len_final = 0;
        int s2Len_final = 0;
        parasail_profile_t *profile_final = NULL;
        parasail_result_t *result_final = NULL;

        /* using the end loc and the non-stats version of the function,
         * reverse the inputs and find the beg loc */
        s1Len_new = result->end_query+1;
        s2Len_new = result->end_ref+1;
        s1_new = parasail_reverse(s1, s1Len_new);
        s2_new = parasail_reverse(s2, s2Len_new);
        profile_new = parasail_profile_create_sse_128_64(
                s1_new, s1Len_new, matrix);
        profile_new->stop = result->score;
        result_new = parasail_sw_striped_profile_sse2_128_64(
                profile_new, s2_new, s2Len_new, open, gap);

        /* using both the beg and end loc, call the original stats func */
        s1_begin = s1Len_new - result_new->end_query - 1;
        s2_begin = s2Len_new - result_new->end_ref - 1;
        s1Len_final = s1Len_new - s1_begin;
        s2Len_final = s2Len_new - s2_begin;
        assert(s1_begin >= 0);
        assert(s2_begin >= 0);
        assert(s1Len_new > s1_begin);
        assert(s2Len_new > s2_begin);
        profile_final = parasail_profile_create_stats_sse_128_64(
                &s1[s1_begin], s1Len_final, matrix);
        result_final = PNAME(
                profile_final, &s2[s2_begin], s2Len_final, open, gap);

        /* clean up all the temporary profiles, sequences, and results */
        free(s1_new);
        free(s2_new);
        parasail_profile_free(profile_new);
        parasail_profile_free(profile_final);
        parasail_result_free(result);
        parasail_result_free(result_new);

        /* correct the end locations before returning */
        result_final->end_query = s1Len_new-1;
        result_final->end_ref = s2Len_new-1;
        return result_final;
#else
        int s1Len_new = 0;
        int s2Len_new = 0;
        parasail_profile_t *profile_final = NULL;
        parasail_result_t *result_final = NULL;

        /* using the end loc, call the original stats function */
        s1Len_new = result->end_query+1;
        s2Len_new = result->end_ref+1;
        profile_final = parasail_profile_create_stats_sse_128_64(
                s1, s1Len_new, matrix);
        result_final = PNAME(
                profile_final, s2, s2Len_new, open, gap);

        /* clean up all the temporary profiles, sequences, and results */
        parasail_profile_free(profile_final);
        parasail_result_free(result);

        /* correct the end locations before returning */
        result_final->end_query = s1Len_new-1;
        result_final->end_ref = s2Len_new-1;
        return result_final;
#endif
    }
    else {
        return result;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movl %r8d, %r13d
movl %ecx, %ebp
movq %rsi, %r12
movq (%rdi), %r14
movq 0x10(%rdi), %rbx
callq 0x2c0c0e
movq %rax, %r15
movq %rax, %rdi
callq 0x20be2e
testl %eax, %eax
jne 0x2eb0a8
movl 0x4(%r15), %eax
movl 0x8(%r15), %ecx
movq %rcx, 0xe0(%rsp)
movq %rax, 0x140(%rsp)
leal 0x1(%rax), %esi
movq %r14, %rdi
movq %rbx, %rdx
callq 0x2f6e7f
testq %rax, %rax
movq %rax, 0x128(%rsp)
je 0x2ead83
movq 0x60(%rax), %rcx
movq %rcx, 0x170(%rsp)
testq %rcx, %rcx
je 0x2eae0e
movq 0x10(%rax), %rcx
movq %rcx, 0x130(%rsp)
testq %rcx, %rcx
je 0x2eae7f
movl 0x8(%rax), %ecx
testl %ecx, %ecx
jle 0x2eae86
testq %r12, %r12
je 0x2eae8d
cmpl $0x0, 0xe0(%rsp)
js 0x2eae94
testl %ebp, %ebp
js 0x2eae9b
testl %r13d, %r13d
js 0x2eaea2
movq %rcx, 0xd0(%rsp)
movq 0x128(%rsp), %rax
movq 0x68(%rax), %rcx
movq %rcx, 0x168(%rsp)
movq 0x70(%rax), %rax
movq %rax, 0x160(%rsp)
movq 0x130(%rsp), %rax
movslq 0x1c(%rax), %rax
movq %rax, 0xd8(%rsp)
xorl %eax, %eax
callq 0x20ab95
testq %rax, %rax
je 0x2eaea7
movl %r13d, 0x60(%rsp)
movl %ebp, 0xf0(%rsp)
movq %r12, 0x158(%rsp)
movq %r15, 0x120(%rsp)
movq 0xd0(%rsp), %rcx
leaq 0x1(%rcx), %r13
movq %r13, 0x110(%rsp)
shrq %r13
orl $0x2810804, 0xc(%rax)   # imm = 0x2810804
movq %rax, 0xc8(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x10(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, %r12
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, %rbp
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0xb0(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x20(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x100(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x18(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x40(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x50(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x98(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x90(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, 0x88(%rsp)
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, %rbx
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, %r15
movl $0x10, %edi
movq %r13, %rsi
callq 0x2f600c
movq %rax, %r14
movl $0x10, %edi
movq %r13, 0x78(%rsp)
movq %r13, %rsi
callq 0x2f600c
movq %rbx, %r9
movq %r15, %rbx
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
movq 0x18(%rsp), %r8
movq 0x98(%rsp), %rdx
movq 0x50(%rsp), %r11
movq 0x20(%rsp), %rcx
movq 0x10(%rsp), %xmm8
movq %r12, %xmm0
punpcklqdq %xmm0, %xmm8    # xmm8 = xmm8[0],xmm0[0]
movq %rbp, %xmm7
movq 0xb0(%rsp), %r10
movq %r10, %r13
movq %r10, %xmm0
punpcklqdq %xmm0, %xmm7    # xmm7 = xmm7[0],xmm0[0]
movq %rcx, %xmm6
movq 0x100(%rsp), %r10
movq %r10, %r15
movq %r10, %xmm0
punpcklqdq %xmm0, %xmm6    # xmm6 = xmm6[0],xmm0[0]
movq %r8, %xmm5
movq 0x40(%rsp), %xmm0
punpcklqdq %xmm0, %xmm5    # xmm5 = xmm5[0],xmm0[0]
movq %r11, %xmm4
movq %rdx, %xmm0
punpcklqdq %xmm0, %xmm4    # xmm4 = xmm4[0],xmm0[0]
movq %rsi, %xmm3
movq %rdi, %xmm0
punpcklqdq %xmm0, %xmm3    # xmm3 = xmm3[0],xmm0[0]
movq %r9, %xmm2
movq %rbx, %xmm0
punpcklqdq %xmm0, %xmm2    # xmm2 = xmm2[0],xmm0[0]
movq %r14, %xmm1
movq %rax, %xmm0
punpcklqdq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0]
pxor %xmm9, %xmm9
pcmpeqd %xmm9, %xmm8
pshufd $0xb1, %xmm8, %xmm0     # xmm0 = xmm8[1,0,3,2]
pand %xmm8, %xmm0
pcmpeqd %xmm9, %xmm7
pshufd $0xb1, %xmm7, %xmm8     # xmm8 = xmm7[1,0,3,2]
pand %xmm7, %xmm8
packssdw %xmm8, %xmm0
pcmpeqd %xmm9, %xmm6
pshufd $0xb1, %xmm6, %xmm7     # xmm7 = xmm6[1,0,3,2]
pand %xmm6, %xmm7
pcmpeqd %xmm9, %xmm5
pshufd $0xb1, %xmm5, %xmm6     # xmm6 = xmm5[1,0,3,2]
pand %xmm5, %xmm6
packssdw %xmm6, %xmm7
packssdw %xmm7, %xmm0
pcmpeqd %xmm9, %xmm4
pshufd $0xb1, %xmm4, %xmm5     # xmm5 = xmm4[1,0,3,2]
pand %xmm4, %xmm5
pcmpeqd %xmm9, %xmm3
pshufd $0xb1, %xmm3, %xmm4     # xmm4 = xmm3[1,0,3,2]
pand %xmm3, %xmm4
packssdw %xmm4, %xmm5
pcmpeqd %xmm9, %xmm2
pshufd $0xb1, %xmm2, %xmm3     # xmm3 = xmm2[1,0,3,2]
pand %xmm2, %xmm3
pcmpeqd %xmm9, %xmm1
pshufd $0xb1, %xmm1, %xmm2     # xmm2 = xmm1[1,0,3,2]
pand %xmm1, %xmm2
packssdw %xmm2, %xmm3
packssdw %xmm3, %xmm5
packsswb %xmm5, %xmm0
pmovmskb %xmm0, %r10d
testl %r10d, %r10d
je 0x2ea0b7
xorl %ebx, %ebx
jmp 0x2eb072
pxor %xmm0, %xmm0
movdqa %xmm0, 0xa0(%rsp)
movq %rax, 0x30(%rsp)
movq %r14, 0x38(%rsp)
movq %rbx, 0x48(%rsp)
movq 0xe0(%rsp), %rax
incl %eax
movl %eax, 0x5c(%rsp)
movabsq $0x7fffffffffffffff, %r10 # imm = 0x7FFFFFFFFFFFFFFF
movl 0xf0(%rsp), %ebx
movd %ebx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, 0x1c0(%rsp)
movd 0x60(%rsp), %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movdqa %xmm0, 0x60(%rsp)
movq 0xd8(%rsp), %rax
notq %rax
addq %r10, %rax
movq %rax, 0xd8(%rsp)
pxor %xmm0, %xmm0
movq 0x10(%rsp), %rdi
movq 0x78(%rsp), %r14
movq %r14, %rsi
movq %r9, 0x8(%rsp)
callq 0x2f6015
pxor %xmm0, %xmm0
movq %rbp, %rdi
movq %r14, %rsi
callq 0x2f6015
pxor %xmm0, %xmm0
movq 0x20(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6015
pxor %xmm0, %xmm0
movq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6015
negl %ebx
movslq %ebx, %rax
movq %rax, 0x178(%rsp)
movq %rax, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
movq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6015
pxor %xmm0, %xmm0
movq 0x98(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6015
pxor %xmm0, %xmm0
movq 0x90(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6015
movdqa 0x33ff55(%rip), %xmm0   # 0x62a120
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0x2f6015
movq 0x8(%rsp), %r11
movq 0x18(%rsp), %r8
movq 0x20(%rsp), %rsi
leal -0x1(%r14), %eax
movl 0x5c(%rsp), %ecx
movq %rcx, 0x148(%rsp)
movq %r14, %rdx
shlq $0x4, %rdx
shlq $0x4, %rax
movq %rax, 0x150(%rsp)
xorl %ecx, %ecx
movl $0x0, 0x4(%rsp)
movabsq $-0x4000000000000000, %rax # imm = 0xC000000000000000
movq %rax, 0x118(%rsp)
movq %rax, 0x28(%rsp)
pxor %xmm5, %xmm5
pxor %xmm15, %xmm15
movq 0x40(%rsp), %rbx
movq %r14, %r9
movq %rdx, 0x138(%rsp)
movq %r11, 0x8(%rsp)
movdqa %xmm15, 0xb0(%rsp)
movdqa %xmm5, 0x1d0(%rsp)
movq %rcx, %rax
movq 0x30(%rsp), %rcx
movq %rcx, 0xf0(%rsp)
movq 0x48(%rsp), %r11
movq %r11, 0x100(%rsp)
movq %rbx, %rdi
movq %r8, %rbx
movq %rsi, %r14
movq %r13, %r10
movq %rbp, %r13
movq 0x130(%rsp), %rsi
movq 0x10(%rsi), %rsi
movq 0x158(%rsp), %r8
movzbl (%r8,%rax), %r8d
movl (%rsi,%r8,4), %esi
imull %r9d, %esi
movslq %esi, %r8
shlq $0x4, %r8
movq 0x170(%rsp), %rsi
leaq (%rsi,%r8), %r9
movq 0x168(%rsp), %rsi
addq %r8, %rsi
movq %rsi, 0x198(%rsp)
addq 0x160(%rsp), %r8
movq %r8, 0x1a0(%rsp)
movq %rax, 0x80(%rsp)
addl $-0x2, %eax
movl %eax, 0xec(%rsp)
cmpl %eax, 0x4(%rsp)
cmoveq %rdi, %rcx
movq %rcx, 0x30(%rsp)
cmoveq %r10, %r11
movq %r11, 0x48(%rsp)
movq %r12, %r11
movq %rdi, %r8
cmoveq 0xf0(%rsp), %r8
movq 0x10(%rsp), %r12
movq %r15, 0x188(%rsp)
movq %r15, %rsi
cmoveq 0x38(%rsp), %rsi
movq 0x150(%rsp), %rax
leaq (%r12,%rax), %rcx
movq %rcx, 0x190(%rsp)
movq %r10, %rbp
cmoveq 0x100(%rsp), %rbp
movq %r11, 0x180(%rsp)
cmoveq 0x8(%rsp), %r11
movq %r11, 0x10(%rsp)
movdqa (%rbx,%rax), %xmm10
pslldq $0x8, %xmm10            # xmm10 = zero,zero,zero,zero,zero,zero,zero,zero,xmm10[0,1,2,3,4,5,6,7]
movq %r14, %r15
movdqa (%r14,%rax), %xmm0
pslldq $0x8, %xmm0             # xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7]
movdqa (%r13,%rax), %xmm13
pslldq $0x8, %xmm13            # xmm13 = zero,zero,zero,zero,zero,zero,zero,zero,xmm13[0,1,2,3,4,5,6,7]
movdqa (%r12,%rax), %xmm1
pslldq $0x8, %xmm1             # xmm1 = zero,zero,zero,zero,zero,zero,zero,zero,xmm1[0,1,2,3,4,5,6,7]
pxor %xmm5, %xmm5
movdqa 0x33fd7f(%rip), %xmm8   # 0x62a120
pxor %xmm6, %xmm6
pxor %xmm7, %xmm7
xorl %edi, %edi
movdqa 0xa0(%rsp), %xmm14
movq %r12, 0x1b8(%rsp)
movq %rbp, 0x1b0(%rsp)
movq %rbx, 0x40(%rsp)
movq %rsi, 0x20(%rsp)
movq %r8, 0x18(%rsp)
movq %r9, 0x1a8(%rsp)
movdqa %xmm5, 0x1e0(%rsp)
movdqa %xmm6, 0xa0(%rsp)
paddq (%r9,%rdi), %xmm1
movq %xmm1, %rdx
testq %rdx, %rdx
movl $0x0, %eax
cmovleq %rax, %rdx
pshufd $0xee, %xmm1, %xmm1     # xmm1 = xmm1[2,3,2,3]
movq %xmm1, %r12
testq %r12, %r12
cmovleq %rax, %r12
movq 0x50(%rsp), %rax
movq (%rax,%rdi), %rcx
movq 0x8(%rax,%rdi), %r11
cmpq %rcx, %rdx
cmovgq %rdx, %rcx
cmpq %r11, %r12
cmovgq %r12, %r11
movq %xmm7, %rax
cmpq %rax, %rcx
movq %rax, %r10
cmovgq %rcx, %r10
pshufd $0xee, %xmm7, %xmm1     # xmm1 = xmm7[2,3,2,3]
movq %xmm1, %r8
cmpq %r8, %r11
movq %r8, %rbx
cmovgq %r11, %rbx
cmpq $0x1, %r10
movl $0x0, %ebp
sbbq %rbp, %rbp
cmpq $0x1, %rbx
movl $0x0, %r14d
sbbq %r14, %r14
movq %r15, %rsi
movq %r13, %r15
xorl %r13d, %r13d
cmpq %rdx, %r10
sete %r13b
negq %r13
xorl %edx, %edx
cmpq %r12, %rbx
sete %dl
negq %rdx
xorl %r12d, %r12d
cmpq %rcx, %rax
setge %r12b
negq %r12
xorl %eax, %eax
cmpq %r11, %r8
movq %rbp, %xmm9
movq 0x1b0(%rsp), %rbp
movq %r14, %xmm2
movq 0x10(%rsp), %r8
movq 0x1a8(%rsp), %r9
movq %r13, %xmm4
movq %rsi, %r14
movq %rdx, %xmm3
movq %r12, %xmm15
movq 0x1b8(%rsp), %r12
movq %r10, %xmm11
movq %rbx, %xmm12
punpcklqdq %xmm12, %xmm11  # xmm11 = xmm11[0],xmm12[0]
movq 0x98(%rsp), %rcx
movdqa (%rcx,%rdi), %xmm1
movdqa %xmm1, 0x100(%rsp)
punpcklqdq %xmm2, %xmm9    # xmm9 = xmm9[0],xmm2[0]
punpcklqdq %xmm3, %xmm4    # xmm4 = xmm4[0],xmm3[0]
setge %al
negq %rax
movq %rax, %xmm2
punpcklqdq %xmm2, %xmm15   # xmm15 = xmm15[0],xmm2[0]
movdqa %xmm15, %xmm2
pandn %xmm1, %xmm2
movdqa %xmm15, %xmm12
pand %xmm6, %xmm12
por %xmm2, %xmm12
movq 0x50(%rsp), %r13
movdqa (%r13,%rdi), %xmm3
movq 0x90(%rsp), %rdx
movdqa (%rdx,%rdi), %xmm6
movq 0x88(%rsp), %r11
movdqa (%r11,%rdi), %xmm2
movdqa %xmm2, 0xf0(%rsp)
movdqa %xmm11, (%r8,%rdi)
movq 0x198(%rsp), %rax
paddq (%rax,%rdi), %xmm13
movdqa %xmm4, %xmm1
pandn %xmm12, %xmm1
pand %xmm4, %xmm13
por %xmm1, %xmm13
movdqa %xmm9, %xmm12
pandn %xmm13, %xmm12
movdqa %xmm15, %xmm1
pandn %xmm6, %xmm1
movdqa %xmm15, %xmm13
pand %xmm5, %xmm13
por %xmm1, %xmm13
movdqa %xmm4, %xmm1
pandn %xmm13, %xmm1
movdqa %xmm12, (%rbp,%rdi)
movq 0x1a0(%rsp), %rax
paddq (%rax,%rdi), %xmm0
pand %xmm4, %xmm0
por %xmm1, %xmm0
movdqa %xmm9, %xmm13
pandn %xmm0, %xmm13
movdqa %xmm15, %xmm0
pandn %xmm2, %xmm0
pand %xmm8, %xmm15
por %xmm0, %xmm15
movdqa 0xb0(%rsp), %xmm0
movq %xmm0, %rax
cmpq %rax, %r10
cmovleq %rax, %r10
pshufd $0xee, %xmm0, %xmm0     # xmm0 = xmm0[2,3,2,3]
movq %xmm0, %rax
cmpq %rax, %rbx
cmovleq %rax, %rbx
pcmpeqd %xmm0, %xmm0
psubq %xmm0, %xmm10
pand %xmm4, %xmm10
pandn %xmm15, %xmm4
por %xmm4, %xmm10
pandn %xmm10, %xmm9
movdqa %xmm12, %xmm0
movdqa 0x33f358(%rip), %xmm2   # 0x629990
pxor %xmm2, %xmm0
movdqa %xmm14, %xmm1
pxor %xmm2, %xmm1
movdqa %xmm1, %xmm4
pcmpgtd %xmm0, %xmm4
pcmpeqd %xmm0, %xmm1
pshufd $0xa0, %xmm4, %xmm0     # xmm0 = xmm4[0,0,2,2]
pshufd $0xf5, %xmm1, %xmm1     # xmm1 = xmm1[1,1,3,3]
pand %xmm0, %xmm1
pshufd $0xf5, %xmm4, %xmm0     # xmm0 = xmm4[1,1,3,3]
por %xmm1, %xmm0
pand %xmm0, %xmm14
pandn %xmm12, %xmm0
por %xmm14, %xmm0
movdqa %xmm0, %xmm1
pxor %xmm2, %xmm1
movdqa %xmm13, %xmm4
pxor %xmm2, %xmm4
movdqa %xmm1, %xmm10
pcmpgtd %xmm4, %xmm10
pcmpeqd %xmm1, %xmm4
pshufd $0xa0, %xmm10, %xmm1    # xmm1 = xmm10[0,0,2,2]
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pand %xmm1, %xmm4
pshufd $0xf5, %xmm10, %xmm1    # xmm1 = xmm10[1,1,3,3]
por %xmm4, %xmm1
pand %xmm1, %xmm0
pandn %xmm13, %xmm1
por %xmm0, %xmm1
movdqa %xmm1, %xmm0
pxor %xmm2, %xmm0
movdqa %xmm9, %xmm4
pxor %xmm2, %xmm4
movdqa %xmm0, %xmm10
pcmpgtd %xmm4, %xmm10
pcmpeqd %xmm0, %xmm4
pshufd $0xa0, %xmm10, %xmm0    # xmm0 = xmm10[0,0,2,2]
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
pand %xmm0, %xmm4
movq %r10, %xmm15
movq 0x18(%rsp), %r8
movq 0x20(%rsp), %rsi
pshufd $0xf5, %xmm10, %xmm14   # xmm14 = xmm10[1,1,3,3]
por %xmm4, %xmm14
movq %rbx, %xmm0
movq 0x40(%rsp), %rbx
pand %xmm14, %xmm1
pandn %xmm9, %xmm14
por %xmm1, %xmm14
punpcklqdq %xmm0, %xmm15   # xmm15 = xmm15[0],xmm0[0]
movdqa %xmm15, 0xb0(%rsp)
psubq 0x1c0(%rsp), %xmm11
psubq 0x60(%rsp), %xmm3
movdqa %xmm3, %xmm1
pxor %xmm2, %xmm1
movdqa %xmm11, %xmm0
pxor %xmm2, %xmm0
movdqa %xmm0, %xmm4
pcmpgtd %xmm1, %xmm4
pcmpeqd %xmm0, %xmm1
pshufd $0xf5, %xmm1, %xmm10    # xmm10 = xmm1[1,1,3,3]
pshufd $0xa0, %xmm4, %xmm1     # xmm1 = xmm4[0,0,2,2]
pand %xmm1, %xmm10
pshufd $0xf5, %xmm4, %xmm1     # xmm1 = xmm4[1,1,3,3]
por %xmm10, %xmm1
movdqa %xmm1, %xmm4
pandn %xmm3, %xmm4
movdqa %xmm11, %xmm3
pand %xmm1, %xmm3
por %xmm4, %xmm3
movdqa %xmm1, %xmm4
pandn 0x100(%rsp), %xmm4
movdqa %xmm12, %xmm10
pand %xmm1, %xmm10
por %xmm10, %xmm4
movdqa %xmm1, %xmm10
pandn %xmm6, %xmm10
movdqa %xmm13, %xmm15
pand %xmm1, %xmm15
por %xmm15, %xmm10
movdqa %xmm13, (%rsi,%rdi)
movdqa %xmm9, (%r8,%rdi)
movdqa 0xf0(%rsp), %xmm5
pcmpeqd %xmm6, %xmm6
psubq %xmm6, %xmm5
psubq %xmm6, %xmm9
movdqa %xmm9, %xmm15
pand %xmm1, %xmm15
pandn %xmm5, %xmm1
por %xmm15, %xmm1
movdqa %xmm3, (%r13,%rdi)
movdqa %xmm4, (%rcx,%rdi)
movdqa %xmm10, (%rdx,%rdi)
movdqa %xmm1, (%r11,%rdi)
psubq 0x60(%rsp), %xmm7
movdqa %xmm7, %xmm1
pxor %xmm2, %xmm1
movdqa %xmm0, %xmm2
pcmpgtd %xmm1, %xmm2
pcmpeqd %xmm0, %xmm1
pshufd $0xa0, %xmm2, %xmm0     # xmm0 = xmm2[0,0,2,2]
pshufd $0xf5, %xmm1, %xmm1     # xmm1 = xmm1[1,1,3,3]
pand %xmm0, %xmm1
pshufd $0xf5, %xmm2, %xmm0     # xmm0 = xmm2[1,1,3,3]
por %xmm1, %xmm0
movdqa %xmm0, %xmm1
pandn %xmm7, %xmm1
pand %xmm0, %xmm11
movdqa %xmm11, %xmm7
por %xmm1, %xmm7
movdqa %xmm0, %xmm1
pandn 0xa0(%rsp), %xmm1
pand %xmm0, %xmm12
movdqa %xmm1, %xmm6
por %xmm12, %xmm6
pand %xmm0, %xmm13
movdqa %xmm0, %xmm1
pandn 0x1e0(%rsp), %xmm1
movdqa %xmm1, %xmm5
por %xmm13, %xmm5
psubq 0x33f510(%rip), %xmm8   # 0x629da0
pand %xmm0, %xmm9
pandn %xmm8, %xmm0
movdqa %xmm0, %xmm8
por %xmm9, %xmm8
movdqa (%r12,%rdi), %xmm1
movq %r15, %r13
movdqa (%r15,%rdi), %xmm13
movq %r14, %r15
movdqa (%r14,%rdi), %xmm0
movdqa (%rbx,%rdi), %xmm10
addq $0x10, %rdi
cmpq %rdi, 0x138(%rsp)
jne 0x2ea3dc
movdqa 0xb0(%rsp), %xmm15
movl 0xec(%rsp), %eax
cmpl %eax, 0x4(%rsp)
movq 0x38(%rsp), %rax
cmoveq 0x188(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x8(%rsp), %r11
cmoveq 0x180(%rsp), %r11
movb $0x1, %cl
movq 0x138(%rsp), %rdx
movq 0x190(%rsp), %r10
movq 0x33fa2c(%rip), %xmm1   # 0x62a350
punpcklqdq %xmm8, %xmm1    # xmm1 = xmm1[0],xmm8[0]
pslldq $0x8, %xmm5             # xmm5 = zero,zero,zero,zero,zero,zero,zero,zero,xmm5[0,1,2,3,4,5,6,7]
pslldq $0x8, %xmm6             # xmm6 = zero,zero,zero,zero,zero,zero,zero,zero,xmm6[0,1,2,3,4,5,6,7]
movq 0x178(%rsp), %xmm2
punpcklqdq %xmm7, %xmm2    # xmm2 = xmm2[0],xmm7[0]
movdqa (%r10), %xmm0
pslldq $0x8, %xmm0             # xmm0 = zero,zero,zero,zero,zero,zero,zero,zero,xmm0[0,1,2,3,4,5,6,7]
xorl %edi, %edi
movdqa %xmm1, %xmm8
movdqa %xmm2, %xmm7
paddq (%r9,%rdi), %xmm0
movq 0x10(%rsp), %rax
movdqa (%rax,%rdi), %xmm9
movdqa %xmm7, %xmm1
movdqa 0x33f01d(%rip), %xmm13  # 0x629990
pxor %xmm13, %xmm1
movdqa %xmm9, %xmm2
pxor %xmm13, %xmm2
movdqa %xmm2, %xmm3
pcmpgtd %xmm1, %xmm3
pshufd $0xa0, %xmm3, %xmm4     # xmm4 = xmm3[0,0,2,2]
pcmpeqd %xmm1, %xmm2
pshufd $0xf5, %xmm2, %xmm1     # xmm1 = xmm2[1,1,3,3]
pand %xmm4, %xmm1
pshufd $0xf5, %xmm3, %xmm3     # xmm3 = xmm3[1,1,3,3]
por %xmm1, %xmm3
movdqa %xmm3, %xmm1
pandn %xmm7, %xmm1
pand %xmm3, %xmm9
por %xmm1, %xmm9
movdqa %xmm9, (%rax,%rdi)
movdqa %xmm0, %xmm1
pxor %xmm13, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm13, %xmm2
pshufd $0xa0, %xmm2, %xmm4     # xmm4 = xmm2[0,0,2,2]
pcmpeqd %xmm13, %xmm1
pshufd $0xf5, %xmm1, %xmm1     # xmm1 = xmm1[1,1,3,3]
pand %xmm4, %xmm1
pshufd $0xf5, %xmm2, %xmm4     # xmm4 = xmm2[1,1,3,3]
por %xmm1, %xmm4
pand %xmm0, %xmm4
pcmpeqd %xmm9, %xmm4
pshufd $0xb1, %xmm4, %xmm2     # xmm2 = xmm4[1,0,3,2]
pand %xmm4, %xmm2
por %xmm3, %xmm2
movdqa (%rbp,%rdi), %xmm1
pand %xmm2, %xmm1
movdqa %xmm2, %xmm0
pandn %xmm6, %xmm0
por %xmm1, %xmm0
movdqa %xmm0, (%rbp,%rdi)
movdqa (%rsi,%rdi), %xmm1
pand %xmm2, %xmm1
movdqa %xmm2, %xmm3
pandn %xmm5, %xmm3
por %xmm1, %xmm3
movdqa %xmm3, (%rsi,%rdi)
movdqa (%r8,%rdi), %xmm1
pand %xmm2, %xmm1
pandn %xmm8, %xmm2
por %xmm1, %xmm2
movdqa %xmm0, %xmm1
pxor %xmm13, %xmm1
movdqa %xmm14, %xmm4
pxor %xmm13, %xmm4
movdqa %xmm4, %xmm10
pcmpgtd %xmm1, %xmm10
pshufd $0xa0, %xmm10, %xmm11   # xmm11 = xmm10[0,0,2,2]
pcmpeqd %xmm1, %xmm4
pshufd $0xf5, %xmm4, %xmm1     # xmm1 = xmm4[1,1,3,3]
pand %xmm11, %xmm1
pshufd $0xf5, %xmm10, %xmm4    # xmm4 = xmm10[1,1,3,3]
por %xmm1, %xmm4
pand %xmm4, %xmm14
pandn %xmm0, %xmm4
por %xmm14, %xmm4
movdqa %xmm4, %xmm1
pxor %xmm13, %xmm1
movdqa %xmm3, %xmm10
pxor %xmm13, %xmm10
movdqa %xmm1, %xmm11
pcmpgtd %xmm10, %xmm11
pshufd $0xa0, %xmm11, %xmm12   # xmm12 = xmm11[0,0,2,2]
pcmpeqd %xmm1, %xmm10
pshufd $0xf5, %xmm10, %xmm1    # xmm1 = xmm10[1,1,3,3]
pand %xmm12, %xmm1
pshufd $0xf5, %xmm11, %xmm10   # xmm10 = xmm11[1,1,3,3]
por %xmm1, %xmm10
pand %xmm10, %xmm4
pandn %xmm3, %xmm10
por %xmm4, %xmm10
movdqa %xmm10, %xmm1
pxor %xmm13, %xmm1
movdqa %xmm2, %xmm4
pxor %xmm13, %xmm4
movdqa %xmm1, %xmm11
pcmpgtd %xmm4, %xmm11
pshufd $0xa0, %xmm11, %xmm12   # xmm12 = xmm11[0,0,2,2]
pcmpeqd %xmm1, %xmm4
pshufd $0xf5, %xmm4, %xmm1     # xmm1 = xmm4[1,1,3,3]
pand %xmm12, %xmm1
pshufd $0xf5, %xmm11, %xmm14   # xmm14 = xmm11[1,1,3,3]
por %xmm1, %xmm14
pand %xmm14, %xmm10
pandn %xmm2, %xmm14
por %xmm10, %xmm14
movdqa %xmm9, %xmm1
pxor %xmm13, %xmm1
movdqa %xmm15, %xmm4
pxor %xmm13, %xmm4
movdqa %xmm1, %xmm10
pcmpgtd %xmm4, %xmm10
pshufd $0xa0, %xmm10, %xmm11   # xmm11 = xmm10[0,0,2,2]
pcmpeqd %xmm1, %xmm4
pshufd $0xf5, %xmm4, %xmm1     # xmm1 = xmm4[1,1,3,3]
pand %xmm11, %xmm1
pshufd $0xf5, %xmm10, %xmm4    # xmm4 = xmm10[1,1,3,3]
por %xmm1, %xmm4
movdqa %xmm9, %xmm1
pand %xmm4, %xmm1
pandn %xmm15, %xmm4
movdqa %xmm4, %xmm15
por %xmm1, %xmm15
psubq 0x1c0(%rsp), %xmm9
psubq 0x60(%rsp), %xmm7
movdqa %xmm7, %xmm1
pxor %xmm13, %xmm1
movdqa %xmm1, %xmm4
pcmpgtd %xmm13, %xmm4
pshufd $0xa0, %xmm4, %xmm10    # xmm10 = xmm4[0,0,2,2]
movdqa %xmm1, %xmm11
pcmpeqd %xmm13, %xmm11
pshufd $0xf5, %xmm11, %xmm11   # xmm11 = xmm11[1,1,3,3]
pand %xmm10, %xmm11
movdqa %xmm7, %xmm10
pcmpeqd %xmm9, %xmm10
pxor %xmm13, %xmm9
pshufd $0xf5, %xmm4, %xmm4     # xmm4 = xmm4[1,1,3,3]
por %xmm11, %xmm4
movdqa %xmm1, %xmm11
pcmpgtd %xmm9, %xmm11
pand %xmm10, %xmm4
pshufd $0xb1, %xmm10, %xmm10   # xmm10 = xmm10[1,0,3,2]
pand %xmm10, %xmm4
pshufd $0xa0, %xmm11, %xmm12   # xmm12 = xmm11[0,0,2,2]
pshufd $0xf5, %xmm11, %xmm10   # xmm10 = xmm11[1,1,3,3]
por %xmm10, %xmm4
movdqa %xmm1, %xmm10
pcmpeqd %xmm9, %xmm10
pshufd $0xf5, %xmm10, %xmm10   # xmm10 = xmm10[1,1,3,3]
pand %xmm10, %xmm12
por %xmm12, %xmm4
pmovmskb %xmm4, %eax
movdqa %xmm2, (%r8,%rdi)
testl %eax, %eax
je 0x2eaca7
pcmpgtd %xmm1, %xmm9
pshufd $0xa0, %xmm9, %xmm1     # xmm1 = xmm9[0,0,2,2]
pand %xmm1, %xmm10
pshufd $0xf5, %xmm9, %xmm1     # xmm1 = xmm9[1,1,3,3]
por %xmm10, %xmm1
movdqa %xmm1, %xmm4
pandn %xmm6, %xmm4
pand %xmm1, %xmm0
movdqa %xmm0, %xmm6
por %xmm4, %xmm6
movdqa %xmm1, %xmm0
pandn %xmm5, %xmm0
pand %xmm1, %xmm3
movdqa %xmm3, %xmm5
por %xmm0, %xmm5
pand %xmm1, %xmm2
pandn %xmm8, %xmm1
por %xmm2, %xmm1
movdqa %xmm1, %xmm8
psubq 0x33f11a(%rip), %xmm8   # 0x629da0
movdqa (%r12,%rdi), %xmm0
addq $0x10, %rdi
cmpq %rdi, %rdx
jne 0x2ea955
testb $0x1, %cl
movl $0x0, %ecx
jne 0x2ea91c
movdqa 0x1d0(%rsp), %xmm5
movdqa %xmm5, %xmm0
movdqa 0x33ecd4(%rip), %xmm4   # 0x629990
pxor %xmm4, %xmm0
movdqa %xmm15, %xmm1
pxor %xmm4, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm0, %xmm2
pshufd $0xa0, %xmm2, %xmm3     # xmm3 = xmm2[0,0,2,2]
pcmpeqd %xmm0, %xmm1
pshufd $0xf5, %xmm1, %xmm0     # xmm0 = xmm1[1,1,3,3]
pand %xmm3, %xmm0
pshufd $0xf5, %xmm2, %xmm1     # xmm1 = xmm2[1,1,3,3]
por %xmm0, %xmm1
movmskps %xmm1, %eax
testl %eax, %eax
movdqa %xmm14, 0xa0(%rsp)
je 0x2ead40
pshufd $0xee, %xmm15, %xmm0    # xmm0 = xmm15[2,3,2,3]
movq %xmm0, %rcx
movq %xmm15, %rax
cmpq %rcx, %rax
cmovgq %rax, %rcx
cmpq 0xd8(%rsp), %rcx
jg 0x2ead8d
movq %rcx, 0x28(%rsp)
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm5     # xmm5 = xmm0[0,1,0,1]
movq 0x80(%rsp), %rcx
movl %ecx, 0x4(%rsp)
movq 0x78(%rsp), %r9
jmp 0x2ead4d
movq 0x78(%rsp), %r9
movq 0x80(%rsp), %rcx
incq %rcx
cmpq 0x148(%rsp), %rcx
jne 0x2ea247
movl 0x5c(%rsp), %eax
movq %rax, 0x80(%rsp)
movq 0xc8(%rsp), %rdi
movq 0x28(%rsp), %rcx
movdqa 0xa0(%rsp), %xmm14
jmp 0x2ead99
callq 0x1a974e
jmp 0x2eaea7
movq 0xc8(%rsp), %rdi
orb $0x40, 0xc(%rdi)
movq %r11, 0x8(%rsp)
movq %rcx, 0x28(%rsp)
movabsq $0x7fffffffffffffff, %rax # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rax, %rcx
je 0x2eadcd
pcmpeqd 0x33f605(%rip), %xmm14  # 0x62a3c0
pshufd $0xb1, %xmm14, %xmm0    # xmm0 = xmm14[1,0,3,2]
pand %xmm14, %xmm0
movmskps %xmm0, %eax
testl %eax, %eax
je 0x2eadd1
orb $0x40, 0xc(%rdi)
callq 0x20be2e
xorl %ecx, %ecx
testl %eax, %eax
je 0x2eae18
xorl %eax, %eax
xorl %esi, %esi
xorl %r9d, %r9d
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %r14
movq 0x48(%rsp), %rdx
movq %rdx, 0x60(%rsp)
movq 0x8(%rsp), %rdx
movq %rdx, 0xa0(%rsp)
xorl %edx, %edx
xorl %r10d, %r10d
jmp 0x2eafaf
callq 0x1a9728
jmp 0x2eaea7
movq 0x80(%rsp), %rcx
leal -0x1(%rcx), %eax
movl 0x4(%rsp), %edx
cmpl %eax, %edx
movq 0x78(%rsp), %r14
jne 0x2eaeae
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rbp, %r8
movq 0x10(%rsp), %r11
movq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x48(%rsp), %rbp
movq 0x8(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0xd0(%rsp), %r10
movq 0x110(%rsp), %rax
movq 0x28(%rsp), %r9
jmp 0x2eaf06
callq 0x1a9702
jmp 0x2eaea7
callq 0x1a96dc
jmp 0x2eaea7
callq 0x1a96b6
jmp 0x2eaea7
callq 0x1a9690
jmp 0x2eaea7
callq 0x1a966a
jmp 0x2eaea7
callq 0x1a9644
xorl %ebx, %ebx
jmp 0x2eb07a
addl $-0x2, %ecx
cmpl %ecx, %edx
movq 0xd0(%rsp), %r10
movq 0x110(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x38(%rsp), %rdx
movq 0x28(%rsp), %r9
jne 0x2eaef2
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %r8
movq %r12, %r11
movq 0x30(%rsp), %rbx
movq %rdx, %r15
movq %rcx, %r13
movq 0x8(%rsp), %r12
jmp 0x2eaf02
movq 0x30(%rsp), %rdi
movq %rdx, %rsi
movq %rcx, %r8
movq 0x8(%rsp), %r11
movl 0x4(%rsp), %edx
movq %r8, 0x60(%rsp)
movq %rsi, 0xb0(%rsp)
testl $0x7ffffffe, %eax       # imm = 0x7FFFFFFE
movq %rbx, 0x40(%rsp)
je 0x2eaf99
movl %r14d, %edx
andl $0x3fffffff, %edx       # imm = 0x3FFFFFFF
addl %edx, %edx
xorl %esi, %esi
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
movq %rcx, %rax
cmpq %r9, (%r11,%rsi,8)
jne 0x2eaf84
movl %esi, %r9d
shrl %r9d
testb $0x1, %sil
movl $0x0, %r8d
cmovnel %r14d, %r8d
addl %r9d, %r8d
movq 0x28(%rsp), %r9
cmpl %r10d, %r8d
jge 0x2eaf84
movq 0x60(%rsp), %rax
movq (%rax,%rsi,8), %rax
movq %rax, 0x118(%rsp)
movq 0xb0(%rsp), %rax
movq (%rax,%rsi,8), %rcx
movq (%rdi,%rsi,8), %rax
movl %r8d, %r10d
incq %rsi
cmpl %esi, %edx
jne 0x2eaf39
movq 0x118(%rsp), %rsi
movl 0x4(%rsp), %edx
jmp 0x2eaf9f
xorl %ecx, %ecx
xorl %eax, %eax
xorl %esi, %esi
movq 0xb0(%rsp), %r14
movq %r11, 0xa0(%rsp)
movq 0xc8(%rsp), %rbx
movl %r9d, (%rbx)
movl %r10d, 0x4(%rbx)
movl %edx, 0x8(%rbx)
movq 0x10(%rbx), %rdx
movl %esi, (%rdx)
movq 0x10(%rbx), %rdx
movl %ecx, 0x4(%rdx)
movq 0x10(%rbx), %rcx
movl %eax, 0x8(%rcx)
callq 0x20a60d
movq %r14, %rdi
callq 0x20a60d
movq 0x60(%rsp), %rdi
callq 0x20a60d
movq 0xa0(%rsp), %rdi
callq 0x20a60d
movq 0x88(%rsp), %rdi
callq 0x20a60d
movq 0x90(%rsp), %rdi
callq 0x20a60d
movq 0x98(%rsp), %rdi
callq 0x20a60d
movq 0x50(%rsp), %rdi
callq 0x20a60d
movq 0x40(%rsp), %rdi
callq 0x20a60d
movq 0x18(%rsp), %rdi
callq 0x20a60d
movq %r15, %rdi
callq 0x20a60d
movq 0x20(%rsp), %rdi
callq 0x20a60d
movq %r13, %rdi
callq 0x20a60d
movq %rbp, %rdi
callq 0x20a60d
movq %r12, %rdi
callq 0x20a60d
movq 0x10(%rsp), %rdi
callq 0x20a60d
movq 0x120(%rsp), %r15
movq 0x128(%rsp), %rdi
callq 0x20bc51
movq %r15, %rdi
callq 0x20afbc
movq 0x140(%rsp), %rax
movl %eax, 0x4(%rbx)
movq 0xe0(%rsp), %rax
movl %eax, 0x8(%rbx)
movq %rbx, %r15
movq %r15, %rax
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)