// File: /workspace/github_c_makefile_star2_O3/nh13[P]ksw/src/parasail/src/sg_striped_avx2_256_8.c
// Function: parasail_sg_flags_rowcol_striped_profile_avx2_256_8
parasail_result_t* PNAME(
        const parasail_profile_t * const restrict profile,
        const char * const restrict s2, const int s2Len,
        const int open, const int gap,
        int s1_beg, int s1_end, int s2_beg, int s2_end)
{
    /* declare local variables */
    int32_t i = 0;
    int32_t j = 0;
    int32_t k = 0;
    int32_t s1Len = 0;
    int32_t end_query = 0;
    int32_t end_ref = 0;
    const parasail_matrix_t *matrix = NULL;
    int32_t segWidth = 0;
    int32_t segLen = 0;
    int32_t offset = 0;
    int32_t position = 0;
    __m256i* restrict vProfile = NULL;
    __m256i* restrict pvHStore = NULL;
    __m256i* restrict pvHLoad = NULL;
    __m256i* restrict pvE = NULL;
    int8_t* restrict boundary = NULL;
    __m256i vGapO;
    __m256i vGapE;
    int8_t NEG_LIMIT = 0;
    int8_t POS_LIMIT = 0;
    int8_t score = 0;
    __m256i vNegLimit;
    __m256i vPosLimit;
    __m256i vSaturationCheckMin;
    __m256i vSaturationCheckMax;
    __m256i vMaxH;
    __m256i vPosMask;
    parasail_result_t *result = NULL;

    /* validate inputs */
    PARASAIL_CHECK_NULL(profile);
    PARASAIL_CHECK_NULL(profile->profile8.score);
    PARASAIL_CHECK_NULL(profile->matrix);
    PARASAIL_CHECK_GT0(profile->s1Len);
    PARASAIL_CHECK_NULL(s2);
    PARASAIL_CHECK_GT0(s2Len);
    PARASAIL_CHECK_GE0(open);
    PARASAIL_CHECK_GE0(gap);

    /* initialize stack variables */
    i = 0;
    j = 0;
    k = 0;
    s1Len = profile->s1Len;
    end_query = s1Len-1;
    end_ref = s2Len-1;
    matrix = profile->matrix;
    segWidth = 32; /* number of values in vector unit */
    segLen = (s1Len + segWidth - 1) / segWidth;
    offset = (s1Len - 1) % segLen;
    position = (segWidth - 1) - (s1Len - 1) / segLen;
    vProfile = (__m256i*)profile->profile8.score;
    vGapO = _mm256_set1_epi8(open);
    vGapE = _mm256_set1_epi8(gap);
    NEG_LIMIT = (-open < matrix->min ? INT8_MIN + open : INT8_MIN - matrix->min) + 1;
    POS_LIMIT = INT8_MAX - matrix->max - 1;
    score = NEG_LIMIT;
    vNegLimit = _mm256_set1_epi8(NEG_LIMIT);
    vPosLimit = _mm256_set1_epi8(POS_LIMIT);
    vSaturationCheckMin = vPosLimit;
    vSaturationCheckMax = vNegLimit;
    vMaxH = vNegLimit;
    vPosMask = _mm256_cmpeq_epi8(_mm256_set1_epi8(position),
            _mm256_set_epi8(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31));

    /* initialize result */
#ifdef PARASAIL_TABLE
    result = parasail_result_new_table1(segLen*segWidth, s2Len);
#else
#ifdef PARASAIL_ROWCOL
    result = parasail_result_new_rowcol1(segLen*segWidth, s2Len);
#else
    result = parasail_result_new();
#endif
#endif
    if (!result) return NULL;

    /* set known flags */
    result->flag |= PARASAIL_FLAG_SG | PARASAIL_FLAG_STRIPED
        | PARASAIL_FLAG_BITS_8 | PARASAIL_FLAG_LANES_32;
    result->flag |= s1_beg ? PARASAIL_FLAG_SG_S1_BEG : 0;
    result->flag |= s1_end ? PARASAIL_FLAG_SG_S1_END : 0;
    result->flag |= s2_beg ? PARASAIL_FLAG_SG_S2_BEG : 0;
    result->flag |= s2_end ? PARASAIL_FLAG_SG_S2_END : 0;
#ifdef PARASAIL_TABLE
    result->flag |= PARASAIL_FLAG_TABLE;
#endif
#ifdef PARASAIL_ROWCOL
    result->flag |= PARASAIL_FLAG_ROWCOL;
#endif

    /* initialize heap variables */
    pvHStore = parasail_memalign___m256i(32, segLen);
    pvHLoad =  parasail_memalign___m256i(32, segLen);
    pvE      = parasail_memalign___m256i(32, segLen);
    boundary = parasail_memalign_int8_t(32, s2Len+1);

    /* validate heap variables */
    if (!pvHStore) return NULL;
    if (!pvHLoad) return NULL;
    if (!pvE) return NULL;
    if (!boundary) return NULL;

    /* initialize H and E */
    {
        int32_t index = 0;
        for (i=0; i<segLen; ++i) {
            int32_t segNum = 0;
            __m256i_8_t h;
            __m256i_8_t e;
            for (segNum=0; segNum<segWidth; ++segNum) {
                int64_t tmp = s1_beg ? 0 : (-open-gap*(segNum*segLen+i));
                h.v[segNum] = tmp < INT8_MIN ? INT8_MIN : tmp;
                tmp = tmp - open;
                e.v[segNum] = tmp < INT8_MIN ? INT8_MIN : tmp;
            }
            _mm256_store_si256(&pvHStore[index], h.m);
            _mm256_store_si256(&pvE[index], e.m);
            ++index;
        }
    }

    /* initialize uppder boundary */
    {
        boundary[0] = 0;
        for (i=1; i<=s2Len; ++i) {
            int64_t tmp = s2_beg ? 0 : (-open-gap*(i-1));
            boundary[i] = tmp < INT8_MIN ? INT8_MIN : tmp;
        }
    }

    /* outer loop over database sequence */
    for (j=0; j<s2Len; ++j) {
        __m256i vE;
        /* Initialize F value to -inf.  Any errors to vH values will be
         * corrected in the Lazy_F loop.  */
        __m256i vF = vNegLimit;

        /* load final segment of pvHStore and shift left by 2 bytes */
        __m256i vH = _mm256_slli_si256_rpl(pvHStore[segLen - 1], 1);

        /* Correct part of the vProfile */
        const __m256i* vP = vProfile + matrix->mapper[(unsigned char)s2[j]] * segLen;

        /* Swap the 2 H buffers. */
        __m256i* pv = pvHLoad;
        pvHLoad = pvHStore;
        pvHStore = pv;

        /* insert upper boundary condition */
        vH = _mm256_insert_epi8_rpl(vH, boundary[j], 0);

        /* inner loop to process the query sequence */
        for (i=0; i<segLen; ++i) {
            vH = _mm256_adds_epi8(vH, _mm256_load_si256(vP + i));
            vE = _mm256_load_si256(pvE + i);

            /* Get max from vH, vE and vF. */
            vH = _mm256_max_epi8(vH, vE);
            vH = _mm256_max_epi8(vH, vF);
            /* Save vH values. */
            _mm256_store_si256(pvHStore + i, vH);
            vSaturationCheckMax = _mm256_max_epi8(vSaturationCheckMax, vH);
            vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vH);
            vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vE);
            vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vF);
#ifdef PARASAIL_TABLE
            arr_store_si256(result->tables->score_table, vH, i, segLen, j, s2Len);
#endif

            /* Update vE value. */
            vH = _mm256_subs_epi8(vH, vGapO);
            vE = _mm256_subs_epi8(vE, vGapE);
            vE = _mm256_max_epi8(vE, vH);
            _mm256_store_si256(pvE + i, vE);

            /* Update vF value. */
            vF = _mm256_subs_epi8(vF, vGapE);
            vF = _mm256_max_epi8(vF, vH);

            /* Load the next vH. */
            vH = _mm256_load_si256(pvHLoad + i);
        }

        /* Lazy_F loop: has been revised to disallow adjecent insertion and
         * then deletion, so don't update E(i, i), learn from SWPS3 */
        for (k=0; k<segWidth; ++k) {
            int64_t tmp = s2_beg ? -open : (boundary[j+1]-open);
            int8_t tmp2 = tmp < INT8_MIN ? INT8_MIN : tmp;
            vF = _mm256_slli_si256_rpl(vF, 1);
            vF = _mm256_insert_epi8_rpl(vF, tmp2, 0);
            for (i=0; i<segLen; ++i) {
                vH = _mm256_load_si256(pvHStore + i);
                vH = _mm256_max_epi8(vH,vF);
                _mm256_store_si256(pvHStore + i, vH);
                vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vH);
                vSaturationCheckMax = _mm256_max_epi8(vSaturationCheckMax, vH);
#ifdef PARASAIL_TABLE
                arr_store_si256(result->tables->score_table, vH, i, segLen, j, s2Len);
#endif
                vH = _mm256_subs_epi8(vH, vGapO);
                vF = _mm256_subs_epi8(vF, vGapE);
                if (! _mm256_movemask_epi8(_mm256_cmpgt_epi8(vF, vH))) goto end;
                /*vF = _mm256_max_epi8(vF, vH);*/
            }
        }
end:
        {
            /* extract vector containing last value from the column */
            __m256i vCompare;
            vH = _mm256_load_si256(pvHStore + offset);
            vCompare = _mm256_and_si256(vPosMask, _mm256_cmpgt_epi8(vH, vMaxH));
            vMaxH = _mm256_max_epi8(vH, vMaxH);
            if (_mm256_movemask_epi8(vCompare)) {
                end_ref = j;
            }
#ifdef PARASAIL_ROWCOL
            for (k=0; k<position; ++k) {
                vH = _mm256_slli_si256_rpl(vH, 1);
            }
            result->rowcols->score_row[j] = (int8_t) _mm256_extract_epi8_rpl (vH, 31);
#endif
        }
    }

#ifdef PARASAIL_ROWCOL
    for (i=0; i<segLen; ++i) {
        __m256i vH = _mm256_load_si256(pvHStore + i);
        arr_store_col(result->rowcols->score_col, vH, i, segLen);
    }
#endif

    /* max last value from all columns */
    if (s2_end)
    {
        for (k=0; k<position; ++k) {
            vMaxH = _mm256_slli_si256_rpl(vMaxH, 1);
        }
        score = (int8_t) _mm256_extract_epi8_rpl(vMaxH, 31);
        end_query = s1Len-1;
    }

    /* max of last column */
    if (s1_end)
    {
        /* Trace the alignment ending position on read. */
        int8_t *t = (int8_t*)pvHStore;
        int32_t column_len = segLen * segWidth;
        for (i = 0; i<column_len; ++i, ++t) {
            int32_t temp = i / segWidth + i % segWidth * segLen;
            if (temp >= s1Len) continue;
            if (*t > score) {
                score = *t;
                end_query = temp;
                end_ref = s2Len-1;
            }
            else if (*t == score && end_ref == s2Len-1 && temp < end_query) {
                end_query = temp;
            }
        }
    }

    if (!s1_end && !s2_end) {
        /* extract last value from the last column */
        {
            __m256i vH = _mm256_load_si256(pvHStore + offset);
            for (k=0; k<position; ++k) {
                vH = _mm256_slli_si256_rpl(vH, 1);
            }
            score = (int8_t) _mm256_extract_epi8_rpl (vH, 31);
            end_ref = s2Len - 1;
            end_query = s1Len - 1;
        }
    }

    if (_mm256_movemask_epi8(_mm256_or_si256(
            _mm256_cmplt_epi8_rpl(vSaturationCheckMin, vNegLimit),
            _mm256_cmpgt_epi8(vSaturationCheckMax, vPosLimit)))) {
        result->flag |= PARASAIL_FLAG_SATURATED;
        score = 0;
        end_query = 0;
        end_ref = 0;
    }

    result->score = score;
    result->end_query = end_query;
    result->end_ref = end_ref;

    parasail_free(boundary);
    parasail_free(pvE);
    parasail_free(pvHLoad);
    parasail_free(pvHStore);

    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2e8, %rsp            # imm = 0x2E8
movl %ecx, 0x18(%rsp)
movq %rsi, 0x38(%rsp)
testq %rdi, %rdi
je 0x56eec6
movq 0x18(%rdi), %rax
movq %rax, 0x80(%rsp)
testq %rax, %rax
je 0x56eecd
movq 0x10(%rdi), %rax
movq %rax, 0x30(%rsp)
testq %rax, %rax
je 0x56eed4
movl 0x8(%rdi), %eax
testl %eax, %eax
jle 0x56eedb
cmpq $0x0, 0x38(%rsp)
je 0x56eee2
movl %edx, %r10d
testl %edx, %edx
jle 0x56eee9
cmpl $0x0, 0x18(%rsp)
js 0x56eef0
testl %r8d, %r8d
js 0x56eef7
movl %r9d, %ebx
movl %r8d, 0x78(%rsp)
leal -0x1(%rax), %r14d
movq %rax, 0xa0(%rsp)
leaq 0x1f(%rax), %r12
movq %r12, %rbp
shrq $0x5, %rbp
movl %r14d, %eax
xorl %edx, %edx
divl %ebp
movl %eax, 0xc(%rsp)
movl %edx, %r13d
movq 0x30(%rsp), %rsi
movl 0x20(%rsi), %eax
movl %eax, %ecx
negb %cl
movzbl %cl, %ecx
movl 0x18(%rsp), %edx
movl %edx, %edi
negl %edi
movl %edi, 0x70(%rsp)
cmpl %edi, %eax
cmovgl %edx, %ecx
movl %ecx, 0x14(%rsp)
movb $0x7e, %r15b
subb 0x1c(%rsi), %r15b
andl $0x7fffffe0, %r12d      # imm = 0x7FFFFFE0
movl %r12d, %edi
movl %r10d, %esi
movq %r10, 0x20(%rsp)
callq 0x20ac53
testq %rax, %rax
je 0x56eefc
movl %r13d, 0x68(%rsp)
movq %r12, 0x98(%rsp)
movl %r14d, 0x10(%rsp)
xorl %edi, %edi
testl %ebx, %ebx
setne %dil
xorl %ecx, %ecx
cmpl $0x0, 0x320(%rsp)
setne %cl
shll $0x4, %ecx
xorl %edx, %edx
cmpl $0x0, 0x328(%rsp)
setne %dl
shll $0xe, %edx
xorl %esi, %esi
cmpl $0x0, 0x330(%rsp)
setne %sil
shll $0xf, %esi
leal (%rcx,%rdi,8), %ecx
orl %edx, %ecx
orl %esi, %ecx
orl 0xc(%rax), %ecx
orl $0x20140802, %ecx       # imm = 0x20140802
movq %rax, 0x88(%rsp)
movl %ecx, 0xc(%rax)
movl $0x20, %edi
movq %rbp, %rsi
callq 0x4f1904
movq %rax, %r14
movl $0x20, %edi
movq %rbp, %rsi
callq 0x4f1904
movq %rax, %r12
movl $0x20, %edi
movq %rbp, %rsi
callq 0x4f1904
movq %rax, %r13
movq 0x20(%rsp), %rax
leal 0x1(%rax), %esi
movl $0x20, %edi
callq 0x20a620
testq %r14, %r14
sete %cl
testq %r12, %r12
sete %dl
orb %cl, %dl
testq %r13, %r13
sete %cl
testq %rax, %rax
sete %sil
orb %cl, %sil
orb %dl, %sil
jne 0x56eefc
movq 0x20(%rsp), %r11
leal -0x1(%r11), %ecx
movl %ecx, 0x8(%rsp)
movl $0x1f, %edx
subl 0xc(%rsp), %edx
movl 0x18(%rsp), %esi
vmovd %esi, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x180(%rsp)
movl 0x78(%rsp), %r10d
vmovd %r10d, %xmm0
vpbroadcastb %xmm0, %ymm3
movl 0x14(%rsp), %ecx
addb $-0x7f, %cl
movl %ecx, 0x14(%rsp)
vmovd %ecx, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x2c0(%rsp)
vmovd %r15d, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x2a0(%rsp)
vmovd %edx, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x160(%rsp)
testl %ebx, %ebx
setne %cl
movl %esi, %esi
movl %ebp, %r8d
movl %r10d, %edi
vmovq %rdi, %xmm0
movl 0x70(%rsp), %ebx
movslq %ebx, %rdi
vpbroadcastq %xmm0, %ymm0
vmovdqu %ymm0, 0xe0(%rsp)
vmovq %rdi, %xmm1
vpbroadcastq %xmm1, %ymm1
vmovdqu %ymm1, 0x120(%rsp)
vmovq %rsi, %xmm1
vpbroadcastq %xmm1, %ymm1
vmovdqu %ymm1, 0x100(%rsp)
movq %r8, 0x28(%rsp)
vmovq %r8, %xmm1
vpbroadcastq %xmm1, %ymm1
vpmuldq 0xc0541(%rip), %ymm1, %ymm0 # 0x62df00
vmovdqu %ymm0, 0xc0(%rsp)
vpmuldq 0xc054f(%rip), %ymm1, %ymm0 # 0x62df20
vmovdqu %ymm0, 0x280(%rsp)
vpmuldq 0xc055d(%rip), %ymm1, %ymm0 # 0x62df40
vmovdqu %ymm0, 0x260(%rsp)
vpmuldq 0xc056b(%rip), %ymm1, %ymm0 # 0x62df60
vmovdqu %ymm0, 0x240(%rsp)
vpmuldq 0xc03d9(%rip), %ymm1, %ymm0 # 0x62dde0
vmovdqu %ymm0, 0x220(%rsp)
vpmuldq 0xc03e7(%rip), %ymm1, %ymm0 # 0x62de00
vmovdqu %ymm0, 0x200(%rsp)
vpmuldq 0xc0215(%rip), %ymm1, %ymm0 # 0x62dc40
vmovdqu %ymm0, 0x1e0(%rsp)
vpmuldq 0xc0103(%rip), %ymm1, %ymm0 # 0x62db40
vmovdqu %ymm0, 0x1c0(%rsp)
vmovd %ecx, %xmm1
vpbroadcastb %xmm1, %ymm0
vmovdqu %ymm0, 0x1a0(%rsp)
xorl %edi, %edi
movq %r14, %r8
movq %r13, %r9
vpbroadcastq 0xc0557(%rip), %ymm6 # 0x62dfc0
vbroadcastsd 0xc0556(%rip), %ymm7 # 0x62dfc8
movq %r11, %rsi
vmovq %rdi, %xmm1
vpbroadcastq %xmm1, %ymm8
vpaddq 0xc0(%rsp), %ymm8, %ymm5
vpaddq 0x280(%rsp), %ymm8, %ymm1
vpaddq 0x260(%rsp), %ymm8, %ymm10
vpaddq 0x240(%rsp), %ymm8, %ymm11
vpaddq 0x220(%rsp), %ymm8, %ymm12
vpaddq 0x200(%rsp), %ymm8, %ymm13
vpaddq 0x1c0(%rsp), %ymm8, %ymm9
vpaddq 0x1e0(%rsp), %ymm8, %ymm8
vmovdqu 0xe0(%rsp), %ymm0
vpmuludq %ymm0, %ymm8, %ymm14
vpsrlq $0x20, %ymm8, %ymm8
vpmuludq %ymm0, %ymm8, %ymm8
vpsllq $0x20, %ymm8, %ymm8
vpaddq %ymm8, %ymm14, %ymm8
vpmuludq %ymm0, %ymm9, %ymm14
vpsrlq $0x20, %ymm9, %ymm9
vpmuludq %ymm0, %ymm9, %ymm9
vpsllq $0x20, %ymm9, %ymm9
vpaddq %ymm9, %ymm14, %ymm9
vpmuludq %ymm0, %ymm13, %ymm14
vpsrlq $0x20, %ymm13, %ymm13
vpmuludq %ymm0, %ymm13, %ymm13
vpsllq $0x20, %ymm13, %ymm13
vpaddq %ymm13, %ymm14, %ymm14
vpmuludq %ymm0, %ymm12, %ymm13
vpsrlq $0x20, %ymm12, %ymm12
vpmuludq %ymm0, %ymm12, %ymm12
vpsllq $0x20, %ymm12, %ymm12
vpaddq %ymm12, %ymm13, %ymm12
vpmuludq %ymm0, %ymm11, %ymm13
vpsrlq $0x20, %ymm11, %ymm11
vpmuludq %ymm0, %ymm11, %ymm11
vpsllq $0x20, %ymm11, %ymm11
vpaddq %ymm11, %ymm13, %ymm11
vpmuludq %ymm0, %ymm10, %ymm13
vpsrlq $0x20, %ymm10, %ymm10
vpmuludq %ymm0, %ymm10, %ymm10
vpsllq $0x20, %ymm10, %ymm10
vpaddq %ymm10, %ymm13, %ymm10
vpmuludq %ymm0, %ymm1, %ymm13
vpsrlq $0x20, %ymm1, %ymm1
vpmuludq %ymm0, %ymm1, %ymm1
vpsllq $0x20, %ymm1, %ymm1
vpaddq %ymm1, %ymm13, %ymm1
vpmuludq %ymm0, %ymm5, %ymm13
vpsrlq $0x20, %ymm5, %ymm5
vpmuludq %ymm0, %ymm5, %ymm5
vpsllq $0x20, %ymm5, %ymm5
vpaddq %ymm5, %ymm13, %ymm5
vmovdqu 0x120(%rsp), %ymm2
vpsubq %ymm5, %ymm2, %ymm0
vmovdqu %ymm0, 0x140(%rsp)
vpsubq %ymm1, %ymm2, %ymm0
vmovdqu %ymm0, 0x40(%rsp)
vpsubq %ymm10, %ymm2, %ymm1
vpsubq %ymm11, %ymm2, %ymm15
vpsubq %ymm12, %ymm2, %ymm12
vpsubq %ymm14, %ymm2, %ymm14
vpsubq %ymm9, %ymm2, %ymm9
vpsubq %ymm8, %ymm2, %ymm8
vmovdqu 0x1a0(%rsp), %ymm0
vpmovsxbd 0xc0102(%rip), %xmm5 # 0x62dce4
vpshufb %xmm5, %xmm0, %xmm10
vpslld $0x1f, %xmm10, %xmm10
vpsrad $0x1f, %xmm10, %xmm10
vpmovsxdq %xmm10, %ymm10
vpandn %ymm8, %ymm10, %ymm10
vpmovzxbd %xmm0, %xmm8    # xmm8 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm0[2],zero,zero,zero,xmm0[3],zero,zero,zero
vpslld $0x1f, %xmm8, %xmm8
vpsrad $0x1f, %xmm8, %xmm8
vpmovsxdq %xmm8, %ymm8
vpandn %ymm9, %ymm8, %ymm11
vpmovsxbd 0xc0407(%rip), %xmm13 # 0x62e028
vpshufb %xmm13, %xmm0, %xmm8
vpslld $0x1f, %xmm8, %xmm8
vpsrad $0x1f, %xmm8, %xmm8
vpmovsxdq %xmm8, %ymm8
vpandn %ymm14, %ymm8, %ymm8
vpmovsxbd 0xc03e7(%rip), %xmm2 # 0x62e02c
vpshufb %xmm2, %xmm0, %xmm9
vpslld $0x1f, %xmm9, %xmm9
vpsrad $0x1f, %xmm9, %xmm9
vpmovsxdq %xmm9, %ymm9
vpandn %ymm12, %ymm9, %ymm9
vextracti128 $0x1, %ymm0, %xmm4
vpmovzxbd %xmm4, %xmm12   # xmm12 = xmm4[0],zero,zero,zero,xmm4[1],zero,zero,zero,xmm4[2],zero,zero,zero,xmm4[3],zero,zero,zero
vpslld $0x1f, %xmm12, %xmm12
vpsrad $0x1f, %xmm12, %xmm12
vpmovsxdq %xmm12, %ymm12
vpandn %ymm15, %ymm12, %ymm12
vpshufb %xmm5, %xmm4, %xmm14
vpslld $0x1f, %xmm14, %xmm14
vpsrad $0x1f, %xmm14, %xmm14
vpmovsxdq %xmm14, %ymm14
vpandn %ymm1, %ymm14, %ymm14
vpshufb %xmm13, %xmm4, %xmm1
vpslld $0x1f, %xmm1, %xmm15
vpshufb %xmm2, %xmm4, %xmm1
vpslld $0x1f, %xmm1, %xmm1
vpsrad $0x1f, %xmm1, %xmm1
vpmovsxdq %xmm1, %ymm1
vpandn 0x140(%rsp), %ymm1, %ymm5
vpcmpgtq %ymm6, %ymm5, %ymm1
vblendvpd %ymm1, %ymm5, %ymm6, %ymm1
vpsrad $0x1f, %xmm15, %xmm4
vpcmpgtq %ymm6, %ymm9, %ymm15
vblendvpd %ymm15, %ymm9, %ymm6, %ymm15
vpmovsxdq %xmm4, %ymm4
vpcmpgtq %ymm6, %ymm11, %ymm13
vblendvpd %ymm13, %ymm11, %ymm6, %ymm2
vpandn 0x40(%rsp), %ymm4, %ymm13
vpcmpgtq %ymm6, %ymm10, %ymm4
vblendvpd %ymm4, %ymm10, %ymm6, %ymm4
vandpd %ymm7, %ymm4, %ymm4
vandpd %ymm7, %ymm2, %ymm2
vpackusdw %ymm4, %ymm2, %ymm2
vpcmpgtq %ymm6, %ymm8, %ymm4
vblendvpd %ymm4, %ymm8, %ymm6, %ymm4
vandpd %ymm7, %ymm4, %ymm4
vandpd %ymm7, %ymm15, %ymm15
vpackusdw %ymm15, %ymm4, %ymm4
vpcmpgtq %ymm6, %ymm14, %ymm15
vblendvpd %ymm15, %ymm14, %ymm6, %ymm15
vpermq $0xd8, %ymm2, %ymm2     # ymm2 = ymm2[0,2,1,3]
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpackusdw %ymm4, %ymm2, %ymm0
vmovdqu %ymm0, 0x40(%rsp)
vpcmpgtq %ymm6, %ymm12, %ymm2
vblendvpd %ymm2, %ymm12, %ymm6, %ymm2
vandpd %ymm7, %ymm2, %ymm2
vandpd %ymm7, %ymm15, %ymm4
vpackusdw %ymm4, %ymm2, %ymm2
vpcmpgtq %ymm6, %ymm13, %ymm4
vblendvpd %ymm4, %ymm13, %ymm6, %ymm4
vandpd %ymm7, %ymm4, %ymm4
vandpd %ymm7, %ymm1, %ymm1
vpackusdw %ymm1, %ymm4, %ymm1
vpermq $0xd8, %ymm2, %ymm2     # ymm2 = ymm2[0,2,1,3]
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpackusdw %ymm1, %ymm2, %ymm15
vmovdqu 0x100(%rsp), %ymm0
vpsubq %ymm0, %ymm10, %ymm2
vpsubq %ymm0, %ymm11, %ymm4
vpsubq %ymm0, %ymm5, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vblendvpd %ymm5, %ymm1, %ymm6, %ymm1
vpsubq %ymm0, %ymm13, %ymm5
vpcmpgtq %ymm6, %ymm5, %ymm10
vblendvpd %ymm10, %ymm5, %ymm6, %ymm5
vpsubq %ymm0, %ymm14, %ymm10
vpcmpgtq %ymm6, %ymm10, %ymm11
vblendvpd %ymm11, %ymm10, %ymm6, %ymm10
vpsubq %ymm0, %ymm12, %ymm11
vpcmpgtq %ymm6, %ymm11, %ymm12
vblendvpd %ymm12, %ymm11, %ymm6, %ymm11
vpsubq %ymm0, %ymm9, %ymm9
vpcmpgtq %ymm6, %ymm9, %ymm12
vblendvpd %ymm12, %ymm9, %ymm6, %ymm9
vpsubq %ymm0, %ymm8, %ymm8
vpcmpgtq %ymm6, %ymm8, %ymm12
vblendvpd %ymm12, %ymm8, %ymm6, %ymm8
vpcmpgtq %ymm6, %ymm4, %ymm12
vblendvpd %ymm12, %ymm4, %ymm6, %ymm4
vpcmpgtq %ymm6, %ymm2, %ymm12
vblendvpd %ymm12, %ymm2, %ymm6, %ymm2
vpermq $0xd8, 0x40(%rsp), %ymm12 # ymm12 = mem[0,2,1,3]
vpermq $0xd8, %ymm15, %ymm13   # ymm13 = ymm15[0,2,1,3]
vpackuswb %ymm13, %ymm12, %ymm12
vandpd %ymm7, %ymm2, %ymm2
vandpd %ymm7, %ymm4, %ymm4
vpackusdw %ymm2, %ymm4, %ymm2
vandpd %ymm7, %ymm8, %ymm4
vandpd %ymm7, %ymm9, %ymm8
vpackusdw %ymm8, %ymm4, %ymm4
vpermq $0xd8, %ymm2, %ymm2     # ymm2 = ymm2[0,2,1,3]
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpackusdw %ymm4, %ymm2, %ymm2
vandpd %ymm7, %ymm11, %ymm4
vandpd %ymm7, %ymm10, %ymm8
vpackusdw %ymm8, %ymm4, %ymm4
vandpd %ymm7, %ymm5, %ymm5
vandpd %ymm7, %ymm1, %ymm1
vpackusdw %ymm1, %ymm5, %ymm1
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpackusdw %ymm1, %ymm4, %ymm1
vpermq $0xd8, %ymm12, %ymm4    # ymm4 = ymm12[0,2,1,3]
vmovdqa %ymm4, (%r8)
vpermq $0xd8, %ymm2, %ymm2     # ymm2 = ymm2[0,2,1,3]
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpackuswb %ymm1, %ymm2, %ymm1
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vmovdqa %ymm1, (%r9)
incq %rdi
addq $0x20, %r9
addq $0x20, %r8
cmpq %rdi, %rbp
jne 0x56da75
movb $0x0, (%rax)
movl %esi, %edi
addl $0x1f, %esi
andl $-0x20, %esi
leaq -0x1(%rdi), %rcx
vmovq %rcx, %xmm0
vpbroadcastq %xmm0, %ymm5
vmovd %r10d, %xmm0
vpbroadcastd %xmm0, %ymm0
vmovdqu %ymm0, 0x120(%rsp)
vmovd %ebx, %xmm0
vpbroadcastd %xmm0, %ymm0
vmovdqu %ymm0, 0x100(%rsp)
vpmovsxbd 0xc00de(%rip), %ymm8 # 0x62dfd0
vpmovsxbd 0xc0125(%rip), %ymm9 # 0x62e020
vpmovsxbd 0xbff44(%rip), %ymm10 # 0x62de48
vpmovsxbd 0xbfdc3(%rip), %ymm11 # 0x62dcd0
xorl %r8d, %r8d
vpbroadcastq 0xbfc67(%rip), %xmm13 # 0x62db80
vpcmpeqd %xmm14, %xmm14, %xmm14
vpcmpeqd %ymm15, %ymm15, %ymm15
vbroadcastss 0xc00ac(%rip), %ymm0 # 0x62dfd8
vmovups %ymm0, 0xe0(%rsp)
vbroadcastss 0xc009e(%rip), %ymm0 # 0x62dfdc
vmovups %ymm0, 0xc0(%rsp)
vpbroadcastq 0xbfc30(%rip), %ymm0 # 0x62db80
vbroadcastss 0xbfc67(%rip), %xmm1 # 0x62dbc0
vmovups %ymm1, 0x40(%rsp)
vpbroadcastd 0xc0078(%rip), %ymm1 # 0x62dfe0
vmovdqu %ymm1, 0x140(%rsp)
cmpl $0x0, 0x328(%rsp)
je 0x56df84
vpxor %xmm4, %xmm4, %xmm4
jmp 0x56e024
vpaddd %ymm15, %ymm11, %ymm1
vpaddd %ymm15, %ymm10, %ymm2
vpaddd %ymm15, %ymm9, %ymm4
vpaddd %ymm15, %ymm8, %ymm7
vmovdqu 0x120(%rsp), %ymm6
vpmulld %ymm6, %ymm7, %ymm7
vpmulld %ymm6, %ymm4, %ymm4
vpmulld %ymm6, %ymm2, %ymm2
vpmulld %ymm6, %ymm1, %ymm1
vmovdqu 0x100(%rsp), %ymm6
vpsubd %ymm1, %ymm6, %ymm1
vpsubd %ymm2, %ymm6, %ymm2
vpsubd %ymm4, %ymm6, %ymm4
vpsubd %ymm7, %ymm6, %ymm7
vmovdqu 0xe0(%rsp), %ymm6
vpmaxsd %ymm6, %ymm7, %ymm7
vpmaxsd %ymm6, %ymm4, %ymm4
vpmaxsd %ymm6, %ymm2, %ymm2
vpmaxsd %ymm6, %ymm1, %ymm1
vmovdqu 0xc0(%rsp), %ymm6
vpand %ymm6, %ymm1, %ymm1
vpand %ymm6, %ymm2, %ymm2
vpackusdw %ymm2, %ymm1, %ymm1
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpand %ymm6, %ymm4, %ymm2
vpand %ymm6, %ymm7, %ymm4
vpackusdw %ymm4, %ymm2, %ymm2
vpermq $0xd8, %ymm2, %ymm2     # ymm2 = ymm2[0,2,1,3]
vpackuswb %ymm2, %ymm1, %ymm1
vpermq $0xd8, %ymm1, %ymm4     # ymm4 = ymm1[0,2,1,3]
vmovq %r8, %xmm1
vpbroadcastq %xmm1, %ymm1
vpor 0xbfb0a(%rip), %ymm1, %ymm12 # 0x62db40
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm7
vpcmpgtq %xmm2, %xmm7, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vmovd %xmm2, %ecx
testb $0x1, %cl
je 0x56e065
vpextrb $0x0, %xmm4, 0x1(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm7
vpcmpgtq %xmm2, %xmm7, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x1, %xmm2, %ecx
testb $0x1, %cl
je 0x56e096
vpextrb $0x1, %xmm4, 0x2(%rax,%r8)
vpxor %ymm0, %ymm5, %ymm7
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpshuflw $0xe8, %ymm12, %ymm2    # ymm2 = ymm12[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm2, %ymm15, %ymm2
vmovdqu 0x40(%rsp), %ymm6
vpermd %ymm2, %ymm6, %ymm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x2, %xmm2, %ecx
testb $0x1, %cl
je 0x56e0d3
vpextrb $0x2, %xmm4, 0x3(%rax,%r8)
vextracti128 $0x1, %ymm12, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x3, %xmm2, %ecx
testb $0x1, %cl
je 0x56e0fc
vpextrb $0x3, %xmm4, 0x4(%rax,%r8)
vpor 0xbfb3c(%rip), %ymm1, %ymm12 # 0x62dc40
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpbroadcastw %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x4, %xmm2, %ecx
testb $0x1, %cl
je 0x56e146
vpextrb $0x4, %xmm4, 0x5(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpbroadcastd %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x5, %xmm2, %ecx
testb $0x1, %cl
je 0x56e189
vpextrb $0x5, %xmm4, 0x6(%rax,%r8)
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpackssdw %ymm12, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x6, %xmm2, %ecx
testb $0x1, %cl
je 0x56e1bc
vpextrb $0x6, %xmm4, 0x7(%rax,%r8)
vpshufhw $0x84, %ymm12, %ymm2    # ymm2 = ymm12[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vextracti128 $0x1, %ymm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x7, %xmm2, %ecx
testb $0x1, %cl
je 0x56e1e7
vpextrb $0x7, %xmm4, 0x8(%rax,%r8)
vpor 0xbfc11(%rip), %ymm1, %ymm12 # 0x62de00
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpmovzxwd %xmm2, %ymm2    # ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vmovd %xmm2, %ecx
testb $0x1, %cl
je 0x56e229
vpextrb $0x8, %xmm4, 0x9(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x1, %xmm2, %ecx
testb $0x1, %cl
je 0x56e266
vpextrb $0x9, %xmm4, 0xa(%rax,%r8)
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpshuflw $0xe8, %ymm12, %ymm2    # ymm2 = ymm12[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm2, %ymm15, %ymm2
vmovdqu 0x40(%rsp), %ymm6
vpermd %ymm2, %ymm6, %ymm2
vpackssdw %xmm2, %xmm2, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x2, %xmm2, %ecx
testb $0x1, %cl
je 0x56e2ab
vpextrb $0xa, %xmm4, 0xb(%rax,%r8)
vextracti128 $0x1, %ymm12, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x3, %xmm2, %ecx
testb $0x1, %cl
je 0x56e2e0
vpextrb $0xb, %xmm4, 0xc(%rax,%r8)
vpor 0xbfaf8(%rip), %ymm1, %ymm12 # 0x62dde0
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x4, %xmm2, %ecx
testb $0x1, %cl
je 0x56e325
vpextrb $0xc, %xmm4, 0xd(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x5, %xmm2, %ecx
testb $0x1, %cl
je 0x56e363
vpextrb $0xd, %xmm4, 0xe(%rax,%r8)
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpackssdw %ymm12, %ymm0, %ymm2
vpxor %ymm2, %ymm15, %ymm2
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x6, %xmm2, %ecx
testb $0x1, %cl
je 0x56e396
vpextrb $0xe, %xmm4, 0xf(%rax,%r8)
vpshufhw $0x84, %ymm12, %ymm2    # ymm2 = ymm12[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vpxor %ymm2, %ymm15, %ymm2
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x7, %xmm2, %ecx
testb $0x1, %cl
je 0x56e3c1
vpextrb $0xf, %xmm4, 0x10(%rax,%r8)
vpor 0xbfb97(%rip), %ymm1, %ymm12 # 0x62df60
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x8, %xmm2, %ecx
vextracti128 $0x1, %ymm4, %xmm4
testb $0x1, %cl
je 0x56e400
vpextrb $0x0, %xmm4, 0x11(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0x9, %xmm2, %ecx
testb $0x1, %cl
je 0x56e431
vpextrb $0x1, %xmm4, 0x12(%rax,%r8)
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpshuflw $0xe8, %ymm12, %ymm2    # ymm2 = ymm12[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm2, %ymm15, %ymm2
vmovdqu 0x40(%rsp), %ymm6
vpermd %ymm2, %ymm6, %ymm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0xa, %xmm2, %ecx
testb $0x1, %cl
je 0x56e46a
vpextrb $0x2, %xmm4, 0x13(%rax,%r8)
vextracti128 $0x1, %ymm12, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0xb, %xmm2, %ecx
testb $0x1, %cl
je 0x56e493
vpextrb $0x3, %xmm4, 0x14(%rax,%r8)
vpor 0xbfaa5(%rip), %ymm1, %ymm12 # 0x62df40
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpbroadcastw %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0xc, %xmm2, %ecx
testb $0x1, %cl
je 0x56e4dd
vpextrb $0x4, %xmm4, 0x15(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm0, %ymm2, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpbroadcastd %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0xd, %xmm2, %ecx
testb $0x1, %cl
je 0x56e520
vpextrb $0x5, %xmm4, 0x16(%rax,%r8)
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpackssdw %ymm12, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0xe, %xmm2, %ecx
testb $0x1, %cl
je 0x56e553
vpextrb $0x6, %xmm4, 0x17(%rax,%r8)
vpshufhw $0x84, %ymm12, %ymm2    # ymm2 = ymm12[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vextracti128 $0x1, %ymm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpacksswb %xmm2, %xmm2, %xmm2
vpextrb $0xf, %xmm2, %ecx
testb $0x1, %cl
je 0x56e57e
vpextrb $0x7, %xmm4, 0x18(%rax,%r8)
vpor 0xbf99a(%rip), %ymm1, %ymm12 # 0x62df20
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpmovzxwd %xmm2, %ymm2    # ymm2 = xmm2[0],zero,xmm2[1],zero,xmm2[2],zero,xmm2[3],zero,xmm2[4],zero,xmm2[5],zero,xmm2[6],zero,xmm2[7],zero
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x8, %xmm2, %ecx
testb $0x1, %cl
je 0x56e5c2
vpextrb $0x8, %xmm4, 0x19(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm13, %xmm12, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0x9, %xmm2, %ecx
testb $0x1, %cl
je 0x56e5ff
vpextrb $0x9, %xmm4, 0x1a(%rax,%r8)
vpxor %ymm0, %ymm12, %ymm2
vpcmpgtq %ymm7, %ymm2, %ymm12
vpshuflw $0xe8, %ymm12, %ymm2    # ymm2 = ymm12[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm2, %ymm15, %ymm2
vmovdqu 0x40(%rsp), %ymm6
vpermd %ymm2, %ymm6, %ymm2
vpackssdw %xmm2, %xmm2, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xa, %xmm2, %ecx
testb $0x1, %cl
je 0x56e644
vpextrb $0xa, %xmm4, 0x1b(%rax,%r8)
vextracti128 $0x1, %ymm12, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xb, %xmm2, %ecx
testb $0x1, %cl
je 0x56e679
vpextrb $0xb, %xmm4, 0x1c(%rax,%r8)
vpor 0xbf87f(%rip), %ymm1, %ymm1 # 0x62df00
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm1, %xmm13, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpackssdw %xmm2, %xmm2, %xmm2
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xc, %xmm2, %ecx
testb $0x1, %cl
je 0x56e6bd
vpextrb $0xc, %xmm4, 0x1d(%rax,%r8)
vpxor %xmm5, %xmm13, %xmm2
vpxor %xmm1, %xmm13, %xmm6
vpcmpgtq %xmm2, %xmm6, %xmm2
vpshufhw $0x84, %xmm2, %xmm2     # xmm2 = xmm2[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm14, %xmm2
vpermq $0x55, %ymm2, %ymm2     # ymm2 = ymm2[1,1,1,1]
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xd, %xmm2, %ecx
testb $0x1, %cl
je 0x56e6fa
vpextrb $0xd, %xmm4, 0x1e(%rax,%r8)
vpxor %ymm0, %ymm1, %ymm1
vpcmpgtq %ymm7, %ymm1, %ymm1
vpackssdw %ymm1, %ymm0, %ymm2
vpxor %ymm2, %ymm15, %ymm2
vpackssdw %ymm2, %ymm0, %ymm2
vpacksswb %ymm2, %ymm0, %ymm2
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xe, %xmm2, %ecx
testb $0x1, %cl
je 0x56e72c
vpextrb $0xe, %xmm4, 0x1f(%rax,%r8)
vpshufhw $0x84, %ymm1, %ymm1     # ymm1 = ymm1[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vpxor %ymm1, %ymm15, %ymm1
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xf, %xmm1, %ecx
testb $0x1, %cl
je 0x56e756
vpextrb $0xf, %xmm4, 0x20(%rax,%r8)
addq $0x20, %r8
vmovdqu 0x140(%rsp), %ymm1
vpaddd %ymm1, %ymm11, %ymm11
vpaddd %ymm1, %ymm10, %ymm10
vpaddd %ymm1, %ymm9, %ymm9
vpaddd %ymm1, %ymm8, %ymm8
cmpq %r8, %rsi
jne 0x56df71
leal -0x1(%rbp), %r11d
movl 0x68(%rsp), %r9d
movq %rbp, 0x60(%rsp)
movq %rbp, %r10
shlq $0x5, %r10
xorl %ecx, %ecx
shlq $0x5, %r11
movl $0xffffff80, %esi       # imm = 0xFFFFFF80
vmovdqu 0x160(%rsp), %ymm0
vpcmpeqb 0xbf853(%rip), %ymm0, %ymm5 # 0x62e000
movq %r9, 0x90(%rsp)
shlq $0x5, %r9
movl 0x8(%rsp), %r8d
movl %r8d, 0x40(%rsp)
vmovdqu 0x2c0(%rsp), %ymm9
vmovdqa %ymm9, %ymm4
vmovdqa %ymm9, %ymm0
vmovdqu 0x2a0(%rsp), %ymm10
vmovdqa %ymm10, %ymm1
vmovdqu 0x180(%rsp), %ymm11
movq %r12, %rbp
movq %r14, %r12
vmovdqa (%r14,%r11), %ymm2
vinserti128 $0x1, %xmm2, %ymm0, %ymm6
vpalignr $0xf, %ymm6, %ymm2, %ymm2 # ymm2 = ymm6[15],ymm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm6[31],ymm2[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
movq 0x30(%rsp), %r8
movq 0x10(%r8), %r8
movq 0x38(%rsp), %r14
movzbl (%r14,%rcx), %r14d
movslq (%r8,%r14,4), %r8
imulq 0x28(%rsp), %r8
shlq $0x5, %r8
addq 0x80(%rsp), %r8
vpinsrb $0x0, (%rax,%rcx), %xmm2, %xmm6
vpblendd $0xf, %ymm6, %ymm2, %ymm7 # ymm7 = ymm6[0,1,2,3],ymm2[4,5,6,7]
xorl %r14d, %r14d
vmovdqa %ymm9, %ymm6
vpaddsb (%r8,%r14), %ymm7, %ymm2
vmovdqa (%r13,%r14), %ymm7
vpmaxsb %ymm6, %ymm7, %ymm8
vpmaxsb %ymm8, %ymm2, %ymm2
vmovdqa %ymm2, (%rbp,%r14)
vpmaxsb %ymm2, %ymm0, %ymm0
vpminsb %ymm7, %ymm1, %ymm1
vpminsb %ymm6, %ymm1, %ymm1
vpminsb %ymm2, %ymm1, %ymm1
vpsubsb %ymm11, %ymm2, %ymm2
vpsubsb %ymm3, %ymm7, %ymm7
vpmaxsb %ymm2, %ymm7, %ymm7
vmovdqa %ymm7, (%r13,%r14)
vpsubsb %ymm3, %ymm6, %ymm6
vpmaxsb %ymm2, %ymm6, %ymm6
vmovapd (%r12,%r14), %ymm7
addq $0x20, %r14
cmpq %r14, %r10
jne 0x56e83f
xorl %r8d, %r8d
movl %ebx, %r14d
cmpl $0x0, 0x328(%rsp)
jne 0x56e8b9
movsbl 0x1(%rax,%rcx), %r14d
subl 0x18(%rsp), %r14d
cmpl $-0x7f, %r14d
cmovll %esi, %r14d
vinserti128 $0x1, %xmm6, %ymm0, %ymm2
vpalignr $0xf, %ymm2, %ymm6, %ymm2 # ymm2 = ymm2[15],ymm6[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm6[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, %r14d, %xmm2, %xmm6
vpblendd $0xf, %ymm6, %ymm2, %ymm6 # ymm6 = ymm6[0,1,2,3],ymm2[4,5,6,7]
xorl %r14d, %r14d
vpmaxsb (%rbp,%r14), %ymm6, %ymm2
vmovdqa %ymm2, (%rbp,%r14)
vpminsb %ymm2, %ymm1, %ymm1
vpmaxsb %ymm2, %ymm0, %ymm0
vpsubsb %ymm11, %ymm2, %ymm2
vpsubsb %ymm3, %ymm6, %ymm6
vpcmpgtb %ymm2, %ymm6, %ymm2
vpmovmskb %ymm2, %r15d
testl %r15d, %r15d
je 0x56e91c
addq $0x20, %r14
cmpq %r14, %r10
jne 0x56e8dc
incl %r8d
cmpl $0x20, %r8d
jne 0x56e8a1
vmovdqa (%rbp,%r9), %ymm6
vpcmpgtb %ymm4, %ymm6, %ymm2
vpand %ymm5, %ymm2, %ymm2
vpmovmskb %ymm2, %r8d
testl %r8d, %r8d
movl 0x40(%rsp), %r8d
cmovnel %ecx, %r8d
movl %r8d, 0x40(%rsp)
vmovdqa %ymm6, %ymm7
cmpl $0x1e, 0xc(%rsp)
movq 0x88(%rsp), %r14
jg 0x56e96e
xorl %r8d, %r8d
vmovdqa %ymm6, %ymm7
vperm2i128 $0x28, %ymm7, %ymm7, %ymm2 # ymm2 = zero,zero,ymm7[0,1]
vpalignr $0xf, %ymm2, %ymm7, %ymm7 # ymm7 = ymm2[15],ymm7[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm7[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
incl %r8d
cmpl %edx, %r8d
jl 0x56e95a
vpmaxsb %ymm4, %ymm6, %ymm4
vextracti128 $0x1, %ymm7, %xmm2
vpextrb $0xf, %xmm2, %r8d
movsbl %r8b, %r8d
movq 0x10(%r14), %r14
movq (%r14), %r14
movl %r8d, (%r14,%rcx,4)
incq %rcx
movq %rbp, %r14
cmpq %rdi, %rcx
jne 0x56e7ea
movq 0x60(%rsp), %r9
leal (,%r9,4), %edi
leal (,%r9,8), %ecx
leaq (%rdi,%rdi,2), %rsi
movq %rsi, 0x38(%rsp)
movl %r9d, %esi
shll $0x4, %esi
movq %rsi, 0x30(%rsp)
leaq (%rdi,%rdi,4), %rsi
movq %rsi, 0x80(%rsp)
movq %rcx, 0x140(%rsp)
leaq (%rcx,%rcx,2), %rcx
movq %rcx, 0x18(%rsp)
movq 0x28(%rsp), %rsi
leaq (%rsi,%rsi,8), %rcx
leaq (%rcx,%rcx,2), %rcx
addq %rsi, %rcx
movq %rcx, 0x28(%rsp)
imulq $0x7c, %r9, %rcx
movq %rcx, 0x120(%rsp)
movl %r9d, %ecx
shll $0x4, %ecx
leaq (%rcx,%rcx,4), %rsi
movq %rsi, 0x100(%rsp)
leal (,%r9,8), %esi
leaq (%rsi,%rsi,8), %r8
movq %r8, 0xe0(%rsp)
leal (,%r9,4), %r8d
movq %r9, %r11
shlq $0x6, %r11
movq %r11, 0xc0(%rsp)
addq %r8, %r11
movq %r11, 0x280(%rsp)
leaq (%rcx,%rcx,2), %rcx
movq %rcx, 0x260(%rsp)
leaq (%rsi,%rsi,4), %rcx
movq %rcx, 0x240(%rsp)
leaq (%r8,%r8,8), %rcx
movq %rcx, 0x220(%rsp)
imulq $0x78, %r9, %rcx
movq %rcx, 0x200(%rsp)
imulq $0x74, %r9, %rcx
movq %rcx, 0x1e0(%rsp)
imulq $0x70, %r9, %rcx
movq %rcx, 0x1c0(%rsp)
imulq $0x6c, %r9, %rcx
movq %rcx, 0x1a0(%rsp)
imulq $0x68, %r9, %rcx
movq %rcx, 0x20(%rsp)
imulq $0x64, %r9, %rcx
movq %rcx, 0x78(%rsp)
leaq (%r10,%r10,2), %rcx
movq %rcx, 0x70(%rsp)
imulq $0x5c, %r9, %rcx
movq %rcx, 0x68(%rsp)
imulq $0x58, %r9, %rcx
movq %rcx, 0x180(%rsp)
imulq $0x54, %r9, %rcx
movq %rcx, 0x160(%rsp)
imulq $0x4c, %r9, %rcx
movq %rcx, 0xb8(%rsp)
imulq $0x3c, %r9, %rcx
movq %rcx, 0xb0(%rsp)
imulq $0x38, %r9, %rcx
movq %rcx, 0xa8(%rsp)
imulq $0x34, %r9, %r14
imulq $0x2c, %r9, %rsi
xorl %r8d, %r8d
movq 0x88(%rsp), %rcx
movq 0x10(%rcx), %rbx
movq 0x8(%rbx), %rbx
vmovdqa (%rbp,%r8,8), %xmm3
vmovdqa 0x10(%rbp,%r8,8), %xmm2
vmovd %xmm3, %r9d
movsbl %r9b, %r9d
movl %r9d, (%rbx,%r8)
vpextrb $0x1, %xmm3, %r9d
addq %r8, %rbx
movsbl %r9b, %r9d
vpextrb $0x2, %xmm3, %r11d
movl %r9d, (%rdi,%rbx)
movsbl %r11b, %r9d
vpextrb $0x3, %xmm3, %r11d
movq 0x140(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0x4, %xmm3, %r11d
movq 0x38(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0x5, %xmm3, %r11d
movq 0x30(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0x6, %xmm3, %r11d
movq 0x80(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0x7, %xmm3, %r11d
movq 0x18(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0x8, %xmm3, %r11d
movq 0x28(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0x9, %xmm3, %r11d
movl %r9d, (%r10,%rbx)
movsbl %r11b, %r9d
vpextrb $0xa, %xmm3, %r11d
movq 0x220(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0xb, %xmm3, %r11d
movq 0x240(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0xc, %xmm3, %r11d
movl %r9d, (%rsi,%rbx)
movsbl %r11b, %r9d
vpextrb $0xd, %xmm3, %r11d
movq 0x260(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
vpextrb $0xe, %xmm3, %r11d
movl %r9d, (%r14,%rbx)
movsbl %r11b, %r9d
vpextrb $0xf, %xmm3, %r11d
movq 0xa8(%rsp), %r15
movl %r9d, (%r15,%rbx)
movsbl %r11b, %r9d
movq 0xb0(%rsp), %r11
movl %r9d, (%r11,%rbx)
vmovd %xmm2, %r9d
movsbl %r9b, %r9d
movq 0xc0(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x1, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x280(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x2, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0xe0(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x3, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0xb8(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x4, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x100(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x5, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x160(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x6, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x180(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x7, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x68(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x8, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x70(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0x9, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x78(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0xa, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x20(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0xb, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x1a0(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0xc, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x1c0(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0xd, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x1e0(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0xe, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x200(%rsp), %r11
movl %r9d, (%r11,%rbx)
vpextrb $0xf, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x120(%rsp), %r11
movl %r9d, (%r11,%rbx)
addq $0x4, %r8
cmpq %r8, %rdi
jne 0x56eb13
movl 0x330(%rsp), %r15d
testl %r15d, %r15d
movq %rcx, %rbx
movl 0x10(%rsp), %r8d
movq 0xa0(%rsp), %r11
movl 0x14(%rsp), %r14d
je 0x56ee00
cmpl $0x1e, 0xc(%rsp)
jg 0x56edf4
xorl %ecx, %ecx
vperm2i128 $0x8, %ymm4, %ymm4, %ymm2 # ymm2 = zero,zero,ymm4[0,1]
vpalignr $0xf, %ymm2, %ymm4, %ymm4 # ymm4 = ymm2[15],ymm4[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm4[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
incl %ecx
cmpl %edx, %ecx
jl 0x56ede2
vextracti128 $0x1, %ymm4, %xmm2
vpextrb $0xf, %xmm2, %r14d
cmpl $0x0, 0x320(%rsp)
je 0x56ee82
cmpl $0x0, 0x98(%rsp)
je 0x56ee82
movq 0x60(%rsp), %rsi
andl $0x3ffffff, %esi        # imm = 0x3FFFFFF
shll $0x5, %esi
xorl %edi, %edi
movl %r8d, %ecx
movl %edi, %r9d
shrl $0x5, %r9d
movl %edi, %r8d
andl $0x1f, %r8d
imull 0x60(%rsp), %r8d
addl %r9d, %r8d
cmpl %r11d, %r8d
jge 0x56ee79
movb (%rbp,%rdi), %r9b
cmpb %r14b, %r9b
jle 0x56ee5d
movl %r9d, %r14d
movl 0x8(%rsp), %ecx
movl %ecx, 0x40(%rsp)
movl %r8d, %ecx
jmp 0x56ee79
cmpl %ecx, %r8d
cmovgel %ecx, %r8d
movl 0x40(%rsp), %r10d
cmpl 0x8(%rsp), %r10d
cmovnel %ecx, %r8d
cmpb %r14b, %r9b
cmovel %r8d, %ecx
incq %rdi
cmpl %edi, %esi
jne 0x56ee27
jmp 0x56ee85
movl %r8d, %ecx
orl 0x320(%rsp), %r15d
jne 0x56ef2d
movq 0x90(%rsp), %rcx
shlq $0x5, %rcx
vmovdqa (%rbp,%rcx), %ymm2
cmpl $0x1e, 0xc(%rsp)
jg 0x56ef13
xorl %ecx, %ecx
movl 0x10(%rsp), %esi
vperm2i128 $0x28, %ymm2, %ymm2, %ymm3 # ymm3 = zero,zero,ymm2[0,1]
vpalignr $0xf, %ymm3, %ymm2, %ymm2 # ymm2 = ymm3[15],ymm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm3[31],ymm2[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
incl %ecx
cmpl %edx, %ecx
jl 0x56eeb2
jmp 0x56ef17
callq 0x1f2de1
jmp 0x56eefc
callq 0x1f2dbb
jmp 0x56eefc
callq 0x1f2d95
jmp 0x56eefc
callq 0x1f2d6f
jmp 0x56eefc
callq 0x1f2d49
jmp 0x56eefc
callq 0x1f2d23
jmp 0x56eefc
callq 0x1f2cfd
jmp 0x56eefc
callq 0x1f2cd7
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x2e8, %rsp            # imm = 0x2E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x10(%rsp), %esi
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xf, %xmm2, %r14d
movl 0x8(%rsp), %ecx
movl %ecx, 0x40(%rsp)
movl %esi, %ecx
vpcmpgtb %ymm1, %ymm9, %ymm1
vpcmpgtb %ymm10, %ymm0, %ymm0
vpor %ymm1, %ymm0, %ymm0
vpmovmskb %ymm0, %edx
testl %edx, %edx
je 0x56ef53
orb $0x40, 0xc(%rbx)
xorl %r14d, %r14d
movl $0x0, 0x40(%rsp)
xorl %ecx, %ecx
movsbl %r14b, %edx
movl %edx, (%rbx)
movl %ecx, 0x4(%rbx)
movl 0x40(%rsp), %ecx
movl %ecx, 0x8(%rbx)
movq %rax, %rdi
vzeroupper
callq 0x20a60d
movq %r13, %rdi
callq 0x20a60d
movq %r12, %rdi
callq 0x20a60d
movq %rbp, %rdi
callq 0x20a60d
jmp 0x56eefe