// File: /workspace/github_c_makefile_star2_O3/nh13[P]ksw/src/parasail/src/nw_trace_striped_avx2_256_8.c
// Function: parasail_nw_trace_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)
{
    /* 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;
    __m256i* restrict pvEaStore = NULL;
    __m256i* restrict pvEaLoad = NULL;
    __m256i* restrict pvHT = 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;
    parasail_result_t *result = NULL;
    __m256i vTIns;
    __m256i vTDel;
    __m256i vTDiag;
    __m256i vTDiagE;
    __m256i vTInsE;
    __m256i vTDiagF;
    __m256i vTDelF;
    __m256i vTMask;
    __m256i vFTMask;

    /* 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;
    vTIns  = _mm256_set1_epi8(PARASAIL_INS);
    vTDel  = _mm256_set1_epi8(PARASAIL_DEL);
    vTDiag = _mm256_set1_epi8(PARASAIL_DIAG);
    vTDiagE = _mm256_set1_epi8(PARASAIL_DIAG_E);
    vTInsE = _mm256_set1_epi8(PARASAIL_INS_E);
    vTDiagF = _mm256_set1_epi8(PARASAIL_DIAG_F);
    vTDelF = _mm256_set1_epi8(PARASAIL_DEL_F);
    vTMask = _mm256_set1_epi8(PARASAIL_ZERO_MASK);
    vFTMask = _mm256_set1_epi8(PARASAIL_F_MASK);

    /* initialize result */
    result = parasail_result_new_trace(segLen, s2Len, 32, sizeof(__m256i));
    if (!result) return NULL;

    /* set known flags */
    result->flag |= PARASAIL_FLAG_NW | PARASAIL_FLAG_STRIPED
        | PARASAIL_FLAG_TRACE
        | PARASAIL_FLAG_BITS_8 | PARASAIL_FLAG_LANES_32;

    /* initialize heap variables */
    pvHStore = parasail_memalign___m256i(32, segLen);
    pvHLoad = parasail_memalign___m256i(32, segLen);
    pvE = parasail_memalign___m256i(32, segLen);
    pvEaStore = parasail_memalign___m256i(32, segLen);
    pvEaLoad = parasail_memalign___m256i(32, segLen);
    pvHT = 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 (!pvEaStore) return NULL;
    if (!pvEaLoad) return NULL;
    if (!pvHT) 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 = -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);
            _mm256_store_si256(&pvEaStore[index], e.m);
            ++index;
        }
    }

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

    for (i=0; i<segLen; ++i) {
        arr_store(result->trace->trace_table, vTDiagE, i, segLen, 0);
    }

    /* outer loop over database sequence */
    for (j=0; j<s2Len; ++j) {
        __m256i vEF_opn;
        __m256i vE;
        __m256i vE_ext;
        __m256i vF;
        __m256i vF_ext;
        __m256i vFa;
        __m256i vFa_ext;
        __m256i vH;
        __m256i vH_dag;
        const __m256i* vP = NULL;

        /* Initialize F value to -inf.  Any errors to vH values will be
         * corrected in the Lazy_F loop.  */
        vF = vNegLimit;

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

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

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

        /* Swap the 2 H buffers. */
        SWAP(pvHLoad, pvHStore)
        SWAP(pvEaLoad, pvEaStore)

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

            /* Get max from vH, vE and vF. */
            vH_dag = _mm256_adds_epi8(vH, _mm256_load_si256(vP + i));
            vH = _mm256_max_epi8(vH_dag, 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);

            {
                __m256i vTAll = arr_load(result->trace->trace_table, i, segLen, j);
                __m256i case1 = _mm256_cmpeq_epi8(vH, vH_dag);
                __m256i case2 = _mm256_cmpeq_epi8(vH, vF);
                __m256i vT = _mm256_blendv_epi8(
                        _mm256_blendv_epi8(vTIns, vTDel, case2),
                        vTDiag, case1);
                _mm256_store_si256(pvHT + i, vT);
                vT = _mm256_or_si256(vT, vTAll);
                arr_store(result->trace->trace_table, vT, i, segLen, j);
            }

            vEF_opn = _mm256_subs_epi8(vH, vGapO);

            /* Update vE value. */
            vE_ext = _mm256_subs_epi8(vE, vGapE);
            vE = _mm256_max_epi8(vEF_opn, vE_ext);
            _mm256_store_si256(pvE + i, vE);
            {
                __m256i vEa = _mm256_load_si256(pvEaLoad + i);
                __m256i vEa_ext = _mm256_subs_epi8(vEa, vGapE);
                vEa = _mm256_max_epi8(vEF_opn, vEa_ext);
                _mm256_store_si256(pvEaStore + i, vEa);
                if (j+1<s2Len) {
                    __m256i cond = _mm256_cmpgt_epi8(vEF_opn, vEa_ext);
                    __m256i vT = _mm256_blendv_epi8(vTInsE, vTDiagE, cond);
                    arr_store(result->trace->trace_table, vT, i, segLen, j+1);
                }
            }

            /* Update vF value. */
            vF_ext = _mm256_subs_epi8(vF, vGapE);
            vF = _mm256_max_epi8(vEF_opn, vF_ext);
            if (i+1<segLen) {
                __m256i vTAll = arr_load(result->trace->trace_table, i+1, segLen, j);
                __m256i cond = _mm256_cmpgt_epi8(vEF_opn, vF_ext);
                __m256i vT = _mm256_blendv_epi8(vTDelF, vTDiagF, cond);
                vT = _mm256_or_si256(vT, vTAll);
                arr_store(result->trace->trace_table, vT, i+1, segLen, j);
            }

            /* 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 */
        vFa_ext = vF_ext;
        vFa = vF;
        for (k=0; k<segWidth; ++k) {
            int64_t tmp = boundary[j+1]-open;
            int8_t tmp2 = tmp < INT8_MIN ? INT8_MIN : tmp;
            __m256i vHp = _mm256_load_si256(&pvHLoad[segLen - 1]);
            vHp = _mm256_slli_si256_rpl(vHp, 1);
            vHp = _mm256_insert_epi8_rpl(vHp, boundary[j], 0);
            vEF_opn = _mm256_slli_si256_rpl(vEF_opn, 1);
            vEF_opn = _mm256_insert_epi8_rpl(vEF_opn, tmp2, 0);
            vF_ext = _mm256_slli_si256_rpl(vF_ext, 1);
            vF_ext = _mm256_insert_epi8_rpl(vF_ext, NEG_LIMIT, 0);
            vF = _mm256_slli_si256_rpl(vF, 1);
            vF = _mm256_insert_epi8_rpl(vF, tmp2, 0);
            vFa_ext = _mm256_slli_si256_rpl(vFa_ext, 1);
            vFa_ext = _mm256_insert_epi8_rpl(vFa_ext, NEG_LIMIT, 0);
            vFa = _mm256_slli_si256_rpl(vFa, 1);
            vFa = _mm256_insert_epi8_rpl(vFa, 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);
                {
                    __m256i vTAll;
                    __m256i vT;
                    __m256i case1;
                    __m256i case2;
                    __m256i cond;
                    vHp = _mm256_adds_epi8(vHp, _mm256_load_si256(vP + i));
                    case1 = _mm256_cmpeq_epi8(vH, vHp);
                    case2 = _mm256_cmpeq_epi8(vH, vF);
                    cond = _mm256_andnot_si256(case1,case2);
                    vTAll = arr_load(result->trace->trace_table, i, segLen, j);
                    vT = _mm256_load_si256(pvHT + i);
                    vT = _mm256_blendv_epi8(vT, vTDel, cond);
                    _mm256_store_si256(pvHT + i, vT);
                    vTAll = _mm256_and_si256(vTAll, vTMask);
                    vTAll = _mm256_or_si256(vTAll, vT);
                    arr_store(result->trace->trace_table, vTAll, i, segLen, j);
                }
                /* Update vF value. */
                {
                    __m256i vTAll = arr_load(result->trace->trace_table, i, segLen, j);
                    __m256i cond = _mm256_cmpgt_epi8(vEF_opn, vFa_ext);
                    __m256i vT = _mm256_blendv_epi8(vTDelF, vTDiagF, cond);
                    vTAll = _mm256_and_si256(vTAll, vFTMask);
                    vTAll = _mm256_or_si256(vTAll, vT);
                    arr_store(result->trace->trace_table, vTAll, i, segLen, j);
                }
                vEF_opn = _mm256_subs_epi8(vH, vGapO);
                vF_ext = _mm256_subs_epi8(vF, vGapE);
                {
                    __m256i vEa = _mm256_load_si256(pvEaLoad + i);
                    __m256i vEa_ext = _mm256_subs_epi8(vEa, vGapE);
                    vEa = _mm256_max_epi8(vEF_opn, vEa_ext);
                    _mm256_store_si256(pvEaStore + i, vEa);
                    if (j+1<s2Len) {
                        __m256i cond = _mm256_cmpgt_epi8(vEF_opn, vEa_ext);
                        __m256i vT = _mm256_blendv_epi8(vTInsE, vTDiagE, cond);
                        arr_store(result->trace->trace_table, vT, i, segLen, j+1);
                    }
                }
                if (! _mm256_movemask_epi8(
                            _mm256_or_si256(
                                _mm256_cmpgt_epi8(vF_ext, vEF_opn),
                                _mm256_cmpeq_epi8(vF_ext, vEF_opn))))
                    goto end;
                /*vF = _mm256_max_epi8(vEF_opn, vF_ext);*/
                vF = vF_ext;
                vFa_ext = _mm256_subs_epi8(vFa, vGapE);
                vFa = _mm256_max_epi8(vEF_opn, vFa_ext);
                vHp = _mm256_load_si256(pvHLoad + i);
            }
        }
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);
    }

    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(pvHT);
    parasail_free(pvEaLoad);
    parasail_free(pvEaStore);
    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 $0x268, %rsp            # imm = 0x268
movl %ecx, 0x8(%rsp)
movq %rsi, 0x58(%rsp)
testq %rdi, %rdi
je 0x5c69cf
movq 0x18(%rdi), %rax
movq %rax, 0xb8(%rsp)
testq %rax, %rax
je 0x5c69d6
movq 0x10(%rdi), %rax
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x5c69dd
movl 0x8(%rdi), %r15d
testl %r15d, %r15d
jle 0x5c69e4
cmpq $0x0, 0x58(%rsp)
je 0x5c69eb
movl %edx, %r9d
testl %edx, %edx
jle 0x5c69f2
cmpl $0x0, 0x8(%rsp)
js 0x5c69f9
testl %r8d, %r8d
js 0x5c6a00
movl %r8d, 0x44(%rsp)
leal -0x1(%r15), %ebp
addq $0x1f, %r15
shrq $0x5, %r15
movl %ebp, %eax
xorl %edx, %edx
divl %r15d
movl %eax, %r14d
movl %edx, %r12d
movq 0x50(%rsp), %rdx
movl 0x20(%rdx), %eax
movl %eax, %ecx
negb %cl
movzbl %cl, %esi
movl 0x8(%rsp), %ecx
movl %ecx, %r8d
negl %r8d
movl %r8d, 0x40(%rsp)
cmpl %r8d, %eax
cmovgl %ecx, %esi
movl %esi, 0xc(%rsp)
movb $0x7e, %r13b
subb 0x1c(%rdx), %r13b
movl $0x20, %edx
movl $0x20, %ecx
movl %r15d, %edi
movl %r9d, %esi
movq %r9, 0x48(%rsp)
callq 0x20adf4
testq %rax, %rax
je 0x5c6a05
movq %rax, %rbx
movl %r13d, 0x60(%rsp)
movl %r12d, 0x3c(%rsp)
movl %r14d, 0x1c(%rsp)
movl %ebp, 0x38(%rsp)
orl $0x20180801, 0xc(%rax)  # imm = 0x20180801
movl $0x20, %edi
movq %r15, %rsi
callq 0x4f1904
movq %rax, 0xa8(%rsp)
movl $0x20, %edi
movq %r15, %rsi
callq 0x4f1904
movq %rax, %r12
movl $0x20, %edi
movq %r15, %rsi
callq 0x4f1904
movq %rax, 0x28(%rsp)
movl $0x20, %edi
movq %r15, %rsi
callq 0x4f1904
movq %rax, %r13
movl $0x20, %edi
movq %r15, %rsi
callq 0x4f1904
movq %rax, %rbp
movl $0x20, %edi
movq %r15, %rsi
callq 0x4f1904
movq %rax, %r14
movq 0x48(%rsp), %rax
leal 0x1(%rax), %esi
movl $0x20, %edi
callq 0x20a620
movq %r13, %rdi
movq 0xa8(%rsp), %r11
movq 0x28(%rsp), %r13
testq %r11, %r11
sete %dl
movq %r12, 0x10(%rsp)
testq %r12, %r12
sete %cl
orb %dl, %cl
testq %r13, %r13
sete %sil
testq %rdi, %rdi
sete %dl
orb %sil, %dl
orb %cl, %dl
testq %rbp, %rbp
sete %sil
testq %r14, %r14
sete %cl
orb %sil, %cl
testq %rax, %rax
sete %sil
orb %cl, %sil
orb %dl, %sil
testb $0x1, %sil
jne 0x5c6a05
movq %rax, 0x20(%rsp)
movq 0x48(%rsp), %r10
leal -0x1(%r10), %eax
movl %eax, 0x18(%rsp)
movl $0x1f, %eax
subl 0x1c(%rsp), %eax
movl %eax, 0x34(%rsp)
movl 0x8(%rsp), %eax
vmovd %eax, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x220(%rsp)
movl 0x44(%rsp), %r8d
vmovd %r8d, %xmm0
vpbroadcastb %xmm0, %ymm3
movl 0xc(%rsp), %ecx
addb $-0x7f, %cl
movl %ecx, 0xc(%rsp)
vmovd %ecx, %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x1e0(%rsp)
vmovd 0x60(%rsp), %xmm0
vpbroadcastb %xmm0, %ymm0
vmovdqu %ymm0, 0x200(%rsp)
movl %eax, %eax
movl %r15d, %esi
movl %r8d, %ecx
movl 0x40(%rsp), %r12d
movslq %r12d, %rdx
vmovq %rcx, %xmm0
vpbroadcastq %xmm0, %ymm0
vmovq %rdx, %xmm1
vpbroadcastq %xmm1, %ymm1
vmovdqu %ymm1, 0x240(%rsp)
vmovq %rax, %xmm4
movq %rsi, 0xb0(%rsp)
vmovq %rsi, %xmm5
vpbroadcastq %xmm5, %ymm5
vpmuldq 0x6872c(%rip), %ymm5, %ymm1 # 0x62df00
vmovdqu %ymm1, 0x100(%rsp)
vpmuldq 0x6873a(%rip), %ymm5, %ymm1 # 0x62df20
vmovdqu %ymm1, 0xc0(%rsp)
vpmuldq 0x68748(%rip), %ymm5, %ymm1 # 0x62df40
vmovdqu %ymm1, 0xe0(%rsp)
vpmuldq 0x68756(%rip), %ymm5, %ymm1 # 0x62df60
vmovdqu %ymm1, 0x1c0(%rsp)
vpmuldq 0x685c4(%rip), %ymm5, %ymm1 # 0x62dde0
vmovdqu %ymm1, 0x1a0(%rsp)
vpmuldq 0x685d2(%rip), %ymm5, %ymm1 # 0x62de00
vmovdqu %ymm1, 0x180(%rsp)
vpmuldq 0x68400(%rip), %ymm5, %ymm1 # 0x62dc40
vmovdqu %ymm1, 0x160(%rsp)
vpmuldq 0x682ee(%rip), %ymm5, %ymm1 # 0x62db40
vmovdqu %ymm1, 0x140(%rsp)
vpbroadcastq %xmm4, %ymm1
vmovdqu %ymm1, 0x120(%rsp)
xorl %ecx, %ecx
vpbroadcastq 0x6874c(%rip), %ymm13 # 0x62dfc0
movq %r11, %rdx
movq %r13, %rsi
movq %rdi, %r13
vbroadcastsd 0x68742(%rip), %ymm14 # 0x62dfc8
vmovq %rcx, %xmm4
vpbroadcastq %xmm4, %ymm5
vpaddq 0x160(%rsp), %ymm5, %ymm4
vpaddq 0x140(%rsp), %ymm5, %ymm6
vpaddq 0x180(%rsp), %ymm5, %ymm7
vpaddq 0x1a0(%rsp), %ymm5, %ymm8
vpaddq 0x1c0(%rsp), %ymm5, %ymm9
vpaddq 0xe0(%rsp), %ymm5, %ymm10
vpaddq 0xc0(%rsp), %ymm5, %ymm11
vpaddq 0x100(%rsp), %ymm5, %ymm5
vpmuludq %ymm0, %ymm5, %ymm15
vpsrlq $0x20, %ymm5, %ymm5
vpmuludq %ymm0, %ymm5, %ymm5
vpsllq $0x20, %ymm5, %ymm5
vpaddq %ymm5, %ymm15, %ymm5
vpmuludq %ymm0, %ymm11, %ymm15
vpsrlq $0x20, %ymm11, %ymm11
vpmuludq %ymm0, %ymm11, %ymm11
vpsllq $0x20, %ymm11, %ymm11
vpaddq %ymm11, %ymm15, %ymm1
vmovdqu %ymm1, 0x60(%rsp)
vpmuludq %ymm0, %ymm10, %ymm15
vpsrlq $0x20, %ymm10, %ymm10
vpmuludq %ymm0, %ymm10, %ymm10
vpsllq $0x20, %ymm10, %ymm10
vpaddq %ymm10, %ymm15, %ymm10
vpmuludq %ymm0, %ymm9, %ymm15
vpsrlq $0x20, %ymm9, %ymm9
vpmuludq %ymm0, %ymm9, %ymm9
vpsllq $0x20, %ymm9, %ymm9
vpaddq %ymm9, %ymm15, %ymm1
vpmuludq %ymm0, %ymm8, %ymm9
vpsrlq $0x20, %ymm8, %ymm8
vpmuludq %ymm0, %ymm8, %ymm8
vpsllq $0x20, %ymm8, %ymm8
vpaddq %ymm8, %ymm9, %ymm8
vpmuludq %ymm0, %ymm7, %ymm9
vpsrlq $0x20, %ymm7, %ymm7
vpmuludq %ymm0, %ymm7, %ymm7
vpsllq $0x20, %ymm7, %ymm7
vpaddq %ymm7, %ymm9, %ymm9
vpmuludq %ymm0, %ymm6, %ymm7
vpsrlq $0x20, %ymm6, %ymm6
vpmuludq %ymm0, %ymm6, %ymm6
vpsllq $0x20, %ymm6, %ymm6
vpaddq %ymm6, %ymm7, %ymm7
vpmuludq %ymm0, %ymm4, %ymm6
vpsrlq $0x20, %ymm4, %ymm4
vpmuludq %ymm0, %ymm4, %ymm4
vpsllq $0x20, %ymm4, %ymm4
vpaddq %ymm4, %ymm6, %ymm4
vmovdqu 0x240(%rsp), %ymm2
vpsubq %ymm4, %ymm2, %ymm6
vpsubq %ymm7, %ymm2, %ymm7
vpsubq %ymm9, %ymm2, %ymm15
vpsubq %ymm8, %ymm2, %ymm4
vpsubq %ymm5, %ymm2, %ymm8
vpcmpgtq %ymm13, %ymm8, %ymm5
vblendvpd %ymm5, %ymm8, %ymm13, %ymm5
vmovupd %ymm5, 0x80(%rsp)
vpsubq %ymm1, %ymm2, %ymm5
vpcmpgtq %ymm13, %ymm4, %ymm1
vblendvpd %ymm1, %ymm4, %ymm13, %ymm1
vpsubq %ymm10, %ymm2, %ymm10
vpcmpgtq %ymm13, %ymm7, %ymm11
vblendvpd %ymm11, %ymm7, %ymm13, %ymm12
vpsubq 0x60(%rsp), %ymm2, %ymm11
vpcmpgtq %ymm13, %ymm6, %ymm9
vblendvpd %ymm9, %ymm6, %ymm13, %ymm9
vandpd %ymm14, %ymm9, %ymm9
vandpd %ymm14, %ymm12, %ymm12
vpackusdw %ymm9, %ymm12, %ymm9
vpcmpgtq %ymm13, %ymm15, %ymm12
vblendvpd %ymm12, %ymm15, %ymm13, %ymm12
vandpd %ymm14, %ymm12, %ymm12
vandpd %ymm1, %ymm14, %ymm1
vpackusdw %ymm1, %ymm12, %ymm1
vpcmpgtq %ymm13, %ymm10, %ymm12
vblendvpd %ymm12, %ymm10, %ymm13, %ymm12
vpermq $0xd8, %ymm9, %ymm9     # ymm9 = ymm9[0,2,1,3]
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpackusdw %ymm1, %ymm9, %ymm1
vmovdqu %ymm1, 0x60(%rsp)
vpcmpgtq %ymm13, %ymm5, %ymm1
vblendvpd %ymm1, %ymm5, %ymm13, %ymm1
vandpd %ymm1, %ymm14, %ymm1
vandpd %ymm14, %ymm12, %ymm9
vpackusdw %ymm9, %ymm1, %ymm1
vpcmpgtq %ymm13, %ymm11, %ymm9
vblendvpd %ymm9, %ymm11, %ymm13, %ymm9
vandpd %ymm14, %ymm9, %ymm9
vandpd 0x80(%rsp), %ymm14, %ymm12
vpackusdw %ymm12, %ymm9, %ymm9
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpermq $0xd8, %ymm9, %ymm9     # ymm9 = ymm9[0,2,1,3]
vpackusdw %ymm9, %ymm1, %ymm9
vmovdqu 0x120(%rsp), %ymm2
vpsubq %ymm2, %ymm6, %ymm1
vpsubq %ymm2, %ymm7, %ymm12
vpsubq %ymm2, %ymm8, %ymm6
vpcmpgtq %ymm13, %ymm6, %ymm7
vblendvpd %ymm7, %ymm6, %ymm13, %ymm6
vpsubq %ymm2, %ymm11, %ymm7
vpcmpgtq %ymm13, %ymm7, %ymm8
vblendvpd %ymm8, %ymm7, %ymm13, %ymm7
vpsubq %ymm2, %ymm10, %ymm8
vpcmpgtq %ymm13, %ymm8, %ymm10
vblendvpd %ymm10, %ymm8, %ymm13, %ymm8
vpsubq %ymm2, %ymm5, %ymm5
vpcmpgtq %ymm13, %ymm5, %ymm10
vblendvpd %ymm10, %ymm5, %ymm13, %ymm5
vpsubq %ymm2, %ymm4, %ymm4
vpcmpgtq %ymm13, %ymm4, %ymm10
vblendvpd %ymm10, %ymm4, %ymm13, %ymm4
vpsubq %ymm2, %ymm15, %ymm10
vpcmpgtq %ymm13, %ymm10, %ymm11
vblendvpd %ymm11, %ymm10, %ymm13, %ymm10
vpcmpgtq %ymm13, %ymm12, %ymm11
vblendvpd %ymm11, %ymm12, %ymm13, %ymm11
vpcmpgtq %ymm13, %ymm1, %ymm12
vblendvpd %ymm12, %ymm1, %ymm13, %ymm1
vpermq $0xd8, 0x60(%rsp), %ymm12 # ymm12 = mem[0,2,1,3]
vpermq $0xd8, %ymm9, %ymm9     # ymm9 = ymm9[0,2,1,3]
vpackuswb %ymm9, %ymm12, %ymm9
vandpd %ymm1, %ymm14, %ymm1
vandpd %ymm14, %ymm11, %ymm11
vpackusdw %ymm1, %ymm11, %ymm1
vandpd %ymm14, %ymm10, %ymm10
vandpd %ymm4, %ymm14, %ymm4
vpackusdw %ymm4, %ymm10, %ymm4
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpackusdw %ymm4, %ymm1, %ymm1
vandpd %ymm5, %ymm14, %ymm4
vandpd %ymm14, %ymm8, %ymm5
vpackusdw %ymm5, %ymm4, %ymm4
vandpd %ymm7, %ymm14, %ymm5
vandpd %ymm6, %ymm14, %ymm6
vpackusdw %ymm6, %ymm5, %ymm5
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpermq $0xd8, %ymm5, %ymm5     # ymm5 = ymm5[0,2,1,3]
vpackusdw %ymm5, %ymm4, %ymm4
vpermq $0xd8, %ymm9, %ymm5     # ymm5 = ymm9[0,2,1,3]
vmovdqa %ymm5, (%rdx)
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vpermq $0xd8, %ymm4, %ymm4     # ymm4 = ymm4[0,2,1,3]
vpackuswb %ymm4, %ymm1, %ymm1
vpermq $0xd8, %ymm1, %ymm1     # ymm1 = ymm1[0,2,1,3]
vmovdqa %ymm1, (%rsi)
vmovdqa %ymm1, (%rdi)
incq %rcx
addq $0x20, %rdi
addq $0x20, %rsi
addq $0x20, %rdx
cmpq %rcx, %r15
jne 0x5c5886
movq 0x20(%rsp), %rdi
movb $0x0, (%rdi)
movl %r10d, %eax
addl $0x1f, %r10d
andl $-0x20, %r10d
movq %rax, 0x60(%rsp)
decq %rax
vmovq %rax, %xmm0
vpbroadcastq %xmm0, %ymm4
vmovd %r8d, %xmm0
vpbroadcastd %xmm0, %ymm0
vmovdqu %ymm0, 0x1a0(%rsp)
vmovd %r12d, %xmm0
vpbroadcastd %xmm0, %ymm0
vmovdqu %ymm0, 0x1c0(%rsp)
vpmovsxbd 0x683c0(%rip), %ymm2 # 0x62dfd0
vmovaps 0x68388(%rip), %ymm0    # 0x62dfa0
vmovups %ymm0, 0x80(%rsp)
vpmovsxbd 0x6821e(%rip), %ymm7 # 0x62de48
vpmovsxbd 0x6809d(%rip), %ymm5 # 0x62dcd0
xorl %r8d, %r8d
vpbroadcastq 0x67f41(%rip), %xmm13 # 0x62db80
vbroadcastss 0x68390(%rip), %ymm0 # 0x62dfd8
vmovups %ymm0, 0x180(%rsp)
vbroadcastss 0x68382(%rip), %ymm0 # 0x62dfdc
vmovups %ymm0, 0x160(%rsp)
vpbroadcastq 0x67f14(%rip), %ymm8 # 0x62db80
vpbroadcastd 0x67f4b(%rip), %xmm10 # 0x62dbc0
vpbroadcastd 0x68362(%rip), %ymm0 # 0x62dfe0
vmovdqu %ymm0, 0x120(%rsp)
vmovdqu %ymm10, 0x140(%rsp)
vpcmpeqd %ymm14, %ymm14, %ymm14
vmovdqa %ymm8, %ymm10
vmovq %r8, %xmm0
vpbroadcastq %xmm0, %ymm0
vmovdqu %ymm0, 0xe0(%rsp)
vpor 0x67e8b(%rip), %ymm0, %ymm0 # 0x62db40
vpxor %xmm4, %xmm13, %xmm1
vpxor %xmm0, %xmm13, %xmm11
vmovdqu %ymm5, 0xc0(%rsp)
vpaddd 0x68592(%rip), %ymm5, %ymm5 # 0x62e260
vpcmpeqd %ymm8, %ymm8, %ymm8
vmovdqu %ymm7, 0x100(%rsp)
vpaddd %ymm7, %ymm8, %ymm15
vmovdqa %ymm2, %ymm9
vpaddd %ymm2, %ymm8, %ymm7
vmovdqu 0x1a0(%rsp), %ymm8
vpmulld %ymm8, %ymm7, %ymm7
vpmulld %ymm8, %ymm15, %ymm15
vpmulld %ymm8, %ymm5, %ymm5
vpcmpgtq %xmm1, %xmm11, %xmm1
vmovdqu 0x1c0(%rsp), %ymm2
vpsubd %ymm5, %ymm2, %ymm5
vpsubd %ymm15, %ymm2, %ymm11
vmovdqu 0x80(%rsp), %ymm6
vmovdqu 0x180(%rsp), %ymm12
vpmaxsd %ymm12, %ymm11, %ymm11
vpmaxsd %ymm12, %ymm5, %ymm5
vmovdqu 0x160(%rsp), %ymm15
vpand %ymm5, %ymm15, %ymm5
vpand %ymm15, %ymm11, %ymm11
vpackusdw %ymm11, %ymm5, %ymm5
vpaddd %ymm6, %ymm14, %ymm11
vpmulld %ymm8, %ymm11, %ymm11
vpsubd %ymm11, %ymm2, %ymm11
vpsubd %ymm7, %ymm2, %ymm7
vpmaxsd %ymm12, %ymm7, %ymm7
vpmaxsd %ymm12, %ymm11, %ymm11
vpcmpeqd %xmm12, %xmm12, %xmm12
vpand %ymm15, %ymm11, %ymm11
vpand %ymm7, %ymm15, %ymm7
vpackusdw %ymm7, %ymm11, %ymm7
vpermq $0xd8, %ymm5, %ymm5     # ymm5 = ymm5[0,2,1,3]
vpermq $0xd8, %ymm7, %ymm7     # ymm7 = ymm7[0,2,1,3]
vpackuswb %ymm7, %ymm5, %ymm5
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm1, %xmm12, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vmovd %xmm1, %eax
vpermq $0xd8, %ymm5, %ymm11    # ymm11 = ymm5[0,2,1,3]
testb $0x1, %al
je 0x5c5daf
vpextrb $0x0, %xmm11, 0x1(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm1
vpxor %xmm0, %xmm13, %xmm5
vpcmpgtq %xmm1, %xmm5, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpxor %xmm1, %xmm12, %xmm1
vpackssdw %xmm1, %xmm1, %xmm1
vpacksswb %xmm1, %xmm1, %xmm1
vpextrb $0x1, %xmm1, %eax
testb $0x1, %al
vmovdqa %ymm10, %ymm8
je 0x5c5de3
vpextrb $0x1, %xmm11, 0x2(%rdi,%r8)
vpxor %ymm4, %ymm8, %ymm1
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpshuflw $0xe8, %ymm0, %ymm5     # ymm5 = ymm0[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor 0x68463(%rip), %ymm5, %ymm5 # 0x62e260
vmovdqu 0x140(%rsp), %ymm10
vpermd %ymm5, %ymm10, %ymm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x2, %xmm5, %eax
testb $0x1, %al
vmovdqa %ymm9, %ymm2
vmovdqu 0xe0(%rsp), %ymm6
je 0x5c5e32
vpextrb $0x2, %xmm11, 0x3(%rdi,%r8)
vextracti128 $0x1, %ymm0, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpxor %xmm0, %xmm12, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpacksswb %xmm0, %xmm0, %xmm0
vpextrb $0x3, %xmm0, %eax
testb $0x1, %al
je 0x5c5e5a
vpextrb $0x3, %xmm11, 0x4(%rdi,%r8)
vpor 0x67dde(%rip), %ymm6, %ymm0 # 0x62dc40
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpbroadcastw %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x4, %xmm5, %eax
testb $0x1, %al
je 0x5c5ea2
vpextrb $0x4, %xmm11, 0x5(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpbroadcastd %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x5, %xmm5, %eax
testb $0x1, %al
je 0x5c5ee3
vpextrb $0x5, %xmm11, 0x6(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpackssdw %ymm0, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x6, %xmm5, %eax
testb $0x1, %al
je 0x5c5f14
vpextrb $0x6, %xmm11, 0x7(%rdi,%r8)
vpshufhw $0x84, %ymm0, %ymm0     # ymm0 = ymm0[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vextracti128 $0x1, %ymm0, %xmm0
vpxor %xmm0, %xmm12, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpacksswb %xmm0, %xmm0, %xmm0
vpextrb $0x7, %xmm0, %eax
testb $0x1, %al
je 0x5c5f3d
vpextrb $0x7, %xmm11, 0x8(%rdi,%r8)
vpor 0x67ebb(%rip), %ymm6, %ymm0 # 0x62de00
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpmovzxwd %xmm5, %ymm5    # ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero
vpacksswb %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vmovd %xmm5, %eax
testb $0x1, %al
je 0x5c5f7d
vpextrb $0x8, %xmm11, 0x9(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpacksswb %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x1, %xmm5, %eax
testb $0x1, %al
je 0x5c5fb8
vpextrb $0x9, %xmm11, 0xa(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpshuflw $0xe8, %ymm0, %ymm5     # ymm5 = ymm0[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor 0x68292(%rip), %ymm5, %ymm5 # 0x62e260
vpermd %ymm5, %ymm10, %ymm5
vpackssdw %xmm5, %xmm5, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpacksswb %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x2, %xmm5, %eax
testb $0x1, %al
je 0x5c5ff9
vpextrb $0xa, %xmm11, 0xb(%rdi,%r8)
vextracti128 $0x1, %ymm0, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpxor %xmm0, %xmm12, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpermq $0x55, %ymm0, %ymm0     # ymm0 = ymm0[1,1,1,1]
vpacksswb %ymm0, %ymm0, %ymm0
vextracti128 $0x1, %ymm0, %xmm0
vpextrb $0x3, %xmm0, %eax
testb $0x1, %al
je 0x5c602d
vpextrb $0xb, %xmm11, 0xc(%rdi,%r8)
vpor 0x67dab(%rip), %ymm6, %ymm0 # 0x62dde0
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm5, %ymm0, %ymm5
vpacksswb %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x4, %xmm5, %eax
testb $0x1, %al
je 0x5c6070
vpextrb $0xc, %xmm11, 0xd(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm5, %ymm0, %ymm5
vpacksswb %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x5, %xmm5, %eax
testb $0x1, %al
je 0x5c60ac
vpextrb $0xd, %xmm11, 0xe(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpackssdw %ymm0, %ymm0, %ymm5
vpxor 0x6819f(%rip), %ymm5, %ymm5 # 0x62e260
vpackssdw %ymm5, %ymm0, %ymm5
vpacksswb %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x6, %xmm5, %eax
testb $0x1, %al
je 0x5c60e1
vpextrb $0xe, %xmm11, 0xf(%rdi,%r8)
vpshufhw $0x84, %ymm0, %ymm0     # ymm0 = ymm0[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vpxor 0x68172(%rip), %ymm0, %ymm0 # 0x62e260
vpackssdw %ymm0, %ymm0, %ymm0
vpacksswb %ymm0, %ymm0, %ymm0
vextracti128 $0x1, %ymm0, %xmm0
vpextrb $0x7, %xmm0, %eax
testb $0x1, %al
je 0x5c610e
vpextrb $0xf, %xmm11, 0x10(%rdi,%r8)
vpor 0x67e4a(%rip), %ymm6, %ymm0 # 0x62df60
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x8, %xmm5, %eax
vextracti128 $0x1, %ymm11, %xmm11
testb $0x1, %al
je 0x5c614b
vpextrb $0x0, %xmm11, 0x11(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0x9, %xmm5, %eax
testb $0x1, %al
je 0x5c617a
vpextrb $0x1, %xmm11, 0x12(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpshuflw $0xe8, %ymm0, %ymm5     # ymm5 = ymm0[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor 0x680d0(%rip), %ymm5, %ymm5 # 0x62e260
vpermd %ymm5, %ymm10, %ymm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0xa, %xmm5, %eax
testb $0x1, %al
je 0x5c61af
vpextrb $0x2, %xmm11, 0x13(%rdi,%r8)
vextracti128 $0x1, %ymm0, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpxor %xmm0, %xmm12, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpacksswb %xmm0, %xmm0, %xmm0
vpextrb $0xb, %xmm0, %eax
testb $0x1, %al
je 0x5c61d7
vpextrb $0x3, %xmm11, 0x14(%rdi,%r8)
vpor 0x67d61(%rip), %ymm6, %ymm0 # 0x62df40
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpbroadcastw %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0xc, %xmm5, %eax
testb $0x1, %al
je 0x5c621f
vpextrb $0x4, %xmm11, 0x15(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm0, %ymm5, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpbroadcastd %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0xd, %xmm5, %eax
testb $0x1, %al
je 0x5c6260
vpextrb $0x5, %xmm11, 0x16(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpackssdw %ymm0, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpacksswb %xmm5, %xmm5, %xmm5
vpextrb $0xe, %xmm5, %eax
testb $0x1, %al
je 0x5c6291
vpextrb $0x6, %xmm11, 0x17(%rdi,%r8)
vpshufhw $0x84, %ymm0, %ymm0     # ymm0 = ymm0[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vextracti128 $0x1, %ymm0, %xmm0
vpxor %xmm0, %xmm12, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpacksswb %xmm0, %xmm0, %xmm0
vpextrb $0xf, %xmm0, %eax
testb $0x1, %al
je 0x5c62ba
vpextrb $0x7, %xmm11, 0x18(%rdi,%r8)
vpor 0x67c5e(%rip), %ymm6, %ymm0 # 0x62df20
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpmovzxwd %xmm5, %ymm5    # ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero
vpacksswb %ymm5, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x8, %xmm5, %eax
testb $0x1, %al
je 0x5c62fc
vpextrb $0x8, %xmm11, 0x19(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm7
vpcmpgtq %xmm5, %xmm7, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpacksswb %ymm5, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0x9, %xmm5, %eax
testb $0x1, %al
je 0x5c6337
vpextrb $0x9, %xmm11, 0x1a(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpshuflw $0xe8, %ymm0, %ymm5     # ymm5 = ymm0[0,2,2,3,4,5,6,7,8,10,10,11,12,13,14,15]
vpxor 0x67f13(%rip), %ymm5, %ymm5 # 0x62e260
vpermd %ymm5, %ymm10, %ymm5
vpackssdw %xmm5, %xmm5, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpacksswb %ymm5, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0xa, %xmm5, %eax
testb $0x1, %al
vmovdqu 0x100(%rsp), %ymm7
je 0x5c6381
vpextrb $0xa, %xmm11, 0x1b(%rdi,%r8)
vextracti128 $0x1, %ymm0, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpxor %xmm0, %xmm12, %xmm0
vpackssdw %xmm0, %xmm0, %xmm0
vpermq $0x55, %ymm0, %ymm0     # ymm0 = ymm0[1,1,1,1]
vpacksswb %ymm0, %ymm0, %ymm0
vextracti128 $0x1, %ymm0, %xmm0
vpextrb $0xb, %xmm0, %eax
testb $0x1, %al
je 0x5c63b5
vpextrb $0xb, %xmm11, 0x1c(%rdi,%r8)
vpor 0x67b43(%rip), %ymm6, %ymm0 # 0x62df00
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm6
vpcmpgtq %xmm5, %xmm6, %xmm5
vpackssdw %xmm5, %xmm5, %xmm5
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm5, %ymm0, %ymm5
vpacksswb %ymm5, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0xc, %xmm5, %eax
testb $0x1, %al
je 0x5c63f8
vpextrb $0xc, %xmm11, 0x1d(%rdi,%r8)
vpxor %xmm4, %xmm13, %xmm5
vpxor %xmm0, %xmm13, %xmm6
vpcmpgtq %xmm5, %xmm6, %xmm5
vpshufhw $0x84, %xmm5, %xmm5     # xmm5 = xmm5[0,1,2,3,4,5,4,6]
vpxor %xmm5, %xmm12, %xmm5
vpermq $0x55, %ymm5, %ymm5     # ymm5 = ymm5[1,1,1,1]
vpackssdw %ymm5, %ymm0, %ymm5
vpacksswb %ymm5, %ymm0, %ymm5
vextracti128 $0x1, %ymm5, %xmm5
vpextrb $0xd, %xmm5, %eax
testb $0x1, %al
je 0x5c6434
vpextrb $0xd, %xmm11, 0x1e(%rdi,%r8)
vpxor %ymm0, %ymm8, %ymm0
vpcmpgtq %ymm1, %ymm0, %ymm0
vpackssdw %ymm0, %ymm0, %ymm1
vpxor 0x67e17(%rip), %ymm1, %ymm1 # 0x62e260
vpackssdw %ymm1, %ymm0, %ymm1
vpacksswb %ymm1, %ymm0, %ymm1
vextracti128 $0x1, %ymm1, %xmm1
vpextrb $0xe, %xmm1, %eax
testb $0x1, %al
vmovdqu 0xc0(%rsp), %ymm5
je 0x5c6472
vpextrb $0xe, %xmm11, 0x1f(%rdi,%r8)
vpshufhw $0x84, %ymm0, %ymm0     # ymm0 = ymm0[0,1,2,3,4,5,4,6,8,9,10,11,12,13,12,14]
vpxor 0x67de1(%rip), %ymm0, %ymm0 # 0x62e260
vpackssdw %ymm0, %ymm0, %ymm0
vpacksswb %ymm0, %ymm0, %ymm0
vextracti128 $0x1, %ymm0, %xmm0
vpextrb $0xf, %xmm0, %eax
testb $0x1, %al
je 0x5c649f
vpextrb $0xf, %xmm11, 0x20(%rdi,%r8)
addq $0x20, %r8
vmovdqu 0x120(%rsp), %ymm1
vpaddd %ymm1, %ymm5, %ymm5
vpaddd %ymm1, %ymm7, %ymm7
vmovdqu 0x80(%rsp), %ymm0
vpaddd %ymm1, %ymm0, %ymm0
vmovdqu %ymm0, 0x80(%rsp)
vpaddd %ymm1, %ymm2, %ymm2
cmpq %r8, %r10
jne 0x5c5c95
movq %r15, %r8
shlq $0x5, %r8
xorl %eax, %eax
vbroadcastsd 0x69bf7(%rip), %ymm0 # 0x6300e0
movq 0x10(%rbx), %rcx
movq (%rcx), %rcx
vmovaps %ymm0, (%rcx,%rax)
addq $0x20, %rax
cmpq %rax, %r8
jne 0x5c64e9
vpbroadcastb 0x69bf1(%rip), %ymm4 # 0x6300f8
movq %r15, %r12
leal -0x1(%r15), %eax
vpbroadcastb 0x69be2(%rip), %ymm5 # 0x6300f9
xorl %r10d, %r10d
vpbroadcastb 0x69bd9(%rip), %ymm6 # 0x6300fc
shlq $0x5, %rax
movq %rax, 0xe0(%rsp)
vpbroadcastb 0x69bc5(%rip), %ymm7 # 0x6300fd
vpbroadcastq 0x69ba7(%rip), %ymm8 # 0x6300e8
vpbroadcastq 0x69ba6(%rip), %ymm9 # 0x6300f0
movq %r8, %rcx
xorl %edx, %edx
vmovdqu 0x200(%rsp), %ymm1
vmovdqu 0x1e0(%rsp), %ymm0
movq %r13, %rax
movq %rbp, %r15
movq %rax, %rbp
movq 0x10(%rsp), %r13
movq %r11, %rax
movq %rdx, %r11
movq 0xe0(%rsp), %rdx
leaq (%rax,%rdx), %rsi
movq %rsi, 0x100(%rsp)
movq %rax, 0x10(%rsp)
vmovdqa (%rax,%rdx), %ymm10
vinserti128 $0x1, %xmm10, %ymm0, %ymm11
vpalignr $0xf, %ymm11, %ymm10, %ymm10 # ymm10 = ymm11[15],ymm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm11[31],ymm10[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, (%rdi,%r11), %xmm10, %xmm11
vpblendd $0xf, %ymm11, %ymm10, %ymm14 # ymm14 = ymm11[0,1,2,3],ymm10[4,5,6,7]
movq 0x50(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x58(%rsp), %rax
movzbl (%rax,%r11), %esi
movslq (%rdx,%rsi,4), %r9
imulq 0xb0(%rsp), %r9
shlq $0x5, %r9
addq 0xb8(%rsp), %r9
movq %r11, 0x80(%rsp)
leaq 0x1(%r11), %rdx
movl $0x1, %esi
xorl %r11d, %r11d
vmovdqu 0x1e0(%rsp), %ymm10
movq %rbp, %rdi
movq 0x28(%rsp), %rbp
vmovdqa (%rbp,%r11), %ymm13
vpaddsb (%r9,%r11), %ymm14, %ymm11
vpmaxsb %ymm13, %ymm11, %ymm12
vpmaxsb %ymm10, %ymm12, %ymm14
vmovdqa %ymm14, (%r13,%r11)
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %r10, %rax
vpcmpeqb %ymm11, %ymm14, %ymm11
vpcmpgtb %ymm10, %ymm12, %ymm12
vpaddb %ymm4, %ymm12, %ymm12
vpblendvb %ymm11, %ymm5, %ymm12, %ymm11
vpor (%r11,%rax), %ymm11, %ymm12
vmovdqa %ymm11, (%r14,%r11)
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %r10, %rax
vmovdqa %ymm12, (%r11,%rax)
vpsubsb 0x220(%rsp), %ymm14, %ymm11
vpsubsb %ymm3, %ymm13, %ymm12
vpmaxsb %ymm12, %ymm11, %ymm12
vmovdqa %ymm12, (%rbp,%r11)
movq %rdi, %rbp
vmovdqa (%rdi,%r11), %ymm12
vpsubsb %ymm3, %ymm12, %ymm12
vpmaxsb %ymm12, %ymm11, %ymm15
vmovdqa %ymm15, (%r15,%r11)
cmpq 0x60(%rsp), %rdx
jae 0x5c66ba
vpbroadcastb 0x69a64(%rip), %ymm15 # 0x6300fa
vpbroadcastb 0x69a5c(%rip), %ymm2 # 0x6300fb
vpcmpgtb %ymm12, %ymm11, %ymm12
vpblendvb %ymm12, %ymm15, %ymm2, %ymm2
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %rcx, %rax
vmovdqa %ymm2, (%r11,%rax)
vpsubsb %ymm3, %ymm10, %ymm12
cmpq %r12, %rsi
jae 0x5c66e6
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %r10, %rax
vpcmpgtb %ymm12, %ymm11, %ymm2
vpblendvb %ymm2, %ymm6, %ymm7, %ymm2
vpor 0x20(%r11,%rax), %ymm2, %ymm2
vmovdqa %ymm2, 0x20(%r11,%rax)
vpmaxsb %ymm14, %ymm0, %ymm0
vpminsb %ymm13, %ymm1, %ymm1
vpminsb %ymm10, %ymm1, %ymm1
vpminsb %ymm14, %ymm1, %ymm1
vpmaxsb %ymm12, %ymm11, %ymm10
movq 0x10(%rsp), %rax
vmovdqa (%rax,%r11), %ymm14
addq $0x20, %r11
incq %rsi
cmpq %r11, %r8
jne 0x5c65f5
movl $0x0, 0xc0(%rsp)
vmovdqa %ymm10, %ymm13
movq 0x80(%rsp), %r11
movq 0x20(%rsp), %rdi
movsbl 0x1(%rdi,%r11), %esi
subl 0x8(%rsp), %esi
cmpl $-0x7f, %esi
movl $0xffffff80, %eax       # imm = 0xFFFFFF80
cmovll %eax, %esi
movq 0x100(%rsp), %rax
vmovdqa (%rax), %ymm2
vinserti128 $0x1, %xmm2, %ymm0, %ymm14
vpalignr $0xf, %ymm14, %ymm2, %ymm2 # ymm2 = ymm14[15],ymm2[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm14[31],ymm2[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, (%rdi,%r11), %xmm2, %xmm14
vpblendd $0xf, %ymm14, %ymm2, %ymm14 # ymm14 = ymm14[0,1,2,3],ymm2[4,5,6,7]
vinserti128 $0x1, %xmm11, %ymm0, %ymm2
vpalignr $0xf, %ymm2, %ymm11, %ymm2 # ymm2 = ymm2[15],ymm11[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm11[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, %esi, %xmm2, %xmm11
vpblendd $0xf, %ymm11, %ymm2, %ymm11 # ymm11 = ymm11[0,1,2,3],ymm2[4,5,6,7]
vinserti128 $0x1, %xmm13, %ymm0, %ymm2
vpalignr $0xf, %ymm2, %ymm13, %ymm2 # ymm2 = ymm2[15],ymm13[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm13[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, %esi, %xmm2, %xmm13
vinserti128 $0x1, %xmm12, %ymm0, %ymm15
vpalignr $0xf, %ymm15, %ymm12, %ymm12 # ymm12 = ymm15[15],ymm12[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm15[31],ymm12[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, 0xc(%rsp), %xmm12, %xmm15
vpblendd $0xf, %ymm13, %ymm2, %ymm13 # ymm13 = ymm13[0,1,2,3],ymm2[4,5,6,7]
vpblendd $0xf, %ymm15, %ymm12, %ymm12 # ymm12 = ymm15[0,1,2,3],ymm12[4,5,6,7]
vinserti128 $0x1, %xmm10, %ymm0, %ymm2
vpalignr $0xf, %ymm2, %ymm10, %ymm2 # ymm2 = ymm2[15],ymm10[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],ymm2[31],ymm10[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
vpinsrb $0x0, %esi, %xmm2, %xmm10
vpblendd $0xf, %ymm10, %ymm2, %ymm10 # ymm10 = ymm10[0,1,2,3],ymm2[4,5,6,7]
xorl %esi, %esi
vmovdqa (%r13,%rsi), %ymm2
vpmaxsb %ymm13, %ymm2, %ymm15
vmovdqa %ymm15, (%r13,%rsi)
vpaddsb (%r9,%rsi), %ymm14, %ymm14
vpcmpeqb %ymm14, %ymm15, %ymm14
vpcmpgtb %ymm13, %ymm2, %ymm2
vpor %ymm2, %ymm14, %ymm2
movq 0x10(%rbx), %rax
vpblendvb %ymm2, (%r14,%rsi), %ymm4, %ymm2
movq (%rax), %rax
addq %r10, %rax
vpand (%rsi,%rax), %ymm8, %ymm14
vmovdqa %ymm2, (%r14,%rsi)
vpor %ymm2, %ymm14, %ymm2
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %r10, %rax
vmovdqa %ymm2, (%rsi,%rax)
vpcmpgtb %ymm12, %ymm11, %ymm2
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %r10, %rax
vpblendvb %ymm2, %ymm6, %ymm7, %ymm2
vpand (%rsi,%rax), %ymm9, %ymm11
vpor %ymm2, %ymm11, %ymm2
vmovdqa %ymm2, (%rsi,%rax)
vpsubsb 0x220(%rsp), %ymm15, %ymm11
vmovdqa (%rbp,%rsi), %ymm2
vpsubsb %ymm3, %ymm2, %ymm12
vpmaxsb %ymm12, %ymm11, %ymm2
vmovdqa %ymm2, (%r15,%rsi)
cmpq 0x60(%rsp), %rdx
jae 0x5c689f
vpbroadcastb 0x6987e(%rip), %ymm2 # 0x6300fa
vpbroadcastb 0x69876(%rip), %ymm14 # 0x6300fb
vpcmpgtb %ymm12, %ymm11, %ymm12
vpblendvb %ymm12, %ymm2, %ymm14, %ymm2
movq 0x10(%rbx), %rax
movq (%rax), %rax
addq %rcx, %rax
vmovdqa %ymm2, (%rsi,%rax)
vpminsb %ymm15, %ymm1, %ymm1
vpmaxsb %ymm15, %ymm0, %ymm0
vpsubsb %ymm3, %ymm13, %ymm13
vpcmpgtb %ymm13, %ymm11, %ymm2
vpmovmskb %ymm2, %eax
cmpl $-0x1, %eax
je 0x5c68f4
vpsubsb %ymm3, %ymm10, %ymm12
vpmaxsb %ymm12, %ymm11, %ymm10
movq 0x10(%rsp), %rax
vmovdqa (%rax,%rsi), %ymm14
addq $0x20, %rsi
cmpq %rsi, %r8
jne 0x5c67d5
movl 0xc0(%rsp), %eax
incl %eax
movl %eax, 0xc0(%rsp)
cmpl $0x20, %eax
jne 0x5c672a
addq %r8, %rcx
addq %r8, %r10
movq %r13, %r11
movq %r15, %rax
cmpq 0x60(%rsp), %rdx
movq 0x20(%rsp), %rdi
jne 0x5c6564
movl 0x3c(%rsp), %eax
shlq $0x5, %rax
vmovdqa (%r13,%rax), %ymm2
cmpl $0x1e, 0x1c(%rsp)
jg 0x5c6944
xorl %eax, %eax
movl 0x18(%rsp), %edx
movl 0x34(%rsp), %ecx
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 %eax
cmpl %ecx, %eax
jl 0x5c6930
jmp 0x5c6948
movl 0x18(%rsp), %edx
vmovdqu 0x1e0(%rsp), %ymm3
vpcmpgtb %ymm1, %ymm3, %ymm1
vpcmpgtb 0x200(%rsp), %ymm0, %ymm0
vpor %ymm0, %ymm1, %ymm0
vpmovmskb %ymm0, %eax
testl %eax, %eax
je 0x5c6976
orb $0x40, 0xc(%rbx)
xorl %eax, %eax
xorl %edx, %edx
xorl %ecx, %ecx
jmp 0x5c6986
vextracti128 $0x1, %ymm2, %xmm0
vpextrb $0xf, %xmm0, %eax
movl 0x38(%rsp), %ecx
movsbl %al, %eax
movl %eax, (%rbx)
movl %ecx, 0x4(%rbx)
movl %edx, 0x8(%rbx)
vzeroupper
callq 0x20a60d
movq %r14, %rdi
callq 0x20a60d
movq %rbp, %rdi
callq 0x20a60d
movq %r15, %rdi
callq 0x20a60d
movq 0x28(%rsp), %rdi
callq 0x20a60d
movq 0x10(%rsp), %rdi
callq 0x20a60d
movq %r13, %rdi
callq 0x20a60d
jmp 0x5c6a07
callq 0x1fb3d3
jmp 0x5c6a05
callq 0x1fb3ad
jmp 0x5c6a05
callq 0x1fb387
jmp 0x5c6a05
callq 0x1fb361
jmp 0x5c6a05
callq 0x1fb33b
jmp 0x5c6a05
callq 0x1fb315
jmp 0x5c6a05
callq 0x1fb2ef
jmp 0x5c6a05
callq 0x1fb2c9
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq