Function at 0x18028ee80
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 0x18028f234
cmp cl, 4
jne 0x18028f20c
mov rax, qword [rsp + 0xc0]
movdqa xmm6, xmmword [0x1803d9a00]
movdqa xmm7, xmmword [0x1804268c0]
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 [0x1803d9a50]
mov rax, r15
neg rax
movaps xmmword [rsp + 0x30], xmm9
movdqa xmm9, xmmword [0x1803d9a60]
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 0x18028efab
mov ecx, r15d
mov eax, esi
sub ecx, edi
test ecx, ecx
jle 0x18028ef61
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 0x18028efa3
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.1802594c0
mov r8d, dword [rsp + 0x20]
lea rbx, [rbx + rsi*4]
add edi, esi
jmp 0x18028efb3
test edi, edi
je 0x18028f200
cmp edi, r12d
jl 0x18028ef40
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 0x18028f1dd
mov edx, r15d
mov eax, r14d
sub edx, ebp
test edx, edx
jle 0x18028efe8
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 0x18028f1cf
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 0x18028f14f
cmp dword [rsp + 0x28], 2
jl 0x18028f14f
lea eax, [rdx - 1]
movsxd rcx, eax
lea rax, [rsi + rcx*4]
lea r10, [r8 + rcx*4]
cmp r8, rax
ja 0x18028f04c
cmp r10, rsi
jae 0x18028f14f
mov ecx, edx
and ecx, 0x80000007
jge 0x18028f05d
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 0x18028f070
movsxd rdi, edx
cmp r9, rdi
jge 0x18028f1ca
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 0x18028f161
mov r8d, dword [rsp + 0x20]
lea ecx, [r14*4]
add rbx, rcx
add ebp, r14d
cmp ebp, r12d
jl 0x18028efc0
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x18]
add r13, rax
sub dword [rsp + 0x24], 1
jne 0x18028ef30
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 0x18028f557
cmp dword [rax + 0x14], 0x7e0
je 0x18028f557
cmp dword [rax + 0x1c], 0x7e0
je 0x18028f557
mov rax, qword [rsp + 0xc0]
movdqa xmm7, xmmword [0x1803d99f0]
movdqa xmm6, xmmword [0x1803d9a30]
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 0x18028f30e
mov ecx, r14d
mov eax, esi
sub ecx, edi
test ecx, ecx
jle 0x18028f2d1
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 0x18028f306
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.1802594c0
lea rbx, [rbx + rsi*2]
add edi, esi
jmp 0x18028f316
test edi, edi
je 0x18028f20c
cmp edi, r12d
jl 0x18028f2b0
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 0x18028f52f
mov edx, r14d
mov eax, ebp
sub edx, r10d
test edx, edx
jle 0x18028f358
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 0x18028f522
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 0x18028f4c4
cmp dword [rsp + 0x28], 2
jl 0x18028f4c4
lea eax, [rdx - 1]
movsxd rcx, eax
lea rax, [r11 + rcx*4]
lea r8, [rdi + rcx*2]
cmp rdi, rax
ja 0x18028f3b7
cmp r8, r11
jae 0x18028f4c4
mov ecx, edx
and ecx, 0x80000007
jge 0x18028f3c8
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 0x18028f3d0
movsxd rsi, edx
cmp r9, rsi
jge 0x18028f522
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 0x18028f4d0
lea ecx, [rbp*4]
add rbx, rcx
add r10d, ebp
cmp r10d, r12d
jl 0x18028f330
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x18]
add r15, rax
sub dword [rsp + 0x24], 1
jne 0x18028f2a0
jmp 0x18028f20c
mov rax, qword [rsp + 0xc0]
movdqa xmm7, xmmword [0x1803d99f0]
movdqa xmm6, xmmword [0x1803d9a40]
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 0x18028f5fe
mov ecx, r14d
mov eax, esi
sub ecx, edi
test ecx, ecx
jle 0x18028f5c1
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 0x18028f5f6
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.1802594c0
lea rbx, [rbx + rsi*2]
add edi, esi
jmp 0x18028f606
test edi, edi
je 0x18028f20c
cmp edi, r12d
jl 0x18028f5a0
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 0x18028f820
mov edx, r14d
mov eax, ebp
sub edx, r10d
test edx, edx
jle 0x18028f648
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 0x18028f813
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 0x18028f7b9
cmp dword [reloc.d2d1.dll_Ordinal_1], 2
jl 0x18028f7b9
lea eax, [rdx - 1]
movsxd rcx, eax
lea rax, [r11 + rcx*4]
lea r8, [rdi + rcx*2]
cmp rdi, rax
ja 0x18028f6a9
cmp r8, r11
jae 0x18028f7b9
mov ecx, edx
and ecx, 0x80000007
jge 0x18028f6ba
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 0x18028f6c1
movsxd rsi, edx
cmp r9, rsi
jge 0x18028f813
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 0x18028f7c1
lea ecx, [rbp*4]
add rbx, rcx
add r10d, ebp
cmp r10d, r12d
jl 0x18028f620
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x18]
add r15, rax
sub dword [rsp + 0x24], 1
jne 0x18028f590
jmp 0x18028f20c