Function at 0x180283ae0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x20], rsi
mov qword [rsp + 0x18], r8
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x70
mov rax, qword [r8 + 8]
mov r12d, ecx
movaps xmmword [rsp + 0x60], xmm6
mov rbx, rdx
movaps xmmword [rsp + 0x50], xmm7
movzx ecx, byte [rax + 0x11]
cmp cl, 2
je 0x180283e94
cmp cl, 4
jne 0x180283e6c
mov rax, qword [rsp + 0xc0]
movdqa xmm6, xmmword [0x1803cc9e0]
movdqa xmm7, xmmword [0x180417b10]
movaps xmmword [rsp + 0x40], xmm8
movsxd r15, dword [rax]
mov r8d, dword [rax + 8]
mov ecx, dword [rax + 0xc]
add r8d, r15d
movdqa xmm8, xmmword [0x1803cca30]
mov rax, r15
neg rax
movaps xmmword [rsp + 0x30], xmm9
movdqa xmm9, xmmword [0x1803cca40]
mov dword [rsp + 0x24], ecx
mov dword [rsp + 0x20], r8d
lea r13, [r9 + rax*4]
mov eax, dword [reloc.d2d1.dll_Ordinal_1]
mov dword [rsp + 0x28], eax
nop dword [rax + rax]
xor edi, edi
nop dword [rax]
nop word [rax + rax]
movzx eax, word [rbx]
movzx esi, word [rbx + 2]
add edi, eax
add rbx, 4
test esi, esi
je 0x180283c0b
mov ecx, r15d
mov eax, esi
sub ecx, edi
test ecx, ecx
jle 0x180283bc1
sub eax, r15d
add eax, edi
test ecx, ecx
mov r9d, r15d
mov ecx, r8d
cmovle r9d, edi
sub ecx, r9d
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x180283c03
mov r8d, ecx
mov eax, r9d
sub eax, edi
shl r8, 2
cdqe
lea rdx, [rbx + rax*4]
movsxd rax, r9d
lea rcx, [rax*4]
add rcx, r13
call fcn.18024e120
mov r8d, dword [rsp + 0x20]
lea rbx, [rbx + rsi*4]
add edi, esi
jmp 0x180283c13
test edi, edi
je 0x180283e60
cmp edi, r12d
jl 0x180283ba0
xor ebp, ebp
nop word [rax + rax]
movzx eax, word [rbx]
movzx r14d, word [rbx + 2]
add ebp, eax
add rbx, 4
test r14d, r14d
je 0x180283e3d
mov edx, r15d
mov eax, r14d
sub edx, ebp
test edx, edx
jle 0x180283c48
sub eax, r15d
add eax, ebp
test edx, edx
mov ecx, r15d
mov edx, r8d
cmovle ecx, ebp
sub edx, ecx
cmp eax, edx
cmovle edx, eax
test edx, edx
jle 0x180283e2f
movsxd rax, ecx
xor r9d, r9d
sub ecx, ebp
lea r8, [rax*4]
movsxd rax, ecx
add r8, r13
lea rsi, [rbx + rax*4]
cmp edx, 8
jb 0x180283daf
cmp dword [rsp + 0x28], 2
jl 0x180283daf
lea eax, [rdx - 1]
movsxd rcx, eax
lea rax, [rsi + rcx*4]
lea r10, [r8 + rcx*4]
cmp r8, rax
ja 0x180283cac
cmp r10, rsi
jae 0x180283daf
mov ecx, edx
and ecx, 0x80000007
jge 0x180283cbd
dec ecx
or ecx, 0xfffffff8
inc ecx
mov eax, edx
sub eax, ecx
lea rcx, [r8 + 0x10]
movsxd r10, eax
mov rax, rsi
sub rax, r8
nop
movdqu xmm0, xmmword [rcx - 0x10]
add r9, 8
movdqu xmm3, xmmword [rax + rcx - 0x10]
lea rcx, [rcx + 0x20]
movdqa xmm1, xmm7
movdqa xmm2, xmm6
andps xmm1, xmm0
andps xmm2, xmm0
movdqa xmm4, xmm3
movdqa xmm0, xmm6
psrld xmm4, 0x18
andps xmm0, xmm3
psubd xmm0, xmm2
movdqa xmm5, xmm7
andps xmm5, xmm3
psubd xmm5, xmm1
movdqu xmm3, xmmword [rax + rcx - 0x20]
pmulld xmm5, xmm4
psrld xmm5, 8
paddd xmm5, xmm1
movdqa xmm1, xmm7
andps xmm5, xmm9
pmulld xmm0, xmm4
psrld xmm0, 8
movdqa xmm4, xmm3
psrld xmm4, 0x18
paddd xmm0, xmm2
andps xmm0, xmm6
movdqa xmm2, xmm6
orps xmm5, xmm0
orps xmm5, xmm8
movdqu xmmword [rcx - 0x30], xmm5
movdqa xmm5, xmm7
andps xmm5, xmm3
movdqu xmm0, xmmword [rcx - 0x20]
andps xmm1, xmm0
andps xmm2, xmm0
psubd xmm5, xmm1
movdqa xmm0, xmm6
andps xmm0, xmm3
psubd xmm0, xmm2
pmulld xmm5, xmm4
psrld xmm5, 8
paddd xmm5, xmm1
andps xmm5, xmm9
pmulld xmm0, xmm4
psrld xmm0, 8
paddd xmm0, xmm2
andps xmm0, xmm6
orps xmm5, xmm0
orps xmm5, xmm8
movdqu xmmword [rcx - 0x20], xmm5
cmp r9, r10
jl 0x180283cd0
movsxd rdi, edx
cmp r9, rdi
jge 0x180283e2a
sub rsi, r8
lea r11, [r8 + r9*4]
sub rdi, r9
mov r10d, dword [r11 + rsi]
mov edx, r10d
mov r9d, dword [r11]
lea r11, [r11 + 4]
mov r8d, r10d
and edx, 0xff00ff
and r10d, 0xff00
shr r8d, 0x18
mov ecx, r9d
and r9d, 0xff00
sub r10d, r9d
and ecx, 0xff00ff
imul r10d, r8d
sub edx, ecx
imul edx, r8d
shr r10d, 8
add r10d, r9d
shr edx, 8
add edx, ecx
xor r10d, edx
and r10d, 0xff00
xor r10d, edx
or r10d, 0xff000000
mov dword [r11 - 4], r10d
sub rdi, 1
jne 0x180283dc1
mov r8d, dword [rsp + 0x20]
lea ecx, [r14*4]
add rbx, rcx
add ebp, r14d
cmp ebp, r12d
jl 0x180283c20
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x18]
add r13, rax
sub dword [rsp + 0x24], 1
jne 0x180283b90
movaps xmm8, xmmword [rsp + 0x40]
movaps xmm9, xmmword [rsp + 0x30]
movaps xmm6, xmmword [rsp + 0x60]
lea r11, [rsp + 0x70]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x48]
movaps xmm7, xmmword [rsp + 0x50]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
cmp dword [rax + 0x18], 0x7e0
je 0x1802841b7
cmp dword [rax + 0x14], 0x7e0
je 0x1802841b7
cmp dword [rax + 0x1c], 0x7e0
je 0x1802841b7
mov rax, qword [rsp + 0xc0]
movdqa xmm7, xmmword [0x1803cc9d0]
movdqa xmm6, xmmword [0x1803cca10]
movsxd r14, dword [rax]
mov r13d, dword [rax + 8]
mov ecx, dword [rax + 0xc]
add r13d, r14d
mov rax, r14
mov dword [rsp + 0x24], ecx
neg rax
lea r15, [r9 + rax*2]
mov eax, dword [reloc.d2d1.dll_Ordinal_1]
mov dword [rsp + 0x28], eax
nop dword [rax + rax]
xor edi, edi
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rbx]
movzx esi, byte [rbx + 1]
add edi, eax
add rbx, 2
test esi, esi
je 0x180283f6e
mov ecx, r14d
mov eax, esi
sub ecx, edi
test ecx, ecx
jle 0x180283f31
sub eax, r14d
add eax, edi
test ecx, ecx
mov r9d, r14d
mov ecx, r13d
cmovle r9d, edi
sub ecx, r9d
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x180283f66
mov eax, r9d
mov r8d, ecx
sub eax, edi
add r8, r8
cdqe
lea rdx, [rbx + rax*2]
movsxd rax, r9d
lea rcx, [r15 + rax*2]
call fcn.18024e120
lea rbx, [rbx + rsi*2]
add edi, esi
jmp 0x180283f76
test edi, edi
je 0x180283e6c
cmp edi, r12d
jl 0x180283f10
mov rax, rbx
and eax, 2
add rbx, rax
xor r10d, r10d
nop word [rax + rax]
movzx eax, word [rbx]
movzx ebp, word [rbx + 2]
add r10d, eax
add rbx, 4
test ebp, ebp
je 0x18028418f
mov edx, r14d
mov eax, ebp
sub edx, r10d
test edx, edx
jle 0x180283fb8
sub eax, r14d
add eax, r10d
test edx, edx
mov ecx, r14d
mov edx, r13d
cmovle ecx, r10d
sub edx, ecx
cmp eax, edx
cmovle edx, eax
test edx, edx
jle 0x180284182
movsxd rax, ecx
xor r9d, r9d
sub ecx, r10d
lea rdi, [r15 + rax*2]
movsxd rax, ecx
lea r11, [rbx + rax*4]
cmp edx, 8
jb 0x180284124
cmp dword [rsp + 0x28], 2
jl 0x180284124
lea eax, [rdx - 1]
movsxd rcx, eax
lea rax, [r11 + rcx*4]
lea r8, [rdi + rcx*2]
cmp rdi, rax
ja 0x180284017
cmp r8, r11
jae 0x180284124
mov ecx, edx
and ecx, 0x80000007
jge 0x180284028
dec ecx
or ecx, 0xfffffff8
inc ecx
mov eax, edx
sub eax, ecx
movsxd rcx, eax
nop
pmovzxwd xmm1, qword [rdi + r9*2]
movdqu xmm2, xmmword [r11 + r9*4]
movdqa xmm3, xmm1
movdqa xmm4, xmm6
andps xmm4, xmm2
pslld xmm3, 0x10
orps xmm3, xmm1
movdqa xmm0, xmm2
psrld xmm0, 5
andps xmm3, xmm6
psubd xmm4, xmm3
andps xmm0, xmm7
pmulld xmm4, xmm0
psrld xmm4, 5
paddd xmm4, xmm3
andps xmm4, xmm6
pshufhw xmm2, xmm4, 0xd8
movdqa xmm0, xmm4
movdqu xmm4, xmmword [r11 + r9*4 + 0x10]
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm1, xmm0, 0xd8
pshuflw xmm0, xmm2, 0xd8
pshufd xmm3, xmm1, 0xd8
pshufd xmm1, xmm0, 0xd8
movdqa xmm0, xmm4
orps xmm3, xmm1
psrld xmm0, 5
movq qword [rdi + r9*2], xmm3
andps xmm4, xmm6
pmovzxwd xmm1, qword [rdi + r9*2 + 8]
andps xmm0, xmm7
movdqa xmm2, xmm1
pslld xmm2, 0x10
orps xmm2, xmm1
andps xmm2, xmm6
psubd xmm4, xmm2
pmulld xmm4, xmm0
psrld xmm4, 5
paddd xmm4, xmm2
andps xmm4, xmm6
movdqa xmm0, xmm4
pshufhw xmm2, xmm4, 0xd8
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm1, xmm0, 0xd8
pshufd xmm3, xmm1, 0xd8
pshuflw xmm0, xmm2, 0xd8
pshufd xmm1, xmm0, 0xd8
orps xmm3, xmm1
movq qword [rdi + r9*2 + 8], xmm3
add r9, 8
cmp r9, rcx
jl 0x180284030
movsxd rsi, edx
cmp r9, rsi
jge 0x180284182
nop dword [rax]
movzx eax, word [rdi + r9*2]
mov ecx, dword [r11 + r9*4]
mov edx, eax
shl edx, 0x10
mov r8d, ecx
and r8d, 0x3e07c1f
shr ecx, 5
or edx, eax
and ecx, 0x1f
and edx, 0x3e07c1f
sub r8d, edx
imul r8d, ecx
shr r8d, 5
add r8d, edx
and r8d, 0x3e07c1f
mov eax, r8d
shr eax, 0x10
or ax, r8w
mov word [rdi + r9*2], ax
inc r9
cmp r9, rsi
jl 0x180284130
lea ecx, [rbp*4]
add rbx, rcx
add r10d, ebp
cmp r10d, r12d
jl 0x180283f90
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x18]
add r15, rax
sub dword [rsp + 0x24], 1
jne 0x180283f00
jmp 0x180283e6c
mov rax, qword [rsp + 0xc0]
movdqa xmm7, xmmword [0x1803cc9d0]
movdqa xmm6, xmmword [0x1803cca20]
movsxd r14, dword [rax]
mov r13d, dword [rax + 8]
mov ecx, dword [rax + 0xc]
add r13d, r14d
mov rax, r14
mov dword [rsp + 0x24], ecx
neg rax
lea r15, [r9 + rax*2]
nop word [rax + rax]
xor edi, edi
nop dword [rax]
nop word [rax + rax]
movzx eax, byte [rbx]
movzx esi, byte [rbx + 1]
add edi, eax
add rbx, 2
test esi, esi
je 0x18028425e
mov ecx, r14d
mov eax, esi
sub ecx, edi
test ecx, ecx
jle 0x180284221
sub eax, r14d
add eax, edi
test ecx, ecx
mov r9d, r14d
mov ecx, r13d
cmovle r9d, edi
sub ecx, r9d
cmp eax, ecx
cmovle ecx, eax
test ecx, ecx
jle 0x180284256
mov eax, r9d
mov r8d, ecx
sub eax, edi
add r8, r8
cdqe
lea rdx, [rbx + rax*2]
movsxd rax, r9d
lea rcx, [r15 + rax*2]
call fcn.18024e120
lea rbx, [rbx + rsi*2]
add edi, esi
jmp 0x180284266
test edi, edi
je 0x180283e6c
cmp edi, r12d
jl 0x180284200
mov rax, rbx
and eax, 2
add rbx, rax
xor r10d, r10d
nop word [rax + rax]
movzx eax, word [rbx]
movzx ebp, word [rbx + 2]
add r10d, eax
add rbx, 4
test ebp, ebp
je 0x180284480
mov edx, r14d
mov eax, ebp
sub edx, r10d
test edx, edx
jle 0x1802842a8
sub eax, r14d
add eax, r10d
test edx, edx
mov ecx, r14d
mov edx, r13d
cmovle ecx, r10d
sub edx, ecx
cmp eax, edx
cmovle edx, eax
test edx, edx
jle 0x180284473
movsxd rax, ecx
xor r9d, r9d
sub ecx, r10d
lea rdi, [r15 + rax*2]
movsxd rax, ecx
lea r11, [rbx + rax*4]
cmp edx, 8
jb 0x180284419
cmp dword [reloc.d2d1.dll_Ordinal_1], 2
jl 0x180284419
lea eax, [rdx - 1]
movsxd rcx, eax
lea rax, [r11 + rcx*4]
lea r8, [rdi + rcx*2]
cmp rdi, rax
ja 0x180284309
cmp r8, r11
jae 0x180284419
mov ecx, edx
and ecx, 0x80000007
jge 0x18028431a
dec ecx
or ecx, 0xfffffff8
inc ecx
mov eax, edx
sub eax, ecx
movsxd rcx, eax
pmovzxwd xmm1, qword [rdi + r9*2]
movdqu xmm2, xmmword [r11 + r9*4]
movdqa xmm3, xmm1
movdqa xmm4, xmm6
andps xmm4, xmm2
pslld xmm3, 0x10
orps xmm3, xmm1
movdqa xmm0, xmm2
psrld xmm0, 5
andps xmm3, xmm6
psubd xmm4, xmm3
andps xmm0, xmm7
pmulld xmm4, xmm0
psrld xmm4, 5
paddd xmm4, xmm3
andps xmm4, xmm6
pshufhw xmm2, xmm4, 0xd8
movdqa xmm0, xmm4
psrld xmm0, 0x10
movdqa xmm4, xmm6
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm1, xmm0, 0xd8
pshufd xmm3, xmm1, 0xd8
pshuflw xmm0, xmm2, 0xd8
movdqu xmm2, xmmword [r11 + r9*4 + 0x10]
pshufd xmm1, xmm0, 0xd8
orps xmm3, xmm1
andps xmm4, xmm2
movq qword [rdi + r9*2], xmm3
movdqa xmm0, xmm2
pmovzxwd xmm1, qword [rdi + r9*2 + 8]
psrld xmm0, 5
movdqa xmm3, xmm1
andps xmm0, xmm7
pslld xmm3, 0x10
orps xmm3, xmm1
andps xmm3, xmm6
psubd xmm4, xmm3
pmulld xmm4, xmm0
psrld xmm4, 5
paddd xmm4, xmm3
andps xmm4, xmm6
movdqa xmm0, xmm4
pshufhw xmm2, xmm4, 0xd8
psrld xmm0, 0x10
pshufhw xmm0, xmm0, 0xd8
pshuflw xmm1, xmm0, 0xd8
pshufd xmm3, xmm1, 0xd8
pshuflw xmm0, xmm2, 0xd8
pshufd xmm1, xmm0, 0xd8
orps xmm3, xmm1
movq qword [rdi + r9*2 + 8], xmm3
add r9, 8
cmp r9, rcx
jl 0x180284321
movsxd rsi, edx
cmp r9, rsi
jge 0x180284473
movzx eax, word [rdi + r9*2]
mov ecx, dword [r11 + r9*4]
mov edx, eax
shl edx, 0x10
mov r8d, ecx
and r8d, 0x7e0f81f
shr ecx, 5
or edx, eax
and ecx, 0x1f
and edx, 0x7e0f81f
sub r8d, edx
imul r8d, ecx
shr r8d, 5
add r8d, edx
and r8d, 0x7e0f81f
mov eax, r8d
shr eax, 0x10
or ax, r8w
mov word [rdi + r9*2], ax
inc r9
cmp r9, rsi
jl 0x180284421
lea ecx, [rbp*4]
add rbx, rcx
add r10d, ebp
cmp r10d, r12d
jl 0x180284280
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x18]
add r15, rax
sub dword [rsp + 0x24], 1
jne 0x1802841f0
jmp 0x180283e6c