// File: /workspace/github_cpp_makefile_star2_O3/Baobaobear[P]sort/./sortlib.hpp
// Function: baobao::TestClass* baobao::internal::quick_sort_partition<baobao::TestClass*, std::less<baobao::TestClass>>(baobao::TestClass*, baobao::TestClass*, std::less<baobao::TestClass>, bool&)
RandomAccessIterator quick_sort_partition(RandomAccessIterator beg, RandomAccessIterator end, Comp compare, bool& swaped)
{
    typedef typename std::iterator_traits<RandomAccessIterator>::difference_type diff_type;
    typedef typename std::iterator_traits<RandomAccessIterator>::value_type value_type;
    RandomAccessIterator l = beg, r = end - 1;
    uint32_t rnd = util::fake_rand_simple();
    diff_type n = end - beg, h = (n - 1) / 2;
    if (util::is_scalar<value_type>::value)
    {
        diff_type w = h;
        util::make_mid_pivot(*(beg + rnd % w), *r, *(beg + h + rnd % w), compare);
    }
    else
    {
        if (n < 1 << 14)
        {
            diff_type w = h;
            util::make_mid_pivot(*(beg + rnd % w), *r, *(beg + h + rnd % w), compare);
        }
        else
        {
            diff_type w = h - 3;
            util::make_mid_pivot(*(beg), *(r), *(beg + h + 1), compare);
            util::make_mid_pivot(*(beg + 1), *(beg + h - 1), *(r - 1), compare);
            util::make_mid_pivot(*(beg + 2 + rnd % w), *(beg + h), *(r - 2 - rnd % w), compare);
            util::make_mid_pivot(*(beg + h - 1), *(r), *(beg + h), compare);
        }
    }

    value_type pivot = *r;

    while (compare(*l, pivot))
        ++l;
    while (l < r && !compare(*r, pivot))
        --r;
    if (l < r)
    {
        std::swap(*l++, *r--);
        swaped = true;
        while (1)
        {
            while (compare(*l, pivot))
                ++l;
            while (!compare(*r, pivot))
                --r;
            if (l >= r)
                break;
            std::swap(*l++, *r--);
        }
    }
    std::swap(*l, *(end - 1));
    return l;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rcx
leaq -0x20(%rsi), %r8
movl 0x11a77(%rip), %eax     # 0x1a150
incl %eax
movl %eax, 0x11a6f(%rip)     # 0x1a150
movq %rsi, %rdx
subq %rdi, %rdx
sarq $0x5, %rdx
leaq -0x1(%rdx), %r9
shrq $0x3f, %r9
leaq (%rdx,%r9), %r10
decq %r10
sarq %r10
movl %eax, %eax
cmpq $0x3fff, %rdx           # imm = 0x3FFF
jg 0x8790
xorl %edx, %edx
idivq %r10
shlq $0x5, %rdx
addq %rdi, %rdx
shlq $0x5, %r10
leaq (%rdx,%r10), %rax
movl (%r10,%rdx), %ebx
movl (%r8), %r9d
cmpl %r9d, %ebx
jge 0x885f
movl (%rdx), %r11d
leaq 0x8(%rax), %r10
cmpl %r11d, %r9d
jge 0x880d
movl 0x4(%rdx), %r9d
movq 0x18(%rdx), %r14
movq %r14, -0x8(%rsp)
movups 0x8(%rdx), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebx, (%rdx)
movl 0x4(%rax), %ebx
movl %ebx, 0x4(%rdx)
movl $0x2, %ebx
movl (%rax,%rbx,4), %ebp
movl %ebp, (%rdx,%rbx,4)
incq %rbx
cmpq $0x8, %rbx
jne 0x8763
movl %r11d, (%rax)
movl %r9d, 0x4(%rax)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%r10)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r10)
jmp 0x8eb8
movq %r10, %rdx
shlq $0x5, %rdx
leaq (%rdi,%rdx), %r9
movl 0x20(%rdi,%rdx), %ebp
movl (%r8), %edx
cmpl %edx, %ebp
jge 0x8964
movl (%rdi), %ebx
leaq 0x28(%r9), %r11
cmpl %ebx, %edx
jge 0x8910
movl 0x4(%rdi), %edx
leaq 0x8(%rdi), %r14
movq 0x18(%rdi), %r15
movq %r15, -0x8(%rsp)
movups 0x8(%rdi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, (%rdi)
movl 0x24(%r9), %ebp
movl %ebp, 0x4(%rdi)
xorl %r15d, %r15d
movl (%r11,%r15,4), %ebp
movl %ebp, (%r14,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x87dd
movl %ebx, 0x20(%r9)
movl %edx, 0x24(%r9)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
jmp 0x8a1d
movl -0x1c(%rsi), %r11d
leaq -0x18(%rsi), %r14
movq -0x8(%rsi), %r15
movq %r15, -0x8(%rsp)
movups -0x18(%rsi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebx, -0x20(%rsi)
movl 0x4(%rax), %ebx
movl %ebx, -0x1c(%rsi)
xorl %ebx, %ebx
movl (%r10,%rbx,4), %ebp
movl %ebp, (%r14,%rbx,4)
incq %rbx
cmpq $0x6, %rbx
jne 0x8832
movl %r9d, (%rax)
movl %r11d, 0x4(%rax)
movq -0x8(%rsp), %r9
movq %r9, 0x10(%r10)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r10)
movl (%r8), %r9d
movl (%rdx), %ebx
cmpl %ebx, %r9d
jge 0x8eb8
movl -0x1c(%rsi), %r11d
leaq -0x18(%rsi), %r10
movq -0x8(%rsi), %r14
movq %r14, -0x8(%rsp)
movups -0x18(%rsi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebx, -0x20(%rsi)
movl 0x4(%rdx), %ebx
movl %ebx, -0x1c(%rsi)
leaq 0x8(%rdx), %rbx
xorl %r14d, %r14d
movl (%rbx,%r14,4), %ebp
movl %ebp, (%r10,%r14,4)
incq %r14
cmpq $0x6, %r14
jne 0x8894
movl %r9d, (%rdx)
movl %r11d, 0x4(%rdx)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%rbx)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%rbx)
movl (%rax), %r11d
movl (%r8), %edx
cmpl %edx, %r11d
jge 0x8eb8
movl -0x1c(%rsi), %r9d
movq 0x10(%r10), %rbx
movq %rbx, -0x8(%rsp)
movups (%r10), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %r11d, -0x20(%rsi)
movl 0x4(%rax), %r11d
movl %r11d, -0x1c(%rsi)
leaq 0x8(%rax), %r11
xorl %ebx, %ebx
movl (%r11,%rbx,4), %ebp
movl %ebp, (%r10,%rbx,4)
incq %rbx
cmpq $0x6, %rbx
jne 0x88f4
movl %edx, (%rax)
movl %r9d, 0x4(%rax)
jmp 0x8ea6
movl -0x1c(%rsi), %ebx
leaq -0x18(%rsi), %r14
movq -0x8(%rsi), %r15
movq %r15, -0x8(%rsp)
movups -0x18(%rsi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, -0x20(%rsi)
movl 0x24(%r9), %ebp
movl %ebp, -0x1c(%rsi)
xorl %r15d, %r15d
movl (%r11,%r15,4), %ebp
movl %ebp, (%r14,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8936
movl %edx, 0x20(%r9)
movl %ebx, 0x24(%r9)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
movl (%r8), %edx
movl (%rdi), %ebp
cmpl %ebp, %edx
jge 0x8a1d
movl -0x1c(%rsi), %ebx
leaq -0x18(%rsi), %r11
movq -0x8(%rsi), %r14
movq %r14, -0x8(%rsp)
movups -0x18(%rsi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, -0x20(%rsi)
movl 0x4(%rdi), %ebp
movl %ebp, -0x1c(%rsi)
leaq 0x8(%rdi), %r14
movq $-0x18, %r15
movl 0x20(%rdi,%r15), %ebp
movl %ebp, (%rsi,%r15)
addq $0x4, %r15
jne 0x899b
movl %edx, (%rdi)
movl %ebx, 0x4(%rdi)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r14)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r14)
movl 0x20(%r9), %ebp
movl (%r8), %edx
cmpl %edx, %ebp
jge 0x8a1d
movl -0x1c(%rsi), %ebx
movq 0x10(%r11), %r14
movq %r14, -0x8(%rsp)
movups (%r11), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, -0x20(%rsi)
movl 0x24(%r9), %ebp
movl %ebp, -0x1c(%rsi)
leaq 0x28(%r9), %r14
xorl %r15d, %r15d
movl (%r14,%r15,4), %ebp
movl %ebp, (%r11,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x89f2
movl %edx, 0x20(%r9)
movl %ebx, 0x24(%r9)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r14)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r14)
addq $-0x3, %r10
movl -0x40(%rsi), %ebp
movl -0x20(%r9), %edx
cmpl %edx, %ebp
jge 0x8ae4
movl 0x20(%rdi), %ebx
leaq -0x38(%rsi), %r11
cmpl %ebx, %edx
jge 0x8a8e
movl 0x24(%rdi), %edx
leaq 0x28(%rdi), %r14
movq 0x38(%rdi), %r15
movq %r15, -0x8(%rsp)
movups 0x28(%rdi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, 0x20(%rdi)
movl -0x3c(%rsi), %ebp
movl %ebp, 0x24(%rdi)
xorl %r15d, %r15d
movl (%r11,%r15,4), %ebp
movl %ebp, (%r14,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8a60
movl %ebx, -0x40(%rsi)
movl %edx, -0x3c(%rsi)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
jmp 0x8ba1
movl -0x1c(%r9), %ebx
leaq -0x18(%r9), %r14
movq -0x8(%r9), %r15
movq %r15, -0x8(%rsp)
movups -0x18(%r9), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, -0x20(%r9)
movl -0x3c(%rsi), %ebp
movl %ebp, -0x1c(%r9)
xorl %r15d, %r15d
movl (%r11,%r15,4), %ebp
movl %ebp, (%r14,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8ab7
movl %edx, -0x40(%rsi)
movl %ebx, -0x3c(%rsi)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
movl -0x20(%r9), %edx
movl 0x20(%rdi), %ebp
cmpl %ebp, %edx
jge 0x8ba1
movl -0x1c(%r9), %ebx
leaq -0x18(%r9), %r11
movq -0x8(%r9), %r14
movq %r14, -0x8(%rsp)
movups -0x18(%r9), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, -0x20(%r9)
movl 0x24(%rdi), %ebp
movl %ebp, -0x1c(%r9)
leaq 0x28(%rdi), %r14
xorl %r15d, %r15d
movl (%r14,%r15,4), %ebp
movl %ebp, (%r11,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8b1c
movl %edx, 0x20(%rdi)
movl %ebx, 0x24(%rdi)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r14)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r14)
movl -0x40(%rsi), %ebp
movl -0x20(%r9), %edx
cmpl %edx, %ebp
jge 0x8ba1
movl -0x1c(%r9), %ebx
movq 0x10(%r11), %r14
movq %r14, -0x8(%rsp)
movups (%r11), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, -0x20(%r9)
movl -0x3c(%rsi), %ebp
movl %ebp, -0x1c(%r9)
leaq -0x38(%rsi), %r14
xorl %r15d, %r15d
movl (%r14,%r15,4), %ebp
movl %ebp, (%r11,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8b78
movl %edx, -0x40(%rsi)
movl %ebx, -0x3c(%rsi)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r14)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r14)
xorl %edx, %edx
idivq %r10
shlq $0x5, %rdx
leaq (%rdi,%rdx), %r10
addq $0x40, %r10
movq %rsi, %rax
subq %rdx, %rax
movl -0x60(%rax), %ebp
addq $-0x60, %rax
movl (%r9), %edx
cmpl %edx, %ebp
jge 0x8c7d
movl (%r10), %ebx
leaq 0x8(%rax), %r11
cmpl %ebx, %edx
jge 0x8c2a
movl 0x4(%r10), %edx
leaq 0x8(%r10), %r14
movq 0x18(%r10), %r15
movq %r15, -0x8(%rsp)
movups 0x8(%r10), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, (%r10)
movl 0x4(%rax), %ebp
movl %ebp, 0x4(%r10)
xorl %r10d, %r10d
movl (%r11,%r10,4), %ebp
movl %ebp, (%r14,%r10,4)
incq %r10
cmpq $0x6, %r10
jne 0x8bfd
movl %ebx, (%rax)
movl %edx, 0x4(%rax)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
jmp 0x8d37
movl 0x4(%r9), %ebx
leaq 0x8(%r9), %r14
movq 0x18(%r9), %r15
movq %r15, -0x8(%rsp)
movups 0x8(%r9), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, (%r9)
movl 0x4(%rax), %ebp
movl %ebp, 0x4(%r9)
xorl %r15d, %r15d
movl (%r11,%r15,4), %ebp
movl %ebp, (%r14,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8c52
movl %edx, (%rax)
movl %ebx, 0x4(%rax)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
movl (%r9), %edx
movl (%r10), %ebp
cmpl %ebp, %edx
jge 0x8d37
movl 0x4(%r9), %ebx
leaq 0x8(%r9), %r11
movq 0x18(%r9), %r14
movq %r14, -0x8(%rsp)
movups 0x8(%r9), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebp, (%r9)
movl 0x4(%r10), %ebp
movl %ebp, 0x4(%r9)
leaq 0x8(%r10), %r14
xorl %r15d, %r15d
movl (%r14,%r15,4), %ebp
movl %ebp, (%r11,%r15,4)
incq %r15
cmpq $0x6, %r15
jne 0x8cb5
movl %edx, (%r10)
movl %ebx, 0x4(%r10)
movq -0x8(%rsp), %rdx
movq %rdx, 0x10(%r14)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r14)
movl (%rax), %ebx
movl (%r9), %edx
cmpl %edx, %ebx
jge 0x8d37
movl 0x4(%r9), %r10d
movq 0x10(%r11), %r14
movq %r14, -0x8(%rsp)
movups (%r11), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebx, (%r9)
movl 0x4(%rax), %ebx
movl %ebx, 0x4(%r9)
leaq 0x8(%rax), %rbx
xorl %r14d, %r14d
movl (%rbx,%r14,4), %ebp
movl %ebp, (%r11,%r14,4)
incq %r14
cmpq $0x6, %r14
jne 0x8d0f
movl %edx, (%rax)
movl %r10d, 0x4(%rax)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%rbx)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%rbx)
movl -0x20(%r9), %r10d
movl (%r9), %r11d
movl (%r8), %eax
cmpl %eax, %r11d
jge 0x8dfc
leaq 0x8(%r9), %rdx
cmpl %r10d, %eax
jge 0x8da3
movl -0x1c(%r9), %eax
movq -0x8(%r9), %rbx
movq %rbx, -0x8(%rsp)
movups -0x18(%r9), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %r11d, -0x20(%r9)
movl 0x4(%r9), %r11d
movl %r11d, -0x1c(%r9)
movq 0x10(%rdx), %r11
movq %r11, -0x8(%r9)
movups (%rdx), %xmm0
movups %xmm0, -0x18(%r9)
movl %r10d, (%r9)
movl %eax, 0x4(%r9)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%rdx)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%rdx)
jmp 0x8eb8
movl -0x1c(%rsi), %r10d
leaq -0x18(%rsi), %rbx
movq -0x8(%rsi), %r14
movq %r14, -0x8(%rsp)
movups -0x18(%rsi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %r11d, -0x20(%rsi)
movl 0x4(%r9), %r11d
movl %r11d, -0x1c(%rsi)
xorl %r11d, %r11d
movl (%rdx,%r11,4), %ebp
movl %ebp, (%rbx,%r11,4)
incq %r11
cmpq $0x6, %r11
jne 0x8dcc
movl %eax, (%r9)
movl %r10d, 0x4(%r9)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%rdx)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%rdx)
movl (%r8), %eax
movl -0x20(%r9), %r10d
cmpl %r10d, %eax
jge 0x8eb8
movl -0x1c(%rsi), %r11d
leaq -0x18(%rsi), %rdx
movq -0x8(%rsi), %rbx
movq %rbx, -0x8(%rsp)
movups -0x18(%rsi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %r10d, -0x20(%rsi)
movl -0x1c(%r9), %r10d
movl %r10d, -0x1c(%rsi)
leaq -0x18(%r9), %r10
movq $-0x18, %rbx
movl (%r9,%rbx), %ebp
movl %ebp, (%rsi,%rbx)
addq $0x4, %rbx
jne 0x8e36
movl %eax, -0x20(%r9)
movl %r11d, -0x1c(%r9)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%r10)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r10)
movl (%r9), %r11d
movl (%r8), %eax
cmpl %eax, %r11d
jge 0x8eb8
movl -0x1c(%rsi), %r10d
movq 0x10(%rdx), %rbx
movq %rbx, -0x8(%rsp)
movups (%rdx), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %r11d, -0x20(%rsi)
movl 0x4(%r9), %r11d
movl %r11d, -0x1c(%rsi)
leaq 0x8(%r9), %r11
xorl %ebx, %ebx
movl (%r11,%rbx,4), %ebp
movl %ebp, (%rdx,%rbx,4)
incq %rbx
cmpq $0x6, %rbx
jne 0x8e8f
movl %eax, (%r9)
movl %r10d, 0x4(%r9)
movq -0x8(%rsp), %rax
movq %rax, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
movl -0x20(%rsi), %edx
leaq -0x18(%rsi), %rax
addq $-0x20, %rdi
movl 0x20(%rdi), %r9d
addq $0x20, %rdi
cmpl %edx, %r9d
jl 0x8ec3
cmpq %r8, %rdi
jae 0x8fca
movq %r8, %r10
movl (%r10), %ebx
cmpl %edx, %ebx
jl 0x8ef1
addq $-0x20, %r10
cmpq %r10, %rdi
jb 0x8edc
jmp 0x8fca
movl 0x4(%rdi), %r11d
movq 0x18(%rdi), %r14
movq %r14, -0x8(%rsp)
movups 0x8(%rdi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %ebx, (%rdi)
movl 0x4(%r10), %ebx
movl %ebx, 0x4(%rdi)
leaq 0x8(%r10), %rbx
movq $-0x18, %r14
movq %rbx, %r15
movl (%r15), %ebp
movl %ebp, 0x20(%rdi,%r14)
addq $0x4, %r15
addq $0x4, %r14
jne 0x8f1e
movl %r9d, (%r10)
movl %r11d, 0x4(%r10)
movq -0x8(%rsp), %r9
movq %r9, 0x10(%rbx)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%rbx)
movb $0x1, (%rcx)
movq %rdi, %r11
addq $0x20, %rdi
movl 0x20(%r11), %r9d
cmpl %edx, %r9d
jl 0x8f4b
movq %r10, %rcx
addq $-0x20, %r10
cmpl %edx, -0x20(%rcx)
jge 0x8f5b
cmpq %r10, %rdi
jae 0x8fc7
movl 0x24(%r11), %ebx
movq 0x38(%r11), %r14
movq %r14, -0x8(%rsp)
movups 0x28(%r11), %xmm0
movaps %xmm0, -0x18(%rsp)
movl -0x20(%rcx), %ebp
movl %ebp, 0x20(%r11)
movl -0x1c(%rcx), %ebp
movl %ebp, 0x24(%r11)
leaq -0x18(%rcx), %r11
movl $0x2, %r14d
movl (%r10,%r14,4), %ebp
movl %ebp, (%rdi,%r14,4)
incq %r14
cmpq $0x8, %r14
jne 0x8f9b
movl %r9d, -0x20(%rcx)
movl %ebx, -0x1c(%rcx)
movq -0x8(%rsp), %rcx
movq %rcx, 0x10(%r11)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%r11)
jmp 0x8f4b
movl (%r8), %edx
movl 0x4(%rdi), %ecx
movq 0x18(%rdi), %r8
movq %r8, -0x8(%rsp)
movups 0x8(%rdi), %xmm0
movaps %xmm0, -0x18(%rsp)
movl %edx, (%rdi)
movl -0x1c(%rsi), %edx
movl %edx, 0x4(%rdi)
movq $-0x18, %rdx
movl (%rsi,%rdx), %r8d
movl %r8d, 0x20(%rdi,%rdx)
addq $0x4, %rdx
jne 0x8fee
movl %r9d, -0x20(%rsi)
movl %ecx, -0x1c(%rsi)
movq -0x8(%rsp), %rcx
movq %rcx, 0x10(%rax)
movaps -0x18(%rsp), %xmm0
movups %xmm0, (%rax)
movq %rdi, %rax
popq %rbx
popq %r14
popq %r15
popq %rbp
retq