// File: /workspace/github_c_makefile_star2_O3/nh13[P]ksw/src/parasail/src/sg_scan_avx2_256_8.c
// Function: parasail_sg_flags_rowcol_scan_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 end_query = 0;
    int32_t end_ref = 0;
    int32_t s1Len = 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 pvP = NULL;
    __m256i* restrict pvE = NULL;
    int8_t* restrict boundary = NULL;
    __m256i* restrict pvHt = NULL;
    __m256i* restrict pvH = NULL;
    __m256i* restrict pvGapper = NULL;
    __m256i vGapO;
    __m256i vGapE;
    int8_t NEG_LIMIT = 0;
    int8_t POS_LIMIT = 0;
    __m256i vZero;
    int8_t score = 0;
    __m256i vNegLimit;
    __m256i vPosLimit;
    __m256i vSaturationCheckMin;
    __m256i vSaturationCheckMax;
    __m256i vMaxH;
    __m256i vPosMask;
    __m256i vNegInfFront;
    __m256i vSegLenXgap;
    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;
    pvP = (__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;
    vZero = _mm256_setzero_si256();
    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));
    vNegInfFront = vZero;
    vNegInfFront = _mm256_insert_epi8_rpl(vNegInfFront, NEG_LIMIT, 0);
    vSegLenXgap = _mm256_adds_epi8(vNegInfFront,
            _mm256_slli_si256_rpl(_mm256_set1_epi8(-segLen*gap), 1));

    /* 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_SCAN
        | 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 */
    pvE = parasail_memalign___m256i(32, segLen);
    boundary = parasail_memalign_int8_t(32, s2Len+1);
    pvHt= parasail_memalign___m256i(32, segLen);
    pvH = parasail_memalign___m256i(32, segLen);
    pvGapper = parasail_memalign___m256i(32, segLen);

    /* validate heap variables */
    if (!pvE) return NULL;
    if (!boundary) return NULL;
    if (!pvHt) return NULL;
    if (!pvH) return NULL;
    if (!pvGapper) 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(&pvH[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;
        }
    }

    {
        __m256i vGapper = _mm256_subs_epi8(vZero,vGapO);
        for (i=segLen-1; i>=0; --i) {
            _mm256_store_si256(pvGapper+i, vGapper);
            vGapper = _mm256_subs_epi8(vGapper, vGapE);
            /* long queries and/or large penalties will break the pseudo prefix scan */
            vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vGapper);
        }
    }

    /* outer loop over database sequence */
    for (j=0; j<s2Len; ++j) {
        __m256i vE;
        __m256i vHt;
        __m256i vF;
        __m256i vH;
        __m256i vHp;
        __m256i *pvW;
        __m256i vW;

        /* calculate E */
        /* calculate Ht */
        /* calculate F and H first pass */
        vHp = _mm256_load_si256(pvH+(segLen-1));
        vHp = _mm256_slli_si256_rpl(vHp, 1);
        vHp = _mm256_insert_epi8_rpl(vHp, boundary[j], 0);
        pvW = pvP + matrix->mapper[(unsigned char)s2[j]]*segLen;
        vHt = _mm256_subs_epi8(vNegLimit, pvGapper[0]);
        vF = vNegLimit;
        for (i=0; i<segLen; ++i) {
            vH = _mm256_load_si256(pvH+i);
            vE = _mm256_load_si256(pvE+i);
            vW = _mm256_load_si256(pvW+i);
            vE = _mm256_max_epi8(
                    _mm256_subs_epi8(vE, vGapE),
                    _mm256_subs_epi8(vH, vGapO));
            vHp = _mm256_adds_epi8(vHp, vW);
            vF = _mm256_max_epi8(vF, _mm256_adds_epi8(vHt, pvGapper[i]));
            vHt = _mm256_max_epi8(vE, vHp);
            _mm256_store_si256(pvE+i, vE);
            _mm256_store_si256(pvHt+i, vHt);
            vHp = vH;
        }

        /* pseudo prefix scan on F and H */
        vHt = _mm256_slli_si256_rpl(vHt, 1);
        vHt = _mm256_insert_epi8_rpl(vHt, boundary[j+1], 0);
        vF = _mm256_max_epi8(vF, _mm256_adds_epi8(vHt, pvGapper[0]));
        for (i=0; i<segWidth-2; ++i) {
            __m256i vFt = _mm256_slli_si256_rpl(vF, 1);
            vFt = _mm256_adds_epi8(vFt, vSegLenXgap);
            vF = _mm256_max_epi8(vF, vFt);
        }

        /* calculate final H */
        vF = _mm256_slli_si256_rpl(vF, 1);
        vF = _mm256_adds_epi8(vF, vNegInfFront);
        vH = _mm256_max_epi8(vHt, vF);
        for (i=0; i<segLen; ++i) {
            vHt = _mm256_load_si256(pvHt+i);
            vF = _mm256_max_epi8(
                    _mm256_subs_epi8(vF, vGapE),
                    _mm256_subs_epi8(vH, vGapO));
            vH = _mm256_max_epi8(vHt, vF);
            _mm256_store_si256(pvH+i, vH);
            vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vH);
            vSaturationCheckMin = _mm256_min_epi8(vSaturationCheckMin, vF);
            vSaturationCheckMax = _mm256_max_epi8(vSaturationCheckMax, vH);
#ifdef PARASAIL_TABLE
            arr_store_si256(result->tables->score_table, vH, i, segLen, j, s2Len);
#endif
        } 

        /* extract vector containing last value from column */
        {
            __m256i vCompare;
            vH = _mm256_load_si256(pvH + 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(pvH + 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*)pvH;
        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(pvH + 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(pvGapper);
    parasail_free(pvH);
    parasail_free(pvHt);
    parasail_free(boundary);
    parasail_free(pvE);

    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x308, %rsp            # imm = 0x308
movq %rsi, 0x28(%rsp)
testq %rdi, %rdi
je 0x5570fb
movq 0x18(%rdi), %rax
movq %rax, 0x78(%rsp)
testq %rax, %rax
je 0x557102
movq 0x10(%rdi), %rax
movq %rax, 0x20(%rsp)
testq %rax, %rax
je 0x557109
movl %ecx, %ebx
movl 0x8(%rdi), %ecx
testl %ecx, %ecx
jle 0x557110
cmpq $0x0, 0x28(%rsp)
je 0x557117
movl %r9d, %r15d
movl %edx, %r9d
testl %edx, %edx
jle 0x55711e
testl %ebx, %ebx
js 0x557125
testl %r8d, %r8d
js 0x55712c
movl %r8d, 0x10(%rsp)
leal -0x1(%rcx), %eax
movq %rcx, 0xc0(%rsp)
leaq 0x1f(%rcx), %r14
movq %r14, %r13
shrq $0x5, %r13
movl %eax, 0x8(%rsp)
xorl %edx, %edx
divl %r13d
movl %eax, 0x4(%rsp)
movl %edx, %ebp
movq 0x20(%rsp), %rdx
movl 0x20(%rdx), %eax
movl %eax, %ecx
negb %cl
movzbl %cl, %ecx
movl %ebx, %esi
negl %esi
movl %esi, 0x70(%rsp)
cmpl %esi, %eax
cmovgl %ebx, %ecx
movl %ecx, 0xc(%rsp)
movb $0x7e, %al
subb 0x1c(%rdx), %al
movl %eax, 0x30(%rsp)
andl $0x7fffffe0, %r14d      # imm = 0x7FFFFFE0
movl %r14d, %edi
movl %r9d, %esi
movq %r9, %r12
callq 0x20ac53
testq %rax, %rax
je 0x557131
movl %ebp, 0x68(%rsp)
movq %r14, 0xb8(%rsp)
movl 0x350(%rsp), %r8d
xorl %edi, %edi
testl %r15d, %r15d
setne %dil
xorl %ecx, %ecx
cmpl $0x0, 0x340(%rsp)
setne %cl
shll $0x4, %ecx
xorl %edx, %edx
cmpl $0x0, 0x348(%rsp)
setne %dl
shll $0xe, %edx
xorl %esi, %esi
movl %r8d, 0x84(%rsp)
testl %r8d, %r8d
setne %sil
shll $0xf, %esi
leal (%rcx,%rdi,8), %ecx
orl %edx, %ecx
orl %esi, %ecx
orl 0xc(%rax), %ecx
orl $0x20140402, %ecx       # imm = 0x20140402
movq %rax, 0x88(%rsp)
movl %ecx, 0xc(%rax)
movl $0x20, %edi
movq %r13, %rsi
callq 0x4f1904
movl %r15d, 0x90(%rsp)
movq %rax, %r15
movq %r12, 0x60(%rsp)
leal 0x1(%r12), %esi
movl $0x20, %edi
callq 0x20a620
movq %rax, %r12
movl $0x20, %edi
movq %r13, %rsi
callq 0x4f1904
movq %rax, %rbp
movl $0x20, %edi
movq %r13, %rsi
callq 0x4f1904
movq %rax, %r14
movl $0x20, %edi
movq %r13, %rsi
callq 0x4f1904
testq %r15, %r15
sete %cl
testq %r12, %r12
sete %dl
orb %cl, %dl
testq %rbp, %rbp
sete %cl
testq %r14, %r14
sete %sil
orb %cl, %sil
orb %dl, %sil
testq %rax, %rax
sete %cl
orb %sil, %cl
jne 0x557131
movq 0x60(%rsp), %r11
leal -0x1(%r11), %ecx
movl %ecx, (%rsp)
movl $0x1f, %edx
subl 0x4(%rsp), %edx
vmovd %ebx, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x180(%rsp)
movl 0x10(%rsp), %edi
vmovd %edi, %xmm0
vpbroadcastb %xmm0, %ymm3
movl 0xc(%rsp), %ecx
addb $-0x7f, %cl
vmovd %ecx, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x2e0(%rsp)
vmovd 0x30(%rsp), %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x2c0(%rsp)
vmovd %edx, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x1a0(%rsp)
movl %ecx, 0xc(%rsp)
movzbl %cl, %ecx
movl %r13d, %esi
imull %edi, %esi
negb %sil
vmovd %esi, %xmm0
vpbroadcastb %xmm0, %ymm0
vpand 0xd838e(%rip), %ymm0, %ymm0 # 0x62dee0
vmovd %ecx, %xmm1
vmovdqu %ymm1, 0x1e0(%rsp)
vpaddsb %ymm0, %ymm1, %ymm0
vmovdqu %ymm0, 0x1c0(%rsp)
cmpl $0x0, 0x90(%rsp)
setne %cl
movl %ebx, %esi
movl %r13d, %r9d
movl %edi, %edi
movl 0x70(%rsp), %ebx
movslq %ebx, %r8
vmovq %rdi, %xmm0
vpbroadcastq %xmm0, %ymm0
vmovq %r8, %xmm1
vpbroadcastq %xmm1, %ymm1
vmovdqu %ymm1, 0x160(%rsp)
vmovq %rsi, %xmm1
vpbroadcastq %xmm1, %ymm1
vmovdqu %ymm1, 0x140(%rsp)
movq %r9, 0x18(%rsp)
vmovq %r9, %xmm1
vpbroadcastq %xmm1, %ymm1
vpmuldq 0xd8333(%rip), %ymm1, %ymm2 # 0x62df00
vmovdqu %ymm2, 0x120(%rsp)
vpmuldq 0xd8341(%rip), %ymm1, %ymm2 # 0x62df20
vmovdqu %ymm2, 0x100(%rsp)
vpmuldq 0xd834f(%rip), %ymm1, %ymm2 # 0x62df40
vmovdqu %ymm2, 0xe0(%rsp)
vpmuldq 0xd835d(%rip), %ymm1, %ymm2 # 0x62df60
vmovdqu %ymm2, 0x2a0(%rsp)
vpmuldq 0xd81cb(%rip), %ymm1, %ymm2 # 0x62dde0
vmovdqu %ymm2, 0x280(%rsp)
vpmuldq 0xd81d9(%rip), %ymm1, %ymm2 # 0x62de00
vmovdqu %ymm2, 0x260(%rsp)
vpmuldq 0xd8007(%rip), %ymm1, %ymm2 # 0x62dc40
vmovdqu %ymm2, 0x240(%rsp)
vpmuldq 0xd7ef5(%rip), %ymm1, %ymm1 # 0x62db40
vmovdqu %ymm1, 0x220(%rsp)
vmovd %ecx, %xmm1
vpbroadcastb %xmm1, %ymm1
vmovdqu %ymm1, 0x200(%rsp)
xorl %edi, %edi
movq %r14, %r8
movq %r15, %r9
vpbroadcastq 0xd8349(%rip), %ymm8 # 0x62dfc0
vbroadcastsd 0xd8348(%rip), %ymm9 # 0x62dfc8
movq %r13, %r10
vmovq %rdi, %xmm1
vpbroadcastq %xmm1, %ymm6
vpaddq 0x120(%rsp), %ymm6, %ymm5
vpaddq 0x100(%rsp), %ymm6, %ymm1
vpaddq 0xe0(%rsp), %ymm6, %ymm7
vpaddq 0x2a0(%rsp), %ymm6, %ymm11
vpaddq 0x280(%rsp), %ymm6, %ymm12
vpaddq 0x260(%rsp), %ymm6, %ymm13
vpaddq 0x220(%rsp), %ymm6, %ymm10
vpaddq 0x240(%rsp), %ymm6, %ymm6
vpmuludq %ymm0, %ymm6, %ymm14
vpsrlq $0x20, %ymm6, %ymm6
vpmuludq %ymm0, %ymm6, %ymm6
vpsllq $0x20, %ymm6, %ymm6
vpaddq %ymm6, %ymm14, %ymm6
vpmuludq %ymm0, %ymm10, %ymm14
vpsrlq $0x20, %ymm10, %ymm10
vpmuludq %ymm0, %ymm10, %ymm10
vpsllq $0x20, %ymm10, %ymm10
vpaddq %ymm10, %ymm14, %ymm10
vpmuludq %ymm0, %ymm13, %ymm14
vpsrlq $0x20, %ymm13, %ymm13
vpmuludq %ymm0, %ymm13, %ymm13
vpsllq $0x20, %ymm13, %ymm13
vpaddq %ymm13, %ymm14, %ymm13
vpmuludq %ymm0, %ymm12, %ymm14
vpsrlq $0x20, %ymm12, %ymm12
vpmuludq %ymm0, %ymm12, %ymm12
vpsllq $0x20, %ymm12, %ymm12
vpaddq %ymm12, %ymm14, %ymm12
vpmuludq %ymm0, %ymm11, %ymm14
vpsrlq $0x20, %ymm11, %ymm11
vpmuludq %ymm0, %ymm11, %ymm11
vpsllq $0x20, %ymm11, %ymm11
vpaddq %ymm11, %ymm14, %ymm11
vpmuludq %ymm0, %ymm7, %ymm14
vpsrlq $0x20, %ymm7, %ymm7
vpmuludq %ymm0, %ymm7, %ymm7
vpsllq $0x20, %ymm7, %ymm7
vpaddq %ymm7, %ymm14, %ymm7
vpmuludq %ymm0, %ymm1, %ymm14
vpsrlq $0x20, %ymm1, %ymm1
vpmuludq %ymm0, %ymm1, %ymm1
vpsllq $0x20, %ymm1, %ymm1
vpaddq %ymm1, %ymm14, %ymm1
vpmuludq %ymm0, %ymm5, %ymm14
vpsrlq $0x20, %ymm5, %ymm5
vpmuludq %ymm0, %ymm5, %ymm5
vpsllq $0x20, %ymm5, %ymm5
vpaddq %ymm5, %ymm14, %ymm5
vmovdqu 0x160(%rsp), %ymm4
vpsubq %ymm5, %ymm4, %ymm14
vpsubq %ymm1, %ymm4, %ymm1
vmovdqu %ymm1, 0x90(%rsp)
vpsubq %ymm7, %ymm4, %ymm1
vpsubq %ymm11, %ymm4, %ymm7
vpsubq %ymm12, %ymm4, %ymm11
vpsubq %ymm13, %ymm4, %ymm2
vpsubq %ymm10, %ymm4, %ymm10
vpsubq %ymm6, %ymm4, %ymm6
vmovdqu 0x200(%rsp), %ymm4
vpmovsxbd 0xd7f0b(%rip), %xmm5 # 0x62dce4
vpshufb %xmm5, %xmm4, %xmm12
vpslld $0x1f, %xmm12, %xmm12
vpsrad $0x1f, %xmm12, %xmm12
vpmovsxdq %xmm12, %ymm12
vpandn %ymm6, %ymm12, %ymm12
vpmovzxbd %xmm4, %xmm6    # xmm6 = xmm4[0],zero,zero,zero,xmm4[1],zero,zero,zero,xmm4[2],zero,zero,zero,xmm4[3],zero,zero,zero
vpslld $0x1f, %xmm6, %xmm6
vpsrad $0x1f, %xmm6, %xmm6
vpmovsxdq %xmm6, %ymm6
vpandn %ymm10, %ymm6, %ymm13
vpmovsxbd 0xd8213(%rip), %xmm15 # 0x62e028
vpshufb %xmm15, %xmm4, %xmm6
vpslld $0x1f, %xmm6, %xmm6
vpsrad $0x1f, %xmm6, %xmm6
vpmovsxdq %xmm6, %ymm6
vpandn %ymm2, %ymm6, %ymm2
vmovdqu %ymm2, 0x30(%rsp)
vpmovsxbd 0xd81f0(%rip), %xmm2 # 0x62e02c
vpshufb %xmm2, %xmm4, %xmm6
vpslld $0x1f, %xmm6, %xmm6
vpsrad $0x1f, %xmm6, %xmm6
vpmovsxdq %xmm6, %ymm6
vpandn %ymm11, %ymm6, %ymm11
vextracti128 $0x1, %ymm4, %xmm4
vpmovzxbd %xmm4, %xmm6    # xmm6 = xmm4[0],zero,zero,zero,xmm4[1],zero,zero,zero,xmm4[2],zero,zero,zero,xmm4[3],zero,zero,zero
vpslld $0x1f, %xmm6, %xmm6
vpsrad $0x1f, %xmm6, %xmm6
vpmovsxdq %xmm6, %ymm6
vpandn %ymm7, %ymm6, %ymm10
vpshufb %xmm5, %xmm4, %xmm6
vpslld $0x1f, %xmm6, %xmm6
vpsrad $0x1f, %xmm6, %xmm6
vpmovsxdq %xmm6, %ymm6
vpandn %ymm1, %ymm6, %ymm6
vpshufb %xmm15, %xmm4, %xmm1
vpslld $0x1f, %xmm1, %xmm7
vpshufb %xmm2, %xmm4, %xmm1
vpslld $0x1f, %xmm1, %xmm1
vpsrad $0x1f, %xmm1, %xmm1
vpmovsxdq %xmm1, %ymm1
vpandn %ymm14, %ymm1, %ymm14
vpcmpgtq %ymm8, %ymm14, %ymm1
vblendvpd %ymm1, %ymm14, %ymm8, %ymm1
vpsrad $0x1f, %xmm7, %xmm4
vpcmpgtq %ymm8, %ymm11, %ymm7
vblendvpd %ymm7, %ymm11, %ymm8, %ymm7
vpmovsxdq %xmm4, %ymm4
vpcmpgtq %ymm8, %ymm13, %ymm5
vblendvpd %ymm5, %ymm13, %ymm8, %ymm2
vpandn 0x90(%rsp), %ymm4, %ymm5
vpcmpgtq %ymm8, %ymm12, %ymm4
vblendvpd %ymm4, %ymm12, %ymm8, %ymm4
vandpd %ymm4, %ymm9, %ymm4
vandpd %ymm2, %ymm9, %ymm2
vpackusdw %ymm4, %ymm2, %ymm2
vmovdqu 0x30(%rsp), %ymm15
vpcmpgtq %ymm8, %ymm15, %ymm4
vblendvpd %ymm4, %ymm15, %ymm8, %ymm4
vandpd %ymm4, %ymm9, %ymm4
vandpd %ymm7, %ymm9, %ymm7
vpackusdw %ymm7, %ymm4, %ymm4
vpcmpgtq %ymm8, %ymm6, %ymm7
vblendvpd %ymm7, %ymm6, %ymm8, %ymm7
vpermq $0xd8, %ymm2, %ymm2     # ymm2 = ymm2[0,2,1,3]
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpackusdw %ymm4, %ymm2, %ymm2
vmovdqu %ymm2, 0x90(%rsp)
vpcmpgtq %ymm8, %ymm10, %ymm2
vblendvpd %ymm2, %ymm10, %ymm8, %ymm2
vandpd %ymm2, %ymm9, %ymm2
vandpd %ymm7, %ymm9, %ymm4
vpackusdw %ymm4, %ymm2, %ymm2
vpcmpgtq %ymm8, %ymm5, %ymm4
vblendvpd %ymm4, %ymm5, %ymm8, %ymm4
vandpd %ymm4, %ymm9, %ymm4
vandpd %ymm1, %ymm9, %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, %ymm7
vmovdqu 0x140(%rsp), %ymm15
vpsubq %ymm15, %ymm12, %ymm2
vpsubq %ymm15, %ymm13, %ymm4
vpsubq %ymm15, %ymm14, %ymm1
vpcmpgtq %ymm8, %ymm1, %ymm12
vblendvpd %ymm12, %ymm1, %ymm8, %ymm1
vpsubq %ymm15, %ymm5, %ymm5
vpcmpgtq %ymm8, %ymm5, %ymm12
vblendvpd %ymm12, %ymm5, %ymm8, %ymm5
vpsubq %ymm15, %ymm6, %ymm6
vpcmpgtq %ymm8, %ymm6, %ymm12
vblendvpd %ymm12, %ymm6, %ymm8, %ymm6
vpsubq %ymm15, %ymm10, %ymm10
vpcmpgtq %ymm8, %ymm10, %ymm12
vblendvpd %ymm12, %ymm10, %ymm8, %ymm10
vpsubq %ymm15, %ymm11, %ymm11
vpcmpgtq %ymm8, %ymm11, %ymm12
vblendvpd %ymm12, %ymm11, %ymm8, %ymm11
vmovdqu 0x30(%rsp), %ymm12
vpsubq %ymm15, %ymm12, %ymm12
vpcmpgtq %ymm8, %ymm12, %ymm13
vblendvpd %ymm13, %ymm12, %ymm8, %ymm12
vpcmpgtq %ymm8, %ymm4, %ymm13
vblendvpd %ymm13, %ymm4, %ymm8, %ymm4
vpcmpgtq %ymm8, %ymm2, %ymm13
vblendvpd %ymm13, %ymm2, %ymm8, %ymm2
vpermq $0xd8, 0x90(%rsp), %ymm13 # ymm13 = mem[0,2,1,3]
vpermq $0xd8, %ymm7, %ymm7     # ymm7 = ymm7[0,2,1,3]
vpackuswb %ymm7, %ymm13, %ymm7
vandpd %ymm2, %ymm9, %ymm2
vandpd %ymm4, %ymm9, %ymm4
vpackusdw %ymm2, %ymm4, %ymm2
vandpd %ymm9, %ymm12, %ymm4
vandpd %ymm9, %ymm11, %ymm11
vpackusdw %ymm11, %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 %ymm9, %ymm10, %ymm4
vandpd %ymm6, %ymm9, %ymm6
vpackusdw %ymm6, %ymm4, %ymm4
vandpd %ymm5, %ymm9, %ymm5
vandpd %ymm1, %ymm9, %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, %ymm7, %ymm4     # ymm4 = ymm7[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, %r10
jne 0x555c83
movb $0x0, (%r12)
movl %r11d, %edi
addl $0x1f, %r11d
andl $-0x20, %r11d
leaq -0x1(%rdi), %rcx
vmovq %rcx, %xmm0
vpbroadcastq %xmm0, %ymm7
vmovss 0x10(%rsp), %xmm0
vbroadcastss %xmm0, %ymm0
vmovups %ymm0, 0x140(%rsp)
vmovd %ebx, %xmm0
vpbroadcastd %xmm0, %ymm0
vmovdqu %ymm0, 0x120(%rsp)
vpmovsxbd 0xd7ece(%rip), %ymm8 # 0x62dfd0
vpmovsxbd 0xd7f15(%rip), %ymm11 # 0x62e020
vpmovsxbd 0xd7d34(%rip), %ymm12 # 0x62de48
vpmovsxbd 0xd7bb3(%rip), %ymm13 # 0x62dcd0
xorl %r8d, %r8d
vpbroadcastq 0xd7a57(%rip), %xmm14 # 0x62db80
vpcmpeqd %xmm2, %xmm2, %xmm2
vpcmpeqd %ymm10, %ymm10, %ymm10
vbroadcastss 0xd7e9d(%rip), %ymm0 # 0x62dfd8
vmovups %ymm0, 0x100(%rsp)
vbroadcastss 0xd7e8f(%rip), %ymm0 # 0x62dfdc
vmovups %ymm0, 0xe0(%rsp)
vpbroadcastq 0xd7a21(%rip), %ymm0 # 0x62db80
vbroadcastss 0xd7a58(%rip), %xmm1 # 0x62dbc0
vmovups %ymm1, 0x30(%rsp)
vpbroadcastd 0xd7e69(%rip), %ymm1 # 0x62dfe0
vmovdqu %ymm1, 0x160(%rsp)
movq 0x88(%rsp), %r13
movl 0x348(%rsp), %r9d
vmovdqu 0x180(%rsp), %ymm15
testl %r9d, %r9d
vmovdqu %ymm8, 0x90(%rsp)
je 0x5561b1
vpxor %xmm8, %xmm8, %xmm8
jmp 0x556257
vpcmpeqd %ymm1, %ymm1, %ymm1
vpaddd %ymm1, %ymm13, %ymm4
vpaddd %ymm1, %ymm12, %ymm5
vpaddd %ymm1, %ymm11, %ymm6
vpcmpeqd %ymm10, %ymm10, %ymm10
vpaddd %ymm1, %ymm8, %ymm8
vmovdqu 0x140(%rsp), %ymm1
vpmulld %ymm1, %ymm8, %ymm8
vpmulld %ymm1, %ymm6, %ymm6
vpmulld %ymm1, %ymm5, %ymm5
vpmulld %ymm1, %ymm4, %ymm4
vmovdqu 0x120(%rsp), %ymm1
vpsubd %ymm4, %ymm1, %ymm4
vpsubd %ymm5, %ymm1, %ymm5
vpsubd %ymm6, %ymm1, %ymm6
vpsubd %ymm8, %ymm1, %ymm8
vmovdqu 0x100(%rsp), %ymm1
vpmaxsd %ymm1, %ymm8, %ymm8
vpmaxsd %ymm1, %ymm6, %ymm6
vpmaxsd %ymm1, %ymm5, %ymm5
vpmaxsd %ymm1, %ymm4, %ymm4
vmovdqu 0xe0(%rsp), %ymm1
vpand %ymm1, %ymm4, %ymm4
vpand %ymm1, %ymm5, %ymm5
vpackusdw %ymm5, %ymm4, %ymm4
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpand %ymm1, %ymm6, %ymm5
vpand %ymm1, %ymm8, %ymm6
vpackusdw %ymm6, %ymm5, %ymm5
vpermq $0xd8, %ymm5, %ymm5     # ymm5 = ymm5[0,2,1,3]
vpackuswb %ymm5, %ymm4, %ymm4
vpermq $0xd8, %ymm4, %ymm8     # ymm8 = ymm4[0,2,1,3]
vmovq %r8, %xmm4
vpbroadcastq %xmm4, %ymm4
vpor 0xd78d7(%rip), %ymm4, %ymm5 # 0x62db40
vpxor %xmm7, %xmm14, %xmm6
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm6, %xmm9, %xmm6
vpackssdw %xmm6, %xmm6, %xmm6
vpxor %xmm2, %xmm6, %xmm6
vpackssdw %xmm6, %xmm6, %xmm6
vpacksswb %xmm6, %xmm6, %xmm6
vmovd %xmm6, %ecx
testb $0x1, %cl
je 0x556297
vpextrb $0x0, %xmm8, 0x1(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm6
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm6, %xmm9, %xmm6
vpackssdw %xmm6, %xmm6, %xmm6
vpxor %xmm2, %xmm6, %xmm6
vpackssdw %xmm6, %xmm6, %xmm6
vpacksswb %xmm6, %xmm6, %xmm6
vpextrb $0x1, %xmm6, %ecx
testb $0x1, %cl
je 0x5562c7
vpextrb $0x1, %xmm8, 0x2(%r12,%r8)
vpxor %ymm0, %ymm7, %ymm6
vpxor %ymm0, %ymm5, %ymm5
vpcmpgtq %ymm6, %ymm5, %ymm5
vpshuflw $0xe8, %ymm5, %ymm9     # ymm9 = ymm5[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm10, %ymm9, %ymm9
vmovdqu 0x30(%rsp), %ymm1
vpermd %ymm9, %ymm1, %ymm9
vpackssdw %xmm9, %xmm9, %xmm9
vpacksswb %xmm9, %xmm9, %xmm9
vpextrb $0x2, %xmm9, %ecx
testb $0x1, %cl
je 0x556306
vpextrb $0x2, %xmm8, 0x3(%r12,%r8)
vextracti128 $0x1, %ymm5, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm2, %xmm5, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x3, %xmm5, %ecx
testb $0x1, %cl
je 0x55632f
vpextrb $0x3, %xmm8, 0x4(%r12,%r8)
vpor 0xd7909(%rip), %ymm4, %ymm9 # 0x62dc40
vpxor %xmm7, %xmm14, %xmm5
vpxor %xmm14, %xmm9, %xmm1
vpcmpgtq %xmm5, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpbroadcastw %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x4, %xmm1, %ecx
testb $0x1, %cl
je 0x556379
vpextrb $0x4, %xmm8, 0x5(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm14, %xmm9, %xmm5
vpcmpgtq %xmm1, %xmm5, %xmm1
vpshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpbroadcastd %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x5, %xmm1, %ecx
testb $0x1, %cl
je 0x5563bc
vpextrb $0x5, %xmm8, 0x6(%r12,%r8)
vpxor %ymm0, %ymm9, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vpackssdw %ymm5, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x6, %xmm1, %ecx
testb $0x1, %cl
je 0x5563ee
vpextrb $0x6, %xmm8, 0x7(%r12,%r8)
vpshufhw $0x84, %ymm5, %ymm1     # ymm1 = ymm5[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vextracti128 $0x1, %ymm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x7, %xmm1, %ecx
testb $0x1, %cl
je 0x556418
vpextrb $0x7, %xmm8, 0x8(%r12,%r8)
vpor 0xd79e0(%rip), %ymm4, %ymm5 # 0x62de00
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpmovzxwd %xmm1, %ymm1    # ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vmovd %xmm1, %ecx
testb $0x1, %cl
je 0x556459
vpextrb $0x8, %xmm8, 0x9(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x1, %xmm1, %ecx
testb $0x1, %cl
je 0x556495
vpextrb $0x9, %xmm8, 0xa(%r12,%r8)
vpxor %ymm0, %ymm5, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vpshuflw $0xe8, %ymm5, %ymm1     # ymm1 = ymm5[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm1, %ymm10, %ymm1
vmovdqu 0x30(%rsp), %ymm9
vpermd %ymm1, %ymm9, %ymm1
vpackssdw %xmm1, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x2, %xmm1, %ecx
testb $0x1, %cl
je 0x5564d9
vpextrb $0xa, %xmm8, 0xb(%r12,%r8)
vextracti128 $0x1, %ymm5, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x3, %xmm1, %ecx
testb $0x1, %cl
je 0x55650e
vpextrb $0xb, %xmm8, 0xc(%r12,%r8)
vpor 0xd78ca(%rip), %ymm4, %ymm5 # 0x62dde0
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x4, %xmm1, %ecx
testb $0x1, %cl
je 0x556552
vpextrb $0xc, %xmm8, 0xd(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x5, %xmm1, %ecx
testb $0x1, %cl
je 0x55658f
vpextrb $0xd, %xmm8, 0xe(%r12,%r8)
vpxor %ymm0, %ymm5, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vpackssdw %ymm5, %ymm0, %ymm1
vpxor %ymm1, %ymm10, %ymm1
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x6, %xmm1, %ecx
testb $0x1, %cl
je 0x5565c1
vpextrb $0xe, %xmm8, 0xf(%r12,%r8)
vpshufhw $0x84, %ymm5, %ymm1     # ymm1 = ymm5[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vpxor %ymm1, %ymm10, %ymm1
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x7, %xmm1, %ecx
testb $0x1, %cl
je 0x5565eb
vpextrb $0xf, %xmm8, 0x10(%r12,%r8)
vpor 0xd796d(%rip), %ymm4, %ymm5 # 0x62df60
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x8, %xmm1, %ecx
vextracti128 $0x1, %ymm8, %xmm8
testb $0x1, %cl
je 0x556629
vpextrb $0x0, %xmm8, 0x11(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x9, %xmm1, %ecx
testb $0x1, %cl
je 0x556659
vpextrb $0x1, %xmm8, 0x12(%r12,%r8)
vpxor %ymm0, %ymm5, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vpshuflw $0xe8, %ymm5, %ymm1     # ymm1 = ymm5[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm1, %ymm10, %ymm1
vmovdqu 0x30(%rsp), %ymm9
vpermd %ymm1, %ymm9, %ymm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0xa, %xmm1, %ecx
testb $0x1, %cl
je 0x556691
vpextrb $0x2, %xmm8, 0x13(%r12,%r8)
vextracti128 $0x1, %ymm5, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0xb, %xmm1, %ecx
testb $0x1, %cl
je 0x5566ba
vpextrb $0x3, %xmm8, 0x14(%r12,%r8)
vpor 0xd787e(%rip), %ymm4, %ymm5 # 0x62df40
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpbroadcastw %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0xc, %xmm1, %ecx
testb $0x1, %cl
je 0x556703
vpextrb $0x4, %xmm8, 0x15(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm0, %ymm1, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpbroadcastd %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0xd, %xmm1, %ecx
testb $0x1, %cl
je 0x556745
vpextrb $0x5, %xmm8, 0x16(%r12,%r8)
vpxor %ymm0, %ymm5, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vpackssdw %ymm5, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0xe, %xmm1, %ecx
testb $0x1, %cl
je 0x556777
vpextrb $0x6, %xmm8, 0x17(%r12,%r8)
vpshufhw $0x84, %ymm5, %ymm1     # ymm1 = ymm5[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vextracti128 $0x1, %ymm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0xf, %xmm1, %ecx
testb $0x1, %cl
je 0x5567a1
vpextrb $0x7, %xmm8, 0x18(%r12,%r8)
vpor 0xd7777(%rip), %ymm4, %ymm5 # 0x62df20
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpmovzxwd %xmm1, %ymm1    # ymm1 = xmm1[0],zero,xmm1[1],zero,xmm1[2],zero,xmm1[3],zero,xmm1[4],zero,xmm1[5],zero,xmm1[6],zero,xmm1[7],zero
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x8, %xmm1, %ecx
testb $0x1, %cl
je 0x5567e4
vpextrb $0x8, %xmm8, 0x19(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm5, %xmm14, %xmm9
vpcmpgtq %xmm1, %xmm9, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0x9, %xmm1, %ecx
testb $0x1, %cl
je 0x556820
vpextrb $0x9, %xmm8, 0x1a(%r12,%r8)
vpxor %ymm0, %ymm5, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm5
vpshuflw $0xe8, %ymm5, %ymm1     # ymm1 = ymm5[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor %ymm1, %ymm10, %ymm1
vmovdqu 0x30(%rsp), %ymm9
vpermd %ymm1, %ymm9, %ymm1
vpackssdw %xmm1, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xa, %xmm1, %ecx
testb $0x1, %cl
je 0x556864
vpextrb $0xa, %xmm8, 0x1b(%r12,%r8)
vextracti128 $0x1, %ymm5, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xb, %xmm1, %ecx
testb $0x1, %cl
je 0x556899
vpextrb $0xb, %xmm8, 0x1c(%r12,%r8)
vpor 0xd765f(%rip), %ymm4, %ymm4 # 0x62df00
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm4, %xmm14, %xmm5
vpcmpgtq %xmm1, %xmm5, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xc, %xmm1, %ecx
testb $0x1, %cl
je 0x5568dd
vpextrb $0xc, %xmm8, 0x1d(%r12,%r8)
vpxor %xmm7, %xmm14, %xmm1
vpxor %xmm4, %xmm14, %xmm5
vpcmpgtq %xmm1, %xmm5, %xmm1
vpshufhw $0x84, %xmm1, %xmm1     # xmm1 = xmm1[0,1,2,3,4,5,4,6]
vpxor %xmm2, %xmm1, %xmm1
vpermq $0x55, %ymm1, %ymm1     # ymm1 = ymm1[1,1,1,1]
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xd, %xmm1, %ecx
testb $0x1, %cl
je 0x55691a
vpextrb $0xd, %xmm8, 0x1e(%r12,%r8)
vpxor %ymm0, %ymm4, %ymm1
vpcmpgtq %ymm6, %ymm1, %ymm4
vpackssdw %ymm4, %ymm0, %ymm1
vpxor %ymm1, %ymm10, %ymm1
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xe, %xmm1, %ecx
testb $0x1, %cl
je 0x55694c
vpextrb $0xe, %xmm8, 0x1f(%r12,%r8)
vpshufhw $0x84, %ymm4, %ymm1     # ymm1 = ymm4[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vpxor %ymm1, %ymm10, %ymm1
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xf, %xmm1, %ecx
testb $0x1, %cl
je 0x556976
vpextrb $0xf, %xmm8, 0x20(%r12,%r8)
addq $0x20, %r8
vmovdqu 0x160(%rsp), %ymm1
vpaddd %ymm1, %ymm13, %ymm13
vpaddd %ymm1, %ymm12, %ymm12
vpaddd %ymm1, %ymm11, %ymm11
vmovdqu 0x90(%rsp), %ymm8
vpaddd %ymm1, %ymm8, %ymm8
cmpq %r8, %r11
jne 0x556199
vpxor %xmm0, %xmm0, %xmm0
vpsubsb %ymm15, %ymm0, %ymm1
leal -0x1(%r10), %r11d
shlq $0x5, %r11
movq %rax, %rcx
addq %r11, %rcx
movl %r10d, %esi
vmovdqu 0x2c0(%rsp), %ymm12
vmovdqa %ymm12, %ymm0
vmovdqa %ymm1, (%rcx)
vpsubsb %ymm3, %ymm1, %ymm1
vpminsb %ymm1, %ymm0, %ymm0
addq $-0x20, %rcx
decl %esi
jg 0x5569cc
addq %r14, %r11
movl 0x68(%rsp), %ecx
movq %rcx, 0xb0(%rsp)
shlq $0x5, %rcx
addq %r14, %rcx
movq %r10, 0x58(%rsp)
shlq $0x5, %r10
xorl %r8d, %r8d
vmovdqu 0x1a0(%rsp), %ymm1
vpcmpeqb 0xd75ec(%rip), %ymm1, %ymm6 # 0x62e000
movl (%rsp), %esi
movl %esi, 0x30(%rsp)
vmovdqu 0x2e0(%rsp), %ymm11
vmovdqa %ymm11, %ymm4
vmovdqa %ymm11, %ymm1
vmovdqu 0x1e0(%rsp), %ymm13
vmovdqu 0x1c0(%rsp), %ymm14
movq %r8, %rsi
vmovdqa (%r11), %ymm2
vinserti128 $0x1, %xmm2, %ymm0, %ymm5
vpalignr $0xf, %ymm5, %ymm2, %ymm2 # ymm2 = ymm5[15],ymm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm5[31],ymm2[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, (%r12,%r8), %xmm2, %xmm5
vpblendd $0xf, %ymm5, %ymm2, %ymm8 # ymm8 = ymm5[0,1,2,3],ymm2[4,5,6,7]
movq 0x20(%rsp), %r8
movq 0x10(%r8), %r8
movq 0x28(%rsp), %r9
movzbl (%r9,%rsi), %r9d
movslq (%r8,%r9,4), %r8
imulq 0x18(%rsp), %r8
shlq $0x5, %r8
addq 0x78(%rsp), %r8
vpsubsb (%rax), %ymm11, %ymm7
xorl %r9d, %r9d
vmovdqa %ymm11, %ymm5
vpaddsb (%r8,%r9), %ymm8, %ymm2
vmovdqa (%r14,%r9), %ymm8
vmovdqa (%r15,%r9), %ymm9
vpsubsb %ymm3, %ymm9, %ymm9
vpsubsb %ymm15, %ymm8, %ymm10
vpmaxsb %ymm10, %ymm9, %ymm9
vpaddsb (%rax,%r9), %ymm7, %ymm7
vpmaxsb %ymm7, %ymm5, %ymm5
vpmaxsb %ymm2, %ymm9, %ymm7
vmovdqa %ymm9, (%r15,%r9)
vmovdqa %ymm7, (%rbp,%r9)
addq $0x20, %r9
cmpq %r9, %r10
jne 0x556a90
vinserti128 $0x1, %xmm7, %ymm0, %ymm2
vpalignr $0xf, %ymm2, %ymm7, %ymm2 # ymm2 = 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]
leaq 0x1(%rsi), %r8
vpinsrb $0x0, 0x1(%r12,%rsi), %xmm2, %xmm7
vpblendd $0xf, %ymm7, %ymm2, %ymm7 # ymm7 = ymm7[0,1,2,3],ymm2[4,5,6,7]
vpaddsb (%rax), %ymm7, %ymm2
vpmaxsb %ymm2, %ymm5, %ymm5
movl $0x1e, %r9d
vperm2i128 $0x28, %ymm5, %ymm5, %ymm2 # ymm2 = zero,zero,ymm5[0,1]
vpalignr $0xf, %ymm2, %ymm5, %ymm2 # ymm2 = ymm2[15],ymm5[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm5[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpaddsb %ymm2, %ymm14, %ymm2
vpmaxsb %ymm2, %ymm5, %ymm5
decl %r9d
jne 0x556b03
vperm2i128 $0x28, %ymm5, %ymm5, %ymm2 # ymm2 = zero,zero,ymm5[0,1]
vpalignr $0xf, %ymm2, %ymm5, %ymm2 # ymm2 = ymm2[15],ymm5[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm5[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpaddsb %ymm2, %ymm13, %ymm5
vpmaxsb %ymm5, %ymm7, %ymm7
xorl %r9d, %r9d
vpsubsb %ymm3, %ymm5, %ymm2
vpsubsb %ymm15, %ymm7, %ymm5
vpmaxsb %ymm5, %ymm2, %ymm5
vpmaxsb (%rbp,%r9), %ymm5, %ymm7
vmovdqa %ymm7, (%r14,%r9)
vpminsb %ymm5, %ymm0, %ymm0
vpminsb %ymm7, %ymm0, %ymm0
vpmaxsb %ymm7, %ymm1, %ymm1
addq $0x20, %r9
cmpq %r9, %r10
jne 0x556b35
vmovdqa (%rcx), %ymm5
vpcmpgtb %ymm4, %ymm5, %ymm2
vpand %ymm6, %ymm2, %ymm2
vpmovmskb %ymm2, %r9d
testl %r9d, %r9d
movl 0x30(%rsp), %r9d
cmovnel %esi, %r9d
movl %r9d, 0x30(%rsp)
vmovdqa %ymm5, %ymm7
cmpl $0x1e, 0x4(%rsp)
jg 0x556baf
xorl %r9d, %r9d
vmovdqa %ymm5, %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 %r9d
cmpl %edx, %r9d
jl 0x556b9b
vpmaxsb %ymm4, %ymm5, %ymm4
vextracti128 $0x1, %ymm7, %xmm2
vpextrb $0xf, %xmm2, %r9d
movsbl %r9b, %r9d
movq 0x10(%r13), %rbx
movq (%rbx), %rbx
movl %r9d, (%rbx,%rsi,4)
cmpq %rdi, %r8
jne 0x556a3e
movq 0x58(%rsp), %r11
leal (,%r11,4), %edi
leal (,%r11,8), %ecx
leaq (%rdi,%rdi,2), %rsi
movq %rsi, 0x28(%rsp)
movl %r11d, %esi
shll $0x4, %esi
movq %rsi, 0x20(%rsp)
leaq (%rdi,%rdi,4), %rsi
movq %rsi, 0x78(%rsp)
movq %rcx, 0x90(%rsp)
leaq (%rcx,%rcx,2), %rcx
movq %rcx, 0x160(%rsp)
movq 0x18(%rsp), %rsi
leaq (%rsi,%rsi,8), %rcx
leaq (%rcx,%rcx,2), %rcx
addq %rsi, %rcx
movq %rcx, 0x18(%rsp)
imulq $0x7c, %r11, %rcx
movq %rcx, 0x140(%rsp)
movl %r11d, %ecx
shll $0x4, %ecx
leaq (%rcx,%rcx,4), %rsi
movq %rsi, 0x120(%rsp)
leal (,%r11,8), %esi
leaq (%rsi,%rsi,8), %r8
movq %r8, 0x100(%rsp)
leal (,%r11,4), %r8d
movq %r11, %r9
shlq $0x6, %r9
movq %r9, 0xe0(%rsp)
addq %r8, %r9
movq %r9, 0x2a0(%rsp)
leaq (%rcx,%rcx,2), %rcx
movq %rcx, 0x280(%rsp)
leaq (%rsi,%rsi,4), %rcx
movq %rcx, 0x260(%rsp)
leaq (%r8,%r8,8), %rcx
movq %rcx, 0x240(%rsp)
imulq $0x78, %r11, %rcx
movq %rcx, 0x220(%rsp)
imulq $0x74, %r11, %rcx
movq %rcx, 0x200(%rsp)
imulq $0x70, %r11, %rcx
movq %rcx, 0x10(%rsp)
imulq $0x6c, %r11, %rcx
movq %rcx, 0x70(%rsp)
imulq $0x68, %r11, %rcx
movq %rcx, 0x68(%rsp)
imulq $0x64, %r11, %rcx
movq %rcx, 0x60(%rsp)
leaq (%r10,%r10,2), %rcx
movq %rcx, 0x1e0(%rsp)
imulq $0x5c, %r11, %rcx
movq %rcx, 0x1c0(%rsp)
imulq $0x58, %r11, %rcx
movq %rcx, 0x1a0(%rsp)
imulq $0x54, %r11, %rcx
movq %rcx, 0x180(%rsp)
imulq $0x4c, %r11, %rcx
movq %rcx, 0xd8(%rsp)
imulq $0x3c, %r11, %rcx
movq %rcx, 0xd0(%rsp)
imulq $0x38, %r11, %rcx
movq %rcx, 0xc8(%rsp)
imulq $0x34, %r11, %r9
imulq $0x2c, %r11, %rcx
xorl %r8d, %r8d
movq 0x10(%r13), %r11
movq 0x8(%r11), %r11
vmovdqa (%r14,%r8,8), %xmm3
vmovdqa 0x10(%r14,%r8,8), %xmm2
vmovd %xmm3, %r13d
movsbl %r13b, %r13d
movl %r13d, (%r11,%r8)
vpextrb $0x1, %xmm3, %r13d
addq %r8, %r11
movsbl %r13b, %r13d
vpextrb $0x2, %xmm3, %esi
movl %r13d, (%rdi,%r11)
movsbl %sil, %esi
vpextrb $0x3, %xmm3, %r13d
movq 0x90(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0x4, %xmm3, %r13d
movq 0x28(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0x5, %xmm3, %r13d
movq 0x20(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0x6, %xmm3, %r13d
movq 0x78(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0x7, %xmm3, %r13d
movq 0x160(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0x8, %xmm3, %r13d
movq 0x18(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0x9, %xmm3, %r13d
movl %esi, (%r10,%r11)
movsbl %r13b, %esi
vpextrb $0xa, %xmm3, %r13d
movq 0x240(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0xb, %xmm3, %r13d
movq 0x260(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0xc, %xmm3, %r13d
movl %esi, (%rcx,%r11)
movsbl %r13b, %esi
vpextrb $0xd, %xmm3, %r13d
movq 0x280(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
vpextrb $0xe, %xmm3, %r13d
movl %esi, (%r9,%r11)
movsbl %r13b, %esi
vpextrb $0xf, %xmm3, %r13d
movq 0xc8(%rsp), %rbx
movl %esi, (%rbx,%r11)
movsbl %r13b, %esi
movq 0x88(%rsp), %r13
movq 0xd0(%rsp), %rbx
movl %esi, (%rbx,%r11)
vmovd %xmm2, %esi
movsbl %sil, %esi
movq 0xe0(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x1, %xmm2, %esi
movsbl %sil, %esi
movq 0x2a0(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x2, %xmm2, %esi
movsbl %sil, %esi
movq 0x100(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x3, %xmm2, %esi
movsbl %sil, %esi
movq 0xd8(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x4, %xmm2, %esi
movsbl %sil, %esi
movq 0x120(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x5, %xmm2, %esi
movsbl %sil, %esi
movq 0x180(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x6, %xmm2, %esi
movsbl %sil, %esi
movq 0x1a0(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x7, %xmm2, %esi
movsbl %sil, %esi
movq 0x1c0(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x8, %xmm2, %esi
movsbl %sil, %esi
movq 0x1e0(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0x9, %xmm2, %esi
movsbl %sil, %esi
movq 0x60(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0xa, %xmm2, %esi
movsbl %sil, %esi
movq 0x68(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0xb, %xmm2, %esi
movsbl %sil, %esi
movq 0x70(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0xc, %xmm2, %esi
movsbl %sil, %esi
movq 0x10(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0xd, %xmm2, %esi
movsbl %sil, %esi
movq 0x200(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0xe, %xmm2, %esi
movsbl %sil, %esi
movq 0x220(%rsp), %rbx
movl %esi, (%rbx,%r11)
vpextrb $0xf, %xmm2, %esi
movsbl %sil, %esi
movq 0x140(%rsp), %rbx
movl %esi, (%rbx,%r11)
addq $0x4, %r8
cmpq %r8, %rdi
jne 0x556d46
cmpl $0x0, 0x350(%rsp)
movl 0x8(%rsp), %r8d
movq 0xc0(%rsp), %r11
movl 0xc(%rsp), %ebx
je 0x557032
cmpl $0x1e, 0x4(%rsp)
jg 0x557026
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 0x557014
vextracti128 $0x1, %ymm4, %xmm2
vpextrb $0xf, %xmm2, %ebx
cmpl $0x0, 0x340(%rsp)
je 0x5570b1
cmpl $0x0, 0xb8(%rsp)
je 0x5570b1
movq 0x58(%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 0x58(%rsp), %r8d
addl %r9d, %r8d
cmpl %r11d, %r8d
jge 0x5570a8
movb (%r14,%rdi), %r9b
cmpb %bl, %r9b
jle 0x55708d
movl %r9d, %ebx
movl (%rsp), %ecx
movl %ecx, 0x30(%rsp)
movl %r8d, %ecx
jmp 0x5570a8
cmpl %ecx, %r8d
cmovgel %ecx, %r8d
movl 0x30(%rsp), %r10d
cmpl (%rsp), %r10d
cmovnel %ecx, %r8d
cmpb %bl, %r9b
cmovel %r8d, %ecx
incq %rdi
cmpl %edi, %esi
jne 0x557059
jmp 0x5570b4
movl %r8d, %ecx
movl 0x340(%rsp), %esi
orl %esi, 0x84(%rsp)
jne 0x557162
movq 0xb0(%rsp), %rcx
shlq $0x5, %rcx
vmovdqa (%r14,%rcx), %ymm2
cmpl $0x1e, 0x4(%rsp)
jg 0x557149
xorl %ecx, %ecx
movl 0x8(%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 0x5570e7
jmp 0x55714d
callq 0x1f06b1
jmp 0x557131
callq 0x1f068b
jmp 0x557131
callq 0x1f0665
jmp 0x557131
callq 0x1f063f
jmp 0x557131
callq 0x1f0619
jmp 0x557131
callq 0x1f05f3
jmp 0x557131
callq 0x1f05cd
jmp 0x557131
callq 0x1f05a7
xorl %r13d, %r13d
movq %r13, %rax
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl 0x8(%rsp), %esi
vextracti128 $0x1, %ymm2, %xmm2
vpextrb $0xf, %xmm2, %ebx
movl (%rsp), %ecx
movl %ecx, 0x30(%rsp)
movl %esi, %ecx
vpcmpgtb %ymm0, %ymm11, %ymm0
vpcmpgtb %ymm12, %ymm1, %ymm1
vpor %ymm0, %ymm1, %ymm0
vpmovmskb %ymm0, %edx
testl %edx, %edx
je 0x557188
orb $0x40, 0xc(%r13)
xorl %ebx, %ebx
movl $0x0, 0x30(%rsp)
xorl %ecx, %ecx
movsbl %bl, %edx
movl %edx, (%r13)
movl %ecx, 0x4(%r13)
movl 0x30(%rsp), %ecx
movl %ecx, 0x8(%r13)
movq %rax, %rdi
vzeroupper
callq 0x20a60d
movq %r14, %rdi
callq 0x20a60d
movq %rbp, %rdi
callq 0x20a60d
movq %r12, %rdi
callq 0x20a60d
movq %r15, %rdi
callq 0x20a60d
jmp 0x557134