Function at 0x14009b4e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x1a8
movdqa xmmword [rsp + 0x190], xmm14
movaps xmmword [rsp + 0x180], xmm13
movaps xmmword [rsp + 0x170], xmm12
movdqa xmmword [rsp + 0x160], xmm11
movdqa xmmword [rsp + 0x150], xmm10
movaps xmmword [rsp + 0x140], xmm9
movaps xmmword [rsp + 0x130], xmm8
movdqa xmmword [rsp + 0x120], xmm7
movdqa xmmword [rsp + 0x110], xmm6
mov esi, r9d
mov ebx, r8d
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x58], rcx
movzx ecx, si
movabs rax, 0x1000000000000
xor edx, edx
mov qword [rsp + 0x50], rcx
div rcx
mov qword [rsp + 0x48], rax
lea ebp, [rbx + 1]
mov edx, 2
mov rcx, rbp
xor r8d, r8d
call fcn.140042eb0
mov r15, rax
mov edx, 2
mov rcx, rbp
xor r8d, r8d
call fcn.140042eb0
mov r14, rax
mov edx, 2
mov rcx, rbp
xor r8d, r8d
call fcn.140042eb0
mov r12, rax
mov edx, 2
mov rcx, rbp
xor r8d, r8d
call fcn.140042eb0
mov r13, rax
mov edi, ebx
lea r8, [rdi + rdi]
mov rcx, r15
mov rdx, qword [rsp + 0x30]
mov qword [rsp + 0x60], r8
call fcn.1400b9f30
mov word [r15 + rdi*2], 0
mov word [r12], 1
mov rax, rbp
mov qword [rsp + 0x30], rbp
cmp ebp, 2
jb 0x14009b60e
lea rcx, [r12 + 2]
mov rax, qword [rsp + 0x30]
lea r8, [rax + rax]
add r8, 0xfffffffffffffffe
xor edx, edx
call fcn.1400ba5e0
lea eax, [rbx + rbx]
add eax, 1
mov qword [rsp + 0x108], rax
lea eax, [rsi - 1]
mov word [r14 + 2], ax
mov word [r14], ax
mov qword [rsp + 0x40], rbx
cmp ebx, 2
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0xa0], rdi
jbe 0x14009b676
lea rcx, [r14 + 4]
mov rax, qword [rsp + 0x60]
lea r8, [rax - 4]
xor ebp, ebp
xor edx, edx
call fcn.1400ba5e0
mov word [r14 + rdi*2], 1
cmp qword [rsp + 0x30], 0
jne 0x14009b67d
mov al, 1
mov dword [rsp + 0x2c], eax
mov r11, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x30]
jmp 0x14009b6a0
mov word [r14 + rdi*2], 1
mov rdi, qword [rsp + 0x30]
lea rbp, [rdi + rdi]
mov dword [rsp + 0x2c], 0
mov rcx, r13
xor edx, edx
mov r8, rbp
call fcn.1400ba5e0
mov r11, qword [rsp + 0x38]
mov rax, qword [rsp + 0x40]
add eax, 0xffffffff
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x98], rbp
lea rax, [rbp - 2]
mov qword [rsp + 0xf8], rax
lea r8, [rdi + rdi]
lea rax, [rdi*2]
add rax, r13
lea rcx, [r15 + rdi*2]
mov r9, r15
add r9, 2
lea rdx, [r14 + rdi*2]
mov rbp, r14
add rbp, 2
lea rbx, [rdi - 1]
lea r10, [rdi - 9]
mov qword [rsp + 0xd8], r10
shr r10, 3
add r10, 1
mov esi, edi
and esi, 0xfffffff8
mov qword [rsp + 0x78], rsi
add rsi, 0xfffffffffffffff8
mov qword [rsp + 0xc0], rsi
shr rsi, 3
add rsi, 1
mov qword [rsp + 0xf0], r9
cmp r9, rdx
setb dl
cmp rbp, rcx
setb cl
and cl, dl
mov byte [rsp + 0x2b], cl
mov qword [rsp + 0x68], rbx
and rbx, 0xfffffffffffffff8
mov rcx, r10
mov qword [rsp + 0xd0], r10
and r10, 0xfffffffffffffffe
mov qword [rsp + 0xb0], r10
mov rcx, rdi
neg rcx
mov qword [rsp + 0x88], rcx
cmp r12, rax
lea rax, [r12 + rdi*2]
setb cl
cmp r13, rax
setb al
and al, cl
mov byte [rsp + 0x2a], al
mov rax, rsi
mov qword [rsp + 0xb8], rsi
and rsi, 0xfffffffffffffffe
mov qword [rsp + 0xa8], rsi
movq xmm0, qword [rsp + 0x48]
pshufd xmm12, xmm0, 0x44
movd xmm0, dword [rsp + 0x50]
pshufd xmm8, xmm0, 0
movd xmm0, r11d
pshufd xmm9, xmm0, 0
and r8, 0xfffffffffffffff0
mov qword [rsp + 0x90], r8
pxor xmm10, xmm10
movdqa xmm13, xmm12
psrlq xmm13, 0x20
pslld xmm8, 0x10
psrad xmm8, 0x10
pcmpeqd xmm11, xmm11
lea rax, [r12 + 2]
mov qword [rsp + 0xe8], rax
mov rax, qword [rsp + 0x60]
add rax, 0xfffffffffffffffe
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0x80], rbx
lea rax, [rbx + 1]
mov qword [rsp + 0xc8], rax
mov rsi, rdi
xor edi, edi
mov ebx, dword [rsp + 0x2c]
jmp 0x14009b896
movzx eax, si
mov rcx, qword [rsp + 0x100]
mov word [r12 + rcx*2], ax
movzx ecx, word [r12]
mov edx, r11d
sub edx, eax
add edx, ecx
mov r10, qword [rsp + 0x48]
mov rax, r10
imul rax, rdx
shr rax, 0x30
mov r9, qword [rsp + 0x50]
imul eax, r9d
sub edx, eax
mov eax, edx
not eax
add eax, r11d
shr eax, 0xf
and eax, 1
imul eax, r9d
sub edx, eax
mov word [r12], dx
add rdi, 1
cmp rdi, qword [rsp + 0x108]
mov rsi, qword [rsp + 0x30]
je 0x14009c03c
test bl, bl
jne 0x14009bfe0
mov qword [rsp + 0x70], rdi
movzx r8d, word [r15]
mov r10d, r8d
add r10d, 0xffff
shr r10d, 0x10
movzx r9d, word [r14]
mov edx, r9d
add edx, 0xffff
shr edx, 0x10
xor edx, 1
mov ebx, 1
xor eax, eax
mov rbp, rsi
mov ecx, 1
nop word [rax + rax]
movzx edi, word [r15 + rbp*2 - 2]
add edi, 0xffff
shr edi, 0x10
xor edi, 1
and ebx, edi
movzx edi, word [r14 + rbp*2 - 2]
add edi, 0xffff
shr edi, 0x10
xor edi, 1
and ecx, edi
mov esi, ecx
not esi
and esi, ebx
or eax, esi
add rbp, 0xffffffffffffffff
jne 0x14009b8e0
mov ebx, dword [rsp + 0x2c]
test bl, bl
mov rsi, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x70]
jne 0x14009bfe0
or r10d, 0xfffe
and eax, r10d
or eax, edx
neg eax
xor r9d, r8d
mov ecx, eax
and ecx, r9d
mov edx, ecx
xor edx, r8d
mov word [r15], dx
xor word [r14], cx
cmp dword [rsp + 0x40], 0
je 0x14009baf7
cmp qword [rsp + 0x68], 8
setb cl
or cl, byte [rsp + 0x2b]
mov edx, 1
jne 0x14009ba6a
movd xmm0, eax
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
cmp qword [rsp + 0xd8], 8
jae 0x14009b992
xor ecx, ecx
jmp 0x14009ba10
mov rdx, qword [rsp + 0xb0]
xor ecx, ecx
nop dword [rax]
movdqu xmm1, xmmword [r15 + rcx*2 + 2]
movdqu xmm2, xmmword [r14 + rcx*2 + 2]
pxor xmm2, xmm1
pand xmm2, xmm0
pxor xmm1, xmm2
movdqu xmmword [r15 + rcx*2 + 2], xmm1
movdqu xmm1, xmmword [r14 + rcx*2 + 2]
movdqu xmm3, xmmword [r14 + rcx*2 + 0x12]
pxor xmm1, xmm2
movdqu xmmword [r14 + rcx*2 + 2], xmm1
movdqu xmm1, xmmword [r15 + rcx*2 + 0x12]
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqu xmmword [r15 + rcx*2 + 0x12], xmm1
movdqu xmm1, xmmword [r14 + rcx*2 + 0x12]
pxor xmm1, xmm3
movdqu xmmword [r14 + rcx*2 + 0x12], xmm1
add rcx, 0x10
add rdx, 0xfffffffffffffffe
jne 0x14009b9a0
test byte [rsp + 0xd0], 1
je 0x14009ba4f
add rcx, rcx
or rcx, 2
movdqu xmm1, xmmword [r15 + rcx]
movdqu xmm2, xmmword [r14 + rcx]
pxor xmm2, xmm1
pand xmm2, xmm0
pxor xmm1, xmm2
movdqu xmmword [r15 + rcx], xmm1
movdqu xmm0, xmmword [r14 + rcx]
pxor xmm0, xmm2
movdqu xmmword [r14 + rcx], xmm0
mov rdx, qword [rsp + 0xc8]
mov rcx, qword [rsp + 0x80]
cmp qword [rsp + 0x68], rcx
je 0x14009baf7
mov rcx, rdx
test sil, 1
jne 0x14009ba9b
movzx ecx, word [r15 + rdx*2]
movzx ebp, word [r14 + rdx*2]
xor bp, cx
mov esi, eax
and esi, ebp
mov ebx, esi
xor ebx, ecx
mov word [r15 + rdx*2], bx
xor word [r14 + rdx*2], si
mov rsi, qword [rsp + 0x30]
lea rcx, [rdx + 1]
not rdx
cmp rdx, qword [rsp + 0x88]
je 0x14009baf7
nop dword [rax + rax]
movzx edx, word [r15 + rcx*2]
movzx ebx, word [r14 + rcx*2]
xor bx, dx
and ebx, eax
mov ebp, ebx
xor ebp, edx
mov word [r15 + rcx*2], bp
xor word [r14 + rcx*2], bx
movzx edx, word [r15 + rcx*2 + 2]
movzx ebx, word [r14 + rcx*2 + 2]
xor bx, dx
and ebx, eax
mov ebp, ebx
xor ebp, edx
mov word [r15 + rcx*2 + 2], bp
xor word [r14 + rcx*2 + 2], bx
add rcx, 2
cmp rsi, rcx
jne 0x14009bab0
mov ebx, dword [rsp + 0x2c]
test bl, bl
jne 0x14009bfe0
cmp esi, 8
setb cl
or cl, byte [rsp + 0x2a]
je 0x14009bb16
xor edx, edx
jmp 0x14009bbfa
movd xmm0, eax
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
cmp qword [rsp + 0xc0], 0
je 0x14009bd3e
mov rdx, qword [rsp + 0xa8]
xor ecx, ecx
nop dword [rax]
movdqu xmm1, xmmword [r12 + rcx*2]
movdqu xmm2, xmmword [r13 + rcx*2]
pxor xmm2, xmm1
pand xmm2, xmm0
pxor xmm1, xmm2
movdqu xmmword [r12 + rcx*2], xmm1
movdqu xmm1, xmmword [r13 + rcx*2]
movdqu xmm3, xmmword [r13 + rcx*2 + 0x10]
pxor xmm1, xmm2
movdqu xmmword [r13 + rcx*2], xmm1
movdqu xmm1, xmmword [r12 + rcx*2 + 0x10]
pxor xmm3, xmm1
pand xmm3, xmm0
pxor xmm1, xmm3
movdqu xmmword [r12 + rcx*2 + 0x10], xmm1
movdqu xmm1, xmmword [r13 + rcx*2 + 0x10]
pxor xmm1, xmm3
movdqu xmmword [r13 + rcx*2 + 0x10], xmm1
add rcx, 0x10
add rdx, 0xfffffffffffffffe
jne 0x14009bb40
test byte [rsp + 0xb8], 1
je 0x14009bbe9
movdqu xmm1, xmmword [r12 + rcx*2]
movdqu xmm2, xmmword [r13 + rcx*2]
pxor xmm2, xmm1
pand xmm2, xmm0
pxor xmm1, xmm2
movdqu xmmword [r12 + rcx*2], xmm1
movdqu xmm0, xmmword [r13 + rcx*2]
pxor xmm0, xmm2
movdqu xmmword [r13 + rcx*2], xmm0
mov rcx, qword [rsp + 0x78]
mov rdx, rcx
cmp rcx, rsi
je 0x14009bc89
mov rcx, rdx
test sil, 1
je 0x14009bc30
movzx ecx, word [r12 + rdx*2]
movzx ebp, word [r13 + rdx*2]
xor bp, cx
mov edi, eax
and edi, ebp
mov ebx, edi
xor ebx, ecx
mov word [r12 + rdx*2], bx
xor word [r13 + rdx*2], di
mov rdi, qword [rsp + 0x70]
mov rcx, rdx
or rcx, 1
not rdx
cmp rdx, qword [rsp + 0x88]
je 0x14009bc89
nop dword [rax]
movzx edx, word [r12 + rcx*2]
movzx ebx, word [r13 + rcx*2]
xor bx, dx
and ebx, eax
mov ebp, ebx
xor ebp, edx
mov word [r12 + rcx*2], bp
xor word [r13 + rcx*2], bx
movzx edx, word [r12 + rcx*2 + 2]
movzx ebx, word [r13 + rcx*2 + 2]
xor bx, dx
and ebx, eax
mov ebp, ebx
xor ebp, edx
mov word [r12 + rcx*2 + 2], bp
xor word [r13 + rcx*2 + 2], bx
add rcx, 2
cmp rsi, rcx
jne 0x14009bc40
mov ebx, dword [rsp + 0x2c]
test bl, bl
jne 0x14009bfe0
movzx ecx, word [r14]
movzx r8d, cx
movzx ebx, word [r15]
mov r10d, r11d
sub r10d, ebx
mov ebp, 1
mov rax, qword [rsp + 0x50]
mov rdx, qword [rsp + 0x48]
nop word cs:[rax + rax]
movzx ebx, bx
imul rbx, r8
movzx edi, cx
movzx r9d, r10w
mov rsi, r9
imul rsi, rdi
add rsi, rbx
mov rcx, rsi
imul rcx, rdx
shr rcx, 0x30
imul ecx, eax
sub esi, ecx
mov ecx, esi
not ecx
add ecx, r11d
shr ecx, 0xf
and ecx, 1
imul ecx, eax
sub esi, ecx
mov word [r15 + rbp*2 - 2], si
mov rsi, qword [rsp + 0x30]
cmp rsi, rbp
je 0x14009bd1a
movzx ebx, word [r15 + rbp*2]
movzx ecx, word [r14 + rbp*2]
add rbp, 1
jmp 0x14009bcc0
mov ebx, dword [rsp + 0x2c]
test bl, bl
mov rdi, qword [rsp + 0x70]
jne 0x14009bfe0
cmp esi, 8
setb dl
or dl, byte [rsp + 0x2a]
je 0x14009bd53
xor edx, edx
jmp 0x14009bf90
xor ecx, ecx
test byte [rsp + 0xb8], 1
jne 0x14009bbb8
jmp 0x14009bbe9
movd xmm0, r8d
pshufd xmm14, xmm0, 0
movd xmm1, r9d
pshufd xmm1, xmm1, 0
xor edx, edx
mov rax, qword [rsp + 0x90]
nop word cs:[rax + rax]
nop dword [rax]
movdqu xmm2, xmmword [r12 + rdx]
movdqa xmm3, xmm14
pslld xmm3, 0x10
psrad xmm3, 0x10
packssdw xmm3, xmm3
movdqa xmm4, xmm3
pmulhuw xmm4, xmm2
pmullw xmm3, xmm2
movdqa xmm5, xmm3
punpckhwd xmm5, xmm4
punpcklwd xmm3, xmm4
movdqu xmm4, xmmword [r13 + rdx]
movdqa xmm2, xmm1
pslld xmm2, 0x10
psrad xmm2, 0x10
packssdw xmm2, xmm2
movdqa xmm7, xmm2
pmulhuw xmm7, xmm4
pmullw xmm2, xmm4
movdqa xmm6, xmm2
punpckhwd xmm6, xmm7
paddd xmm6, xmm5
punpcklwd xmm2, xmm7
paddd xmm2, xmm3
movdqa xmm7, xmm6
punpckhdq xmm7, xmm10
movdqa xmm3, xmm6
punpckldq xmm3, xmm10
movdqa xmm5, xmm2
punpckhdq xmm5, xmm10
movdqa xmm4, xmm2
punpckldq xmm4, xmm10
movdqa xmm0, xmm12
pmuludq xmm0, xmm4
pmuludq xmm4, xmm13
psllq xmm4, 0x20
paddq xmm4, xmm0
movdqa xmm0, xmm12
pmuludq xmm0, xmm5
pmuludq xmm5, xmm13
psllq xmm5, 0x20
paddq xmm5, xmm0
movdqa xmm0, xmm12
pmuludq xmm0, xmm3
pmuludq xmm3, xmm13
psllq xmm3, 0x20
paddq xmm3, xmm0
movdqa xmm0, xmm12
pmuludq xmm0, xmm7
pmuludq xmm7, xmm13
psllq xmm7, 0x20
paddq xmm7, xmm0
movdqa xmm0, xmm7
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm7, 0x10
pshufd xmm7, xmm7, 0xed
punpckldq xmm7, xmm0
movdqa xmm0, xmm3
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm3, 0x10
pshufd xmm3, xmm3, 0xed
punpckldq xmm3, xmm0
packssdw xmm3, xmm7
movdqa xmm0, xmm5
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm5, 0x10
pshufd xmm5, xmm5, 0xed
punpckldq xmm5, xmm0
movdqa xmm0, xmm4
psrad xmm0, 0x1f
pshufd xmm0, xmm0, 0xed
psrad xmm4, 0x10
pshufd xmm4, xmm4, 0xed
punpckldq xmm4, xmm0
packssdw xmm4, xmm5
packssdw xmm4, xmm3
movdqa xmm0, xmm8
packssdw xmm0, xmm8
movdqa xmm3, xmm0
pmulhuw xmm3, xmm4
pmullw xmm4, xmm0
movdqa xmm5, xmm4
punpckhwd xmm5, xmm3
punpcklwd xmm4, xmm3
psubd xmm2, xmm4
psubd xmm6, xmm5
movdqa xmm3, xmm6
pxor xmm3, xmm11
movdqa xmm4, xmm2
pxor xmm4, xmm11
paddd xmm4, xmm9
paddd xmm3, xmm9
pslld xmm3, 0x10
pslld xmm4, 0x10
packssdw xmm4, xmm3
psrlw xmm4, 0xf
pmullw xmm4, xmm0
movdqa xmm0, xmm4
punpckhwd xmm0, xmm0
punpcklwd xmm4, xmm4
psubd xmm2, xmm4
psubd xmm6, xmm0
pslld xmm6, 0x10
psrad xmm6, 0x10
pslld xmm2, 0x10
psrad xmm2, 0x10
packssdw xmm2, xmm6
movdqu xmmword [r12 + rdx], xmm2
add rdx, 0x10
cmp rax, rdx
jne 0x14009bd80
mov rax, qword [rsp + 0x78]
mov rdx, rax
cmp rax, rsi
je 0x14009bfe0
nop
movzx ecx, word [r12 + rdx*2]
imul rcx, r8
movzx ebp, word [r13 + rdx*2]
mov rax, r9
imul rax, rbp
add rax, rcx
mov rcx, rax
imul rcx, qword [rsp + 0x48]
shr rcx, 0x30
mov rbp, qword [rsp + 0x50]
imul ecx, ebp
sub eax, ecx
mov ecx, eax
not ecx
add ecx, r11d
shr ecx, 0xf
and ecx, 1
imul ecx, ebp
sub eax, ecx
mov word [r12 + rdx*2], ax
add rdx, 1
cmp rsi, rdx
jne 0x14009bf90
cmp esi, 2
jb 0x14009c002
mov rcx, r15
mov rdx, qword [rsp + 0xf0]
mov r8, qword [rsp + 0xf8]
call fcn.1400b9f30
mov r11, qword [rsp + 0x38]
mov word [r15 + rsi*2 - 2], 0
movzx esi, word [r12]
cmp dword [rsp + 0x40], 2
jb 0x14009b830
mov rcx, r12
mov rdx, qword [rsp + 0xe8]
mov r8, qword [rsp + 0xe0]
call fcn.1400b9f30
mov r11, qword [rsp + 0x38]
jmp 0x14009b830
movzx eax, word [r15]
add eax, 0xffff
shr eax, 0x10
not eax
movzx ecx, word [r14]
lea ebp, [rcx + 0xffff]
shr ebp, 0x10
and ebp, eax
cmp esi, 2
jb 0x14009c078
mov eax, 1
mov rbx, qword [rsp + 0x68]
cmp rbx, 8
jae 0x14009c082
mov r8, qword [rsp + 0x58]
jmp 0x14009c160
mov r8, qword [rsp + 0x58]
jmp 0x14009c18e
mov rdi, qword [rsp + 0x80]
lea rax, [rdi + 1]
movd xmm0, ebp
movaps xmm1, xmmword [0x1400f87a0]
movss xmm1, xmm0
pcmpeqd xmm0, xmm0
xor edx, edx
pxor xmm2, xmm2
movdqa xmm3, xmmword [0x1400f8790]
movdqa xmm4, xmmword [0x1400f8780]
nop word [rax + rax]
movq xmm6, qword [r15 + rdx*2 + 2]
movq xmm5, qword [r15 + rdx*2 + 0xa]
punpcklwd xmm6, xmm2
punpcklwd xmm5, xmm2
paddd xmm6, xmm3
paddd xmm5, xmm3
psrld xmm6, 0x10
pandn xmm6, xmm1
psrld xmm5, 0x10
pandn xmm5, xmm0
movq xmm1, qword [r14 + rdx*2 + 2]
movq xmm0, qword [r14 + rdx*2 + 0xa]
punpcklwd xmm1, xmm2
punpcklwd xmm0, xmm2
paddd xmm1, xmm3
paddd xmm0, xmm3
psrld xmm1, 0x10
psrld xmm0, 0x10
pxor xmm1, xmm4
pand xmm1, xmm6
pxor xmm0, xmm4
pand xmm0, xmm5
add rdx, 8
cmp rdi, rdx
jne 0x14009c0c0
pand xmm0, xmm1
pshufd xmm1, xmm0, 0xee
pand xmm1, xmm0
pshufd xmm0, xmm1, 0x55
pand xmm0, xmm1
movd ebp, xmm0
cmp rbx, rdi
mov r8, qword [rsp + 0x58]
je 0x14009c18e
nop word cs:[rax + rax]
nop
movzx edx, word [r15 + rax*2]
add edx, 0xffff
shr edx, 0x10
not edx
and edx, ebp
movzx ebp, word [r14 + rax*2]
add ebp, 0xffff
shr ebp, 0x10
xor ebp, 1
and ebp, edx
add rax, 1
cmp rsi, rax
jne 0x14009c160
lea edx, [r9 - 2]
mov esi, 1
mov eax, 1
jmp 0x14009c1c9
imul ecx, ecx
mov rbx, r10
imul rbx, rcx
shr rbx, 0x30
imul ebx, r9d
sub ecx, ebx
mov ebx, ecx
not ebx
add ebx, r11d
shr ebx, 0xf
and ebx, 1
imul ebx, r9d
sub ecx, ebx
add esi, esi
movzx ecx, cx
test edx, esi
je 0x14009c1a0
imul eax, ecx
mov rdi, r10
imul rdi, rax
shr rdi, 0x30
imul edi, r9d
sub eax, edi
mov edi, eax
not edi
add edi, r11d
shr edi, 0xf
and edi, 1
imul edi, r9d
sub eax, edi
movzx eax, ax
mov ebx, esi
not ebx
and edx, ebx
jne 0x14009c1a0
mov rcx, qword [rsp + 0x40]
test ecx, ecx
mov rsi, qword [rsp + 0xa0]
je 0x14009c27c
cmp ecx, 8
jb 0x14009c239
lea rcx, [rsi*2]
add rcx, r13
cmp rcx, r8
jbe 0x14009c335
lea rcx, [r8 + rsi*2]
cmp r13, rcx
jae 0x14009c335
xor ecx, ecx
nop dword [rax + rax]
movzx ebx, word [r13 + rcx*2]
imul rbx, rax
mov rdx, rbx
imul rdx, r10
shr rdx, 0x30
imul edx, r9d
sub ebx, edx
mov edx, ebx
not edx
add edx, r11d
shr edx, 0xf
and edx, 1
imul edx, r9d
sub ebx, edx
mov word [r8 + rcx*2], bx
add rcx, 1
cmp rsi, rcx
jne 0x14009c240
mov rcx, r15
mov rsi, qword [rsp + 0x98]
mov rdx, rsi
call fcn.1400778a0
mov rcx, r15
call fcn.140042f50
mov rcx, r14
mov rdx, rsi
call fcn.1400778a0
mov rcx, r14
call fcn.140042f50
mov rcx, r12
mov rdx, rsi
call fcn.1400778a0
mov rcx, r12
call fcn.140042f50
mov rcx, r13
mov rdx, rsi
call fcn.1400778a0
mov rcx, r13
call fcn.140042f50
mov eax, ebp
movaps xmm6, xmmword [rsp + 0x110]
movaps xmm7, xmmword [rsp + 0x120]
movaps xmm8, xmmword [rsp + 0x130]
movaps xmm9, xmmword [rsp + 0x140]
movaps xmm10, xmmword [rsp + 0x150]
movaps xmm11, xmmword [rsp + 0x160]
movaps xmm12, xmmword [rsp + 0x170]
movaps xmm13, xmmword [rsp + 0x180]
movaps xmm14, xmmword [rsp + 0x190]
add rsp, 0x1a8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, esi
and ecx, 0xfffffff8
movd xmm0, eax
pshufd xmm0, xmm0, 0
mov rdi, qword [rsp + 0x60]
and rdi, 0xfffffffffffffff0
xor edx, edx
pslld xmm0, 0x10
psrad xmm0, 0x10
packssdw xmm0, xmm0
pxor xmm11, xmm11
pcmpeqd xmm10, xmm10
nop word cs:[rax + rax]
movdqu xmm3, xmmword [r13 + rdx]
movdqa xmm4, xmm0
pmulhuw xmm4, xmm3
pmullw xmm3, xmm0
movdqa xmm2, xmm3
punpcklwd xmm2, xmm4
punpckhwd xmm3, xmm4
movdqa xmm6, xmm3
punpckhdq xmm6, xmm11
movdqa xmm7, xmm3
punpckldq xmm7, xmm11
movdqa xmm4, xmm2
punpckhdq xmm4, xmm11
movdqa xmm5, xmm2
punpckldq xmm5, xmm11
movdqa xmm1, xmm12
pmuludq xmm1, xmm5
pmuludq xmm5, xmm13
psllq xmm5, 0x20
paddq xmm5, xmm1
movdqa xmm1, xmm12
pmuludq xmm1, xmm4
pmuludq xmm4, xmm13
psllq xmm4, 0x20
paddq xmm4, xmm1
movdqa xmm1, xmm12
pmuludq xmm1, xmm7
pmuludq xmm7, xmm13
psllq xmm7, 0x20
paddq xmm7, xmm1
movdqa xmm1, xmm12
pmuludq xmm1, xmm6
pmuludq xmm6, xmm13
psllq xmm6, 0x20
paddq xmm6, xmm1
movdqa xmm1, xmm6
psrad xmm1, 0x1f
pshufd xmm1, xmm1, 0xed
psrad xmm6, 0x10
pshufd xmm6, xmm6, 0xed
punpckldq xmm6, xmm1
movdqa xmm1, xmm7
psrad xmm1, 0x1f
pshufd xmm1, xmm1, 0xed
psrad xmm7, 0x10
pshufd xmm7, xmm7, 0xed
punpckldq xmm7, xmm1
packssdw xmm7, xmm6
movdqa xmm1, xmm4
psrad xmm1, 0x1f
pshufd xmm1, xmm1, 0xed
psrad xmm4, 0x10
pshufd xmm4, xmm4, 0xed
punpckldq xmm4, xmm1
movdqa xmm1, xmm5
psrad xmm1, 0x1f
pshufd xmm1, xmm1, 0xed
psrad xmm5, 0x10
pshufd xmm5, xmm5, 0xed
punpckldq xmm5, xmm1
packssdw xmm5, xmm4
packssdw xmm5, xmm7
movdqa xmm1, xmm8
packssdw xmm1, xmm8
movdqa xmm4, xmm1
pmulhuw xmm4, xmm5
pmullw xmm5, xmm1
movdqa xmm6, xmm5
punpckhwd xmm6, xmm4
punpcklwd xmm5, xmm4
psubd xmm2, xmm5
psubd xmm3, xmm6
movdqa xmm4, xmm3
pxor xmm4, xmm10
movdqa xmm5, xmm2
pxor xmm5, xmm10
paddd xmm5, xmm9
paddd xmm4, xmm9
pslld xmm4, 0x10
pslld xmm5, 0x10
packssdw xmm5, xmm4
psrlw xmm5, 0xf
pmullw xmm5, xmm1
movdqa xmm1, xmm5
punpckhwd xmm1, xmm1
punpcklwd xmm5, xmm5
psubd xmm2, xmm5
psubd xmm3, xmm1
pslld xmm3, 0x10
psrad xmm3, 0x10
pslld xmm2, 0x10
psrad xmm2, 0x10
packssdw xmm2, xmm3
movdqu xmmword [r8 + rdx], xmm2
add rdx, 0x10
cmp rdi, rdx
jne 0x14009c370
cmp rcx, rsi
jne 0x14009c240
jmp 0x14009c27c