Function at 0x140099e50
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xf8
vmovdqu xmmword [rsp + 0xe0], xmm15
vmovdqu xmmword [rsp + 0xd0], xmm14
vmovdqu xmmword [rsp + 0xc0], xmm13
vmovdqu xmmword [rsp + 0xb0], xmm12
vmovdqu xmmword [rsp + 0xa0], xmm11
vmovdqu xmmword [rsp + 0x90], xmm10
vmovdqu xmmword [rsp + 0x80], xmm9
vmovdqu xmmword [rsp + 0x70], xmm8
vmovdqu xmmword [rsp + 0x60], xmm7
vmovdqu xmmword [rsp + 0x50], xmm6
mov rsi, rcx
mov ecx, dword [rcx + 0xc]
mov r10d, dword [rsi + 8]
mov r9, qword [rsi]
lea rax, [rsi + 0xa0]
lea rbx, [rsi + 0x70]
lea rdi, [rsi + 0x10]
mov qword [rsp + 0x38], r8
mov qword [rsp + 0x30], rdx
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r10d
mov rcx, rdi
mov rdx, rbx
mov r8, rax
call fcn.140095f10
mov rax, qword [rsi + 0x18]
mov rdx, qword [rsi + 0x10]
mov r12, rax
sub r12, rdx
mov rcx, rax
sub rcx, rdx
je 0x140099f38
js 0x14009a6e8
sar r12, 3
mov r15, rcx
sar r15, 2
cmp rcx, 0x3ff9
jb 0x140099f46
lea rcx, [r15 + 0x27]
call fcn.1401c3b4c
lea r14, [rax + 0x27]
and r14, 0xffffffffffffffe0
mov qword [r14 - 8], rax
jmp 0x140099f51
xor r14d, r14d
mov rdx, rax
mov r8, rax
xor r12d, r12d
jmp 0x140099f6c
mov rcx, r15
call fcn.1401c3b4c
mov r14, rax
lea r12, [r14 + r12*2]
mov rcx, r14
xor edx, edx
mov r8, r15
call fcn.1401bb600
mov rdx, qword [rsi + 0x18]
mov rax, qword [rdi]
mov r8, rdx
sub rdx, rax
mov rcx, rdx
shr rcx, 3
test ecx, ecx
jle 0x14009a2ab
movsxd rcx, ecx
mov r9, rcx
and r9, 0xfffffffffffffff0
je 0x14009a2a3
xor r10d, r10d
vpcmpeqd ymm0, ymm0, ymm0
vpbroadcastb ymm1, byte [0x140224164]
vbroadcasti128 ymm2, xmmword [0x1402245c0]
vpxor xmm3, xmm3, xmm3
vbroadcasti128 ymm4, xmmword [0x1402245d0]
vpbroadcastw ymm5, word [0x140224166]
nop dword [rax]
vmovdqu ymm10, ymmword [rax + r10*8]
vmovdqu ymm11, ymmword [rax + r10*8 + 0x20]
vmovdqu ymm6, ymmword [rax + r10*8 + 0x40]
vmovdqu ymm8, ymmword [rax + r10*8 + 0x60]
vpaddq ymm7, ymm11, ymm0
vpandn ymm7, ymm11, ymm7
vpand ymm9, ymm7, ymm1
vpshufb ymm9, ymm2, ymm9
vpsrlw ymm7, ymm7, 4
vpand ymm7, ymm7, ymm1
vpshufb ymm7, ymm2, ymm7
vpaddb ymm7, ymm9, ymm7
vpsadbw ymm7, ymm7, ymm3
vpaddq ymm9, ymm10, ymm0
vpandn ymm9, ymm10, ymm9
vpand ymm12, ymm9, ymm1
vpshufb ymm12, ymm2, ymm12
vpsrlw ymm9, ymm9, 4
vpand ymm9, ymm9, ymm1
vpshufb ymm9, ymm2, ymm9
vpaddb ymm9, ymm9, ymm12
vpsadbw ymm9, ymm9, ymm3
vpackusdw ymm7, ymm9, ymm7
vpaddq ymm9, ymm8, ymm0
vpandn ymm9, ymm8, ymm9
vpand ymm12, ymm9, ymm1
vpshufb ymm12, ymm2, ymm12
vpsrlw ymm9, ymm9, 4
vpand ymm9, ymm9, ymm1
vpshufb ymm9, ymm2, ymm9
vpaddb ymm9, ymm9, ymm12
vpsadbw ymm9, ymm9, ymm3
vpaddq ymm12, ymm6, ymm0
vpandn ymm12, ymm6, ymm12
vpand ymm13, ymm12, ymm1
vpshufb ymm13, ymm2, ymm13
vpsrlw ymm12, ymm12, 4
vpand ymm12, ymm12, ymm1
vpshufb ymm12, ymm2, ymm12
vpaddb ymm12, ymm12, ymm13
vpsadbw ymm12, ymm12, ymm3
vpackusdw ymm9, ymm12, ymm9
vpshufb ymm12, ymm4, ymm11
vpsrlw ymm13, ymm11, 4
vpand ymm13, ymm13, ymm1
vpcmpeqb ymm14, ymm13, ymm3
vpand ymm12, ymm12, ymm14
vpshufb ymm13, ymm4, ymm13
vpaddb ymm12, ymm12, ymm13
vpcmpeqb ymm13, ymm11, ymm3
vpsrlw ymm13, ymm13, 8
vpand ymm13, ymm12, ymm13
vpsrlw ymm12, ymm12, 8
vpaddw ymm12, ymm12, ymm13
vpcmpeqw ymm13, ymm11, ymm3
vpsrld ymm13, ymm13, 0x10
vpand ymm13, ymm12, ymm13
vpsrld ymm12, ymm12, 0x10
vpaddd ymm12, ymm12, ymm13
vpcmpeqd ymm11, ymm11, ymm3
vpsrlq ymm11, ymm11, 0x20
vpand ymm11, ymm12, ymm11
vpsrlq ymm12, ymm12, 0x20
vpaddq ymm11, ymm12, ymm11
vpshufb ymm12, ymm4, ymm10
vpsrlw ymm13, ymm10, 4
vpand ymm13, ymm13, ymm1
vpcmpeqb ymm14, ymm13, ymm3
vpand ymm12, ymm12, ymm14
vpshufb ymm13, ymm4, ymm13
vpaddb ymm12, ymm12, ymm13
vpcmpeqb ymm13, ymm10, ymm3
vpsrlw ymm13, ymm13, 8
vpand ymm13, ymm12, ymm13
vpsrlw ymm12, ymm12, 8
vpaddw ymm12, ymm12, ymm13
vpcmpeqw ymm13, ymm10, ymm3
vpsrld ymm13, ymm13, 0x10
vpand ymm13, ymm12, ymm13
vpsrld ymm12, ymm12, 0x10
vpaddd ymm12, ymm12, ymm13
vpcmpeqd ymm10, ymm10, ymm3
vpsrlq ymm10, ymm10, 0x20
vpand ymm10, ymm12, ymm10
vpsrlq ymm12, ymm12, 0x20
vpaddq ymm10, ymm12, ymm10
vpackusdw ymm10, ymm10, ymm11
vpshufb ymm11, ymm4, ymm8
vpsrlw ymm12, ymm8, 4
vpand ymm12, ymm12, ymm1
vpcmpeqb ymm13, ymm12, ymm3
vpand ymm11, ymm11, ymm13
vpshufb ymm12, ymm4, ymm12
vpaddb ymm11, ymm11, ymm12
vpcmpeqb ymm12, ymm8, ymm3
vpsrlw ymm12, ymm12, 8
vpand ymm12, ymm11, ymm12
vpsrlw ymm11, ymm11, 8
vpaddw ymm11, ymm11, ymm12
vpcmpeqw ymm12, ymm8, ymm3
vpsrld ymm12, ymm12, 0x10
vpand ymm12, ymm11, ymm12
vpsrld ymm11, ymm11, 0x10
vpaddd ymm11, ymm11, ymm12
vpcmpeqd ymm8, ymm8, ymm3
vpsrlq ymm8, ymm8, 0x20
vpand ymm8, ymm11, ymm8
vpsrlq ymm11, ymm11, 0x20
vpaddq ymm8, ymm11, ymm8
vpshufb ymm11, ymm4, ymm6
vpsrlw ymm12, ymm6, 4
vpand ymm12, ymm12, ymm1
vpcmpeqb ymm13, ymm12, ymm3
vpand ymm11, ymm11, ymm13
vpshufb ymm12, ymm4, ymm12
vpaddb ymm11, ymm11, ymm12
vpcmpeqb ymm12, ymm6, ymm3
vpsrlw ymm12, ymm12, 8
vpand ymm12, ymm11, ymm12
vpsrlw ymm11, ymm11, 8
vpaddw ymm11, ymm11, ymm12
vpcmpeqw ymm12, ymm6, ymm3
vpsrld ymm12, ymm12, 0x10
vpand ymm12, ymm11, ymm12
vpsrld ymm11, ymm11, 0x10
vpaddd ymm11, ymm11, ymm12
vpcmpeqd ymm6, ymm6, ymm3
vpsrlq ymm6, ymm6, 0x20
vpand ymm6, ymm11, ymm6
vpsrlq ymm11, ymm11, 0x20
vpaddq ymm6, ymm11, ymm6
vpackusdw ymm6, ymm6, ymm8
vpermq ymm6, ymm6, 0xd8
vpermq ymm8, ymm10, 0xd8
vpackusdw ymm6, ymm8, ymm6
vpermq ymm6, ymm6, 0xd8
vpsllw ymm6, ymm6, 8
vpermq ymm8, ymm9, 0xd8
vpermq ymm7, ymm7, 0xd8
vpackusdw ymm7, ymm7, ymm8
vpermq ymm7, ymm7, 0xd8
vpor ymm6, ymm6, ymm7
vpxor ymm6, ymm6, ymm5
vmovdqu ymmword [r14 + r10*2], ymm6
add r10, 0x10
cmp r10, r9
jl 0x140099fc0
jmp 0x14009aaee
xor r9d, r9d
jmp 0x14009aaf7
mov rcx, qword [rsi + 0x28]
test rcx, rcx
je 0x14009a2f5
mov rdx, qword [rsi + 0x38]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x14009a2e0
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x14009a880
add rdx, 0x27
mov rcx, rax
vzeroupper
call fcn.1401c3b44
mov r8, qword [rsi + 0x18]
mov rax, qword [rdi]
mov rdx, r8
sub rdx, rax
mov qword [rsi + 0x28], r14
mov qword [rsi + 0x30], r12
mov qword [rsi + 0x38], r12
cmp r8, rax
je 0x14009a340
test rdx, rdx
js 0x14009a6e8
mov r12, rdx
sar r12, 3
mov r15, rdx
sar r15, 2
cmp rdx, 0x3ff9
jb 0x14009a34b
lea rcx, [r15 + 0x27]
vzeroupper
call fcn.1401c3b4c
lea r14, [rax + 0x27]
and r14, 0xffffffffffffffe0
mov qword [r14 - 8], rax
jmp 0x14009a359
xor r14d, r14d
mov rcx, rax
xor r12d, r12d
jmp 0x14009a371
mov rcx, r15
vzeroupper
call fcn.1401c3b4c
mov r14, rax
lea r12, [r14 + r12*2]
mov rcx, r14
xor edx, edx
mov r8, r15
call fcn.1401bb600
mov rcx, qword [rsi + 0x18]
mov rax, qword [rdi]
sub rcx, rax
shr rcx, 3
test ecx, ecx
jle 0x14009a6f0
movsxd rcx, ecx
xor edx, edx
mov r8, rcx
and r8, 0xfffffffffffffff0
je 0x14009a6e0
xor r9d, r9d
vpcmpeqd ymm0, ymm0, ymm0
vpbroadcastb ymm1, byte [0x140224164]
vbroadcasti128 ymm2, xmmword [0x1402245c0]
vpxor xmm3, xmm3, xmm3
vbroadcasti128 ymm4, xmmword [0x1402245d0]
nop dword [rax + rax]
vmovdqu ymm6, ymmword [rax + r9*8]
vmovdqu ymm7, ymmword [rax + r9*8 + 0x20]
vmovdqu ymm8, ymmword [rax + r9*8 + 0x40]
vmovdqu ymm9, ymmword [rax + r9*8 + 0x60]
vpaddq ymm10, ymm7, ymm0
vpandn ymm10, ymm7, ymm10
vpand ymm11, ymm10, ymm1
vpshufb ymm11, ymm2, ymm11
vpsrlw ymm10, ymm10, 4
vpand ymm10, ymm10, ymm1
vpshufb ymm10, ymm2, ymm10
vpaddb ymm10, ymm10, ymm11
vpsadbw ymm10, ymm10, ymm3
vpaddq ymm11, ymm6, ymm0
vpandn ymm11, ymm6, ymm11
vpand ymm12, ymm11, ymm1
vpshufb ymm12, ymm2, ymm12
vpsrlw ymm11, ymm11, 4
vpand ymm11, ymm11, ymm1
vpshufb ymm11, ymm2, ymm11
vpaddb ymm11, ymm11, ymm12
vpsadbw ymm11, ymm11, ymm3
vpackusdw ymm10, ymm11, ymm10
vpaddq ymm11, ymm9, ymm0
vpandn ymm11, ymm9, ymm11
vpand ymm12, ymm11, ymm1
vpshufb ymm12, ymm2, ymm12
vpsrlw ymm11, ymm11, 4
vpand ymm11, ymm11, ymm1
vpshufb ymm11, ymm2, ymm11
vpaddb ymm11, ymm11, ymm12
vpsadbw ymm11, ymm11, ymm3
vpaddq ymm12, ymm8, ymm0
vpandn ymm12, ymm8, ymm12
vpand ymm13, ymm12, ymm1
vpshufb ymm13, ymm2, ymm13
vpsrlw ymm12, ymm12, 4
vpand ymm12, ymm12, ymm1
vpshufb ymm12, ymm2, ymm12
vpaddb ymm12, ymm12, ymm13
vpsadbw ymm12, ymm12, ymm3
vpackusdw ymm11, ymm12, ymm11
vpshufb ymm12, ymm4, ymm7
vpsrlw ymm13, ymm7, 4
vpand ymm13, ymm13, ymm1
vpcmpeqb ymm14, ymm13, ymm3
vpand ymm12, ymm12, ymm14
vpshufb ymm13, ymm4, ymm13
vpaddb ymm12, ymm12, ymm13
vpcmpeqb ymm13, ymm7, ymm3
vpsrlw ymm13, ymm13, 8
vpand ymm13, ymm12, ymm13
vpsrlw ymm12, ymm12, 8
vpaddw ymm12, ymm12, ymm13
vpcmpeqw ymm13, ymm7, ymm3
vpsrld ymm13, ymm13, 0x10
vpand ymm13, ymm12, ymm13
vpsrld ymm12, ymm12, 0x10
vpaddd ymm12, ymm12, ymm13
vpcmpeqd ymm13, ymm7, ymm3
vpsrlq ymm13, ymm13, 0x20
vpand ymm13, ymm12, ymm13
vpsrlq ymm12, ymm12, 0x20
vpaddq ymm12, ymm12, ymm13
vpshufb ymm13, ymm4, ymm6
vpsrlw ymm14, ymm6, 4
vpand ymm14, ymm14, ymm1
vpcmpeqb ymm15, ymm14, ymm3
vpand ymm13, ymm13, ymm15
vpshufb ymm14, ymm4, ymm14
vpaddb ymm13, ymm13, ymm14
vpcmpeqb ymm14, ymm6, ymm3
vpsrlw ymm14, ymm14, 8
vpand ymm14, ymm13, ymm14
vpsrlw ymm13, ymm13, 8
vpaddw ymm13, ymm13, ymm14
vpcmpeqw ymm14, ymm6, ymm3
vpsrld ymm14, ymm14, 0x10
vpand ymm14, ymm13, ymm14
vpsrld ymm13, ymm13, 0x10
vpaddd ymm13, ymm13, ymm14
vpcmpeqd ymm14, ymm6, ymm3
vpsrlq ymm14, ymm14, 0x20
vpand ymm14, ymm13, ymm14
vpsrlq ymm13, ymm13, 0x20
vpaddq ymm13, ymm13, ymm14
vpackusdw ymm12, ymm13, ymm12
vpshufb ymm13, ymm4, ymm9
vpsrlw ymm14, ymm9, 4
vpand ymm14, ymm14, ymm1
vpcmpeqb ymm15, ymm14, ymm3
vpand ymm13, ymm13, ymm15
vpshufb ymm14, ymm4, ymm14
vpaddb ymm13, ymm13, ymm14
vpcmpeqb ymm14, ymm9, ymm3
vpsrlw ymm14, ymm14, 8
vpand ymm14, ymm13, ymm14
vpsrlw ymm13, ymm13, 8
vpaddw ymm13, ymm13, ymm14
vpcmpeqw ymm14, ymm9, ymm3
vpsrld ymm14, ymm14, 0x10
vpand ymm14, ymm13, ymm14
vpsrld ymm13, ymm13, 0x10
vpaddd ymm13, ymm13, ymm14
vpcmpeqd ymm14, ymm9, ymm3
vpsrlq ymm14, ymm14, 0x20
vpand ymm14, ymm13, ymm14
vpsrlq ymm13, ymm13, 0x20
vpaddq ymm13, ymm13, ymm14
vpshufb ymm14, ymm4, ymm8
vpsrlw ymm15, ymm8, 4
vpand ymm15, ymm15, ymm1
vpcmpeqb ymm5, ymm15, ymm3
vpand ymm5, ymm14, ymm5
vpshufb ymm14, ymm4, ymm15
vpaddb ymm5, ymm14, ymm5
vpcmpeqb ymm14, ymm8, ymm3
vpsrlw ymm14, ymm14, 8
vpand ymm14, ymm14, ymm5
vpsrlw ymm5, ymm5, 8
vpaddw ymm5, ymm14, ymm5
vpcmpeqw ymm14, ymm8, ymm3
vpsrld ymm14, ymm14, 0x10
vpand ymm14, ymm14, ymm5
vpsrld ymm5, ymm5, 0x10
vpaddd ymm5, ymm14, ymm5
vpcmpeqd ymm14, ymm8, ymm3
vpsrlq ymm14, ymm14, 0x20
vpand ymm14, ymm14, ymm5
vpsrlq ymm5, ymm5, 0x20
vpaddq ymm5, ymm14, ymm5
vpackusdw ymm5, ymm5, ymm13
vpermq ymm11, ymm11, 0xd8
vpermq ymm10, ymm10, 0xd8
vpackusdw ymm10, ymm10, ymm11
vpermq ymm5, ymm5, 0xd8
vpermq ymm11, ymm12, 0xd8
vpackusdw ymm5, ymm11, ymm5
vpermq ymm10, ymm10, 0xd8
vpsllw ymm10, ymm10, 2
vpermq ymm5, ymm5, 0xd8
vpsllw ymm5, ymm5, 0xa
vpor ymm5, ymm10, ymm5
vpcmpeqq ymm9, ymm9, ymm3
vpcmpeqq ymm8, ymm8, ymm3
vpackssdw ymm8, ymm8, ymm9
vpcmpeqq ymm7, ymm7, ymm3
vpcmpeqq ymm6, ymm6, ymm3
vpackssdw ymm6, ymm6, ymm7
vpermq ymm7, ymm8, 0xd8
vpermq ymm6, ymm6, 0xd8
vpackssdw ymm6, ymm6, ymm7
vpxor ymm5, ymm5, ymmword [0x140224680]
vpermq ymm6, ymm6, 0xd8
vpblendvb ymm5, ymm5, ymm3, ymm6
vmovdqu ymmword [r14 + r9*2], ymm5
add r9, 0x10
cmp r9, r8
jl 0x14009a3c0
jmp 0x14009ab20
xor r8d, r8d
jmp 0x14009ab29
vzeroupper
call fcn.1400086c0
mov rcx, qword [rsi + 0x40]
test rcx, rcx
je 0x14009a72d
mov rdx, qword [rsi + 0x50]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x14009a725
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x14009a880
add rdx, 0x27
mov rcx, rax
vzeroupper
call fcn.1401c3b44
mov qword [rsi + 0x40], r14
mov qword [rsi + 0x48], r12
mov qword [rsi + 0x50], r12
lea r14, [rsi + 0x58]
mov word [rsp + 0x4c], 0xffff
lea r8, [rsp + 0x4c]
mov edx, 0x52e
mov rcx, r14
vzeroupper
call fcn.140090f10
mov rcx, qword [rsi + 0x78]
mov rdx, qword [rbx]
mov rax, rcx
sub rax, rdx
sar rax, 2
lea r15, [rsi + 0x88]
mov ebp, 0xffffffff
xor r13d, r13d
lea r12, [rsp + 0x4e]
xor r8d, r8d
jmp 0x14009a7a9
inc r8d
mov rax, rcx
sub rax, rdx
sar rax, 2
lea r9, [r13 + 1]
cmp rax, r13
mov r13, r9
jbe 0x14009a7ec
cmp r13, rax
je 0x14009a7b4
cmp dword [rdx + r13*4], ebp
je 0x14009a790
test r8d, r8d
jle 0x14009a7d1
mov word [rsp + 0x4e], r8w
mov rcx, r15
mov rdx, r12
call fcn.14008c6f0
mov rcx, qword [rsi + 0x78]
mov rdx, qword [rbx]
mov rax, rcx
sub rax, rdx
sar rax, 2
mov r8d, 1
cmp rax, r13
jbe 0x14009a79d
mov ebp, dword [rdx + r13*4]
jmp 0x14009a79d
mov rcx, qword [rsi + 0x90]
mov rdx, qword [r15]
xor r9d, r9d
cmp rdx, rcx
je 0x14009a888
sub rcx, rdx
add rcx, 0xfffffffffffffffe
shr rcx, 1
inc rcx
mov r8, rcx
and r8, 0xfffffffffffffff0
je 0x14009a878
lea r9, [r8 - 1]
vpxor xmm0, xmm0, xmm0
xor r10d, r10d
vpxor xmm1, xmm1, xmm1
nop word [rax + rax]
vpmovsxwd ymm2, xmmword [rdx + r10*2]
vpmovsxwd ymm3, xmmword [rdx + r10*2 + 0x10]
vpaddd ymm0, ymm0, ymm2
vpaddd ymm1, ymm1, ymm3
add r10, 0x10
cmp r10, r9
jle 0x14009a830
vpaddd ymm0, ymm0, ymm1
vextracti128 xmm1, ymm0, 1
vpaddd xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0xee
vpaddd xmm0, xmm0, xmm1
vpshufd xmm1, xmm0, 0x55
vpaddd xmm0, xmm0, xmm1
vmovd r9d, xmm0
jmp 0x14009ab68
xor r8d, r8d
jmp 0x14009ab5d
vzeroupper
call fcn.1401f09f0
cmp rax, r9
je 0x14009a897
xor ecx, ecx
vzeroupper
call fcn.140007c50
lea rcx, [rsi + 0xb8]
mov rdx, r15
vzeroupper
call fcn.14009cae0
mov r8, qword [rsi + 0x18]
mov rax, qword [rdi]
sub r8, rax
mov rdx, r8
shr rdx, 3
test edx, edx
jle 0x14009aa86
mov rcx, qword [r14]
movsxd rdx, edx
shr r8, 5
shl r8, 0x22
je 0x14009aa27
mov r8, rdx
shr r8, 2
xor r9d, r9d
vpcmpeqd ymm0, ymm0, ymm0
vpbroadcastb ymm1, byte [0x140224164]
vbroadcasti128 ymm2, xmmword [0x1402245c0]
vpxor xmm3, xmm3, xmm3
vbroadcasti128 ymm4, xmmword [0x1402245d0]
vpbroadcastd xmm5, dword [0x140224148]
vpcmpeqd xmm6, xmm6, xmm6
vmovdqu ymm7, ymmword [rax + r9*8]
vpaddq ymm8, ymm7, ymm0
vpandn ymm8, ymm7, ymm8
vpand ymm9, ymm8, ymm1
vpshufb ymm9, ymm2, ymm9
vpsrlw ymm8, ymm8, 4
vpand ymm8, ymm8, ymm1
vpshufb ymm8, ymm2, ymm8
vpaddb ymm8, ymm8, ymm9
vpsadbw ymm8, ymm8, ymm3
vextracti128 xmm9, ymm8, 1
vpackusdw xmm8, xmm8, xmm9
vpshufb ymm9, ymm4, ymm7
vpsrlw ymm10, ymm7, 4
vpand ymm10, ymm10, ymm1
vpcmpeqb ymm11, ymm10, ymm3
vpand ymm9, ymm9, ymm11
vpshufb ymm10, ymm4, ymm10
vpaddb ymm9, ymm9, ymm10
vpcmpeqb ymm10, ymm7, ymm3
vpsrlw ymm10, ymm10, 8
vpand ymm10, ymm9, ymm10
vpsrlw ymm9, ymm9, 8
vpaddw ymm9, ymm9, ymm10
vpcmpeqw ymm10, ymm7, ymm3
vpsrld ymm10, ymm10, 0x10
vpand ymm10, ymm9, ymm10
vpsrld ymm9, ymm9, 0x10
vpaddd ymm9, ymm9, ymm10
vpcmpeqd ymm7, ymm7, ymm3
vpsrlq ymm7, ymm7, 0x20
vpand ymm7, ymm9, ymm7
vpsrlq ymm9, ymm9, 0x20
vpaddq ymm7, ymm9, ymm7
vextracti128 xmm9, ymm7, 1
vpackusdw xmm7, xmm7, xmm9
vpxor xmm7, xmm7, xmm5
vpaddd xmm9, xmm7, xmm6
vpmaddwd xmm7, xmm9, xmm7
vpsrld xmm7, xmm7, 1
vpaddd xmm7, xmm8, xmm7
vmovd r10d, xmm7
movsxd r10, r10d
vpextrd r11d, xmm7, 1
mov word [rcx + r10*2], r9w
movsxd r10, r11d
lea r11d, [r9 + 1]
mov word [rcx + r10*2], r11w
vpextrd r10d, xmm7, 2
movsxd r10, r10d
lea r11d, [r9 + 2]
mov word [rcx + r10*2], r11w
vpextrd r10d, xmm7, 3
movsxd r10, r10d
lea r11d, [r9 + 3]
mov word [rcx + r10*2], r11w
add r9, 4
dec r8
jne 0x14009a910
mov r9, rdx
and r9, 0xfffffffffffffffc
mov r8, rdx
sub r8, r9
jbe 0x14009aa86
shr rdx, 2
lea r9d, [rdx*4]
movzx r9d, r9w
shl rdx, 5
add rax, rdx
xor edx, edx
nop
mov r10, qword [rax + rdx*8]
xor r11d, r11d
tzcnt r11, r10
lzcnt r10, r10
xor r10d, 0x3f
lea esi, [r10 - 1]
imul esi, r10d
shr esi, 1
add esi, r11d
movsxd r10, esi
lea r11d, [r9 + rdx]
mov word [rcx + r10*2], r11w
inc rdx
cmp r8, rdx
jne 0x14009aa50
vmovups xmm6, xmmword [rsp + 0x50]
vmovups xmm7, xmmword [rsp + 0x60]
vmovups xmm8, xmmword [rsp + 0x70]
vmovups xmm9, xmmword [rsp + 0x80]
vmovups xmm10, xmmword [rsp + 0x90]
vmovups xmm11, xmmword [rsp + 0xa0]
vmovups xmm12, xmmword [rsp + 0xb0]
vmovups xmm13, xmmword [rsp + 0xc0]
vmovups xmm14, xmmword [rsp + 0xd0]
vmovups xmm15, xmmword [rsp + 0xe0]
add rsp, 0xf8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
vzeroupper
ret
cmp rcx, r9
je 0x14009a2ab
mov r10, qword [rax + r9*8]
xor r11d, r11d
tzcnt r11, r10
lzcnt r10, r10
shl r10d, 8
or r10d, r11d
xor r10d, 0x3f00
mov word [r14 + r9*2], r10w
inc r9
jmp 0x14009aaee
cmp rcx, r8
je 0x14009a6f0
mov r9, qword [rax + r8*8]
xor r10d, r10d
tzcnt r10, r9
xor r11d, r11d
lzcnt r11, r9
shl r11d, 0xa
lea r10d, [r11 + r10*4]
xor r10d, 0xfffffc00
test r9, r9
cmove r10d, edx
mov word [r14 + r8*2], r10w
inc r8
jmp 0x14009ab20
movsx r10d, word [rdx + r8*2]
add r9d, r10d
inc r8
cmp rcx, r8
jne 0x14009ab5d
movsxd r9, r9d
jmp 0x14009a888