Function at 0x1020cd20
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd8
call fcn.100bab40
mov eax, dword [0x102db080]
xor eax, esp
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 0xe0]
lea edx, [esp + 0x34]
push ebx
push ebp
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xec]
mov ebp, dword [esp + 0xf0]
push esi
mov esi, dword [esp + 0xe8]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x2c], eax
lea eax, [esi + 0x178]
mov dword [esp + 0x38], esi
mov dword [esp + 0x14], eax
lea ecx, [esi + 0x100]
lea eax, [esp + 0x40]
mov dword [esp + 0x30], ebp
neg eax
mov dword [esp + 0x18], ecx
and eax, 0xf
add edx, eax
push edi
mov edi, dword [esi + 0x2b0]
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edx
lea eax, [edx + 0x30]
mov dword [esp + 0x20], eax
lea eax, [esi + 0x120]
mov dword [esp + 0x10], eax
lea ebx, [edx + 0x40]
mov dword [esp + 0x24], ebx
mov dword [eax], 0
push eax
push ecx
cmp edi, 0x40
ja 0x1020d181
push 0x80
push 0x102aa598
push edx
mov dword [esp + 0x4c], 0x80
call fcn.1001ae80
push dword [esp + 0x40]
lea eax, [esi + 0x178]
push eax
call fcn.101e34d0
mov ecx, dword [esp + 0x3c]
add esp, 0x1c
test byte [esi + 0x50], 2
movups xmm0, xmmword [esi + 0x284]
mov dword [esi + 0x170], 0
mov dword [esi + 0x298], 0xd
movups xmmword [ecx], xmm0
mov dword [esi + 0x29c], 0
mov dword [esi + 0x2a0], edi
mov dword [esi + 0x2a4], 0
je 0x1020d032
xor esi, esi
test edi, edi
je 0x1020d15e
mov eax, dword [esp + 0x14]
cmp edi, 0x10
jb 0x1020cff9
lea edx, [edi - 1]
lea ecx, [eax - 1]
add edx, ebx
add ecx, edi
cmp eax, edx
ja 0x1020ce6b
cmp ecx, ebx
jae 0x1020cff9
lea edx, [ebp - 1]
add edx, edi
cmp eax, edx
ja 0x1020ce7c
cmp ecx, ebp
jae 0x1020cff9
cmp ebx, edx
ja 0x1020ce8d
lea ecx, [edi - 1]
add ecx, ebx
cmp ecx, ebp
jae 0x1020cff9
mov ecx, edi
mov edx, eax
and ecx, 0xfffffff0
mov edi, ebp
mov dword [esp + 0x10], ecx
sub edx, ebx
lea ecx, [eax + 8]
sub edi, ebx
mov dword [esp + 0x18], ecx
lea ecx, [ebx + 4]
mov ebx, ebp
sub ebx, eax
mov eax, edx
nop
movd xmm1, dword [ecx - 4]
lea ecx, [ecx + 0x10]
movd xmm2, dword [esi + ebp]
xorps xmm0, xmm0
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
mov edx, dword [esp + 0x18]
pxor xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
movd xmm2, dword [edi + ecx - 0x10]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x10274ec0]
packuswb xmm0, xmm0
movd dword [ecx - 0x14], xmm0
movd xmm1, dword [ecx - 0x10]
movd dword [edx - 8], xmm0
xorps xmm0, xmm0
punpcklbw xmm2, xmm0
punpcklwd xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm1, xmm0
pxor xmm2, xmm1
add dword [esp + 0x18], 0x10
pshuflw xmm0, xmm2, 0xd8
movd xmm2, dword [ebx + edx]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x10274ec0]
packuswb xmm0, xmm0
movd dword [ecx - 0x10], xmm0
movd xmm1, dword [ecx - 0xc]
movd dword [eax + ecx - 0x10], xmm0
xorps xmm0, xmm0
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
pxor xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
movd xmm2, dword [esi + ebp + 0xc]
add esi, 0x10
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x10274ec0]
packuswb xmm0, xmm0
movd dword [ecx - 0xc], xmm0
movd xmm1, dword [ecx - 8]
movd dword [edx], xmm0
xorps xmm0, xmm0
punpcklbw xmm2, xmm0
punpcklbw xmm1, xmm0
punpcklwd xmm2, xmm0
punpcklwd xmm1, xmm0
pxor xmm2, xmm1
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm0, xmm0, 0xd8
pand xmm0, xmmword [0x10274ec0]
packuswb xmm0, xmm0
movd dword [ecx - 8], xmm0
movd dword [edx + 4], xmm0
mov edx, esi
cmp esi, dword [esp + 0x10]
jb 0x1020ceb0
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
cmp edx, edi
jae 0x1020d15e
mov edx, ebp
lea ecx, [esi + ebx]
sub edx, ebx
sub eax, ebx
mov dword [esp + 0x10], edx
mov ebp, eax
mov edx, edi
mov dword [esp + 0x1c], eax
sub edx, esi
mov esi, edi
mov edi, dword [esp + 0x10]
movzx eax, byte [ecx + edi]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
movzx eax, byte [ecx - 1]
mov byte [ecx + ebp - 1], al
sub edx, 1
jne 0x1020d016
jmp 0x1020d15a
xor esi, esi
test edi, edi
je 0x1020d15e
mov eax, dword [esp + 0x14]
cmp edi, 0x40
jb 0x1020d11b
lea edx, [eax - 1]
lea ecx, [edi - 1]
add edx, edi
add ecx, ebx
cmp ebx, edx
ja 0x1020d05f
cmp ecx, eax
jae 0x1020d11b
lea edx, [ebp - 1]
add edx, edi
cmp ebx, edx
ja 0x1020d070
cmp ecx, ebp
jae 0x1020d11b
cmp eax, edx
ja 0x1020d081
lea ecx, [eax - 1]
add ecx, edi
cmp ecx, ebp
jae 0x1020d11b
mov ecx, edi
lea edx, [eax + 0x20]
and ecx, 0xffffffc0
mov edi, eax
mov dword [esp + 0x10], ecx
sub edi, ebx
lea ecx, [ebx + 0x10]
mov ebx, ebp
sub ebx, eax
nop dword [eax + eax]
movups xmm0, xmmword [ecx - 0x10]
lea eax, [edi + ecx]
movups xmm1, xmmword [esi + ebp]
lea edx, [edx + 0x40]
movups xmm2, xmmword [ebx + eax]
lea ecx, [ecx + 0x40]
pxor xmm0, xmm1
movups xmmword [ecx - 0x50], xmm1
movups xmmword [edx - 0x60], xmm0
movups xmm0, xmmword [ecx - 0x40]
movups xmmword [ecx - 0x40], xmm2
movaps xmm1, xmm2
movups xmm2, xmmword [ebx + edx - 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [ecx - 0x30]
movups xmmword [eax], xmm1
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [esi + ebp + 0x30]
add esi, 0x40
mov eax, esi
movups xmmword [ecx - 0x30], xmm2
movups xmm0, xmmword [ecx - 0x20]
movups xmmword [ecx - 0x20], xmm1
pxor xmm0, xmm1
movups xmmword [edx - 0x30], xmm0
cmp esi, dword [esp + 0x10]
jb 0x1020d0a0
mov edi, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
cmp eax, edi
jae 0x1020d15e
mov eax, dword [esp + 0x14]
mov ecx, ebp
mov dword [esp + 0x28], edi
sub ecx, eax
add ebx, esi
sub eax, dword [esp + 0x24]
mov ebp, edi
sub ebp, esi
mov dword [esp + 0x10], ecx
mov dword [esp + 0x1c], eax
mov esi, ecx
lea ecx, [eax + ebx]
mov al, byte [ebx]
mov dl, byte [esi + ecx]
lea ebx, [ebx + 1]
xor al, dl
mov byte [ebx - 1], dl
mov byte [ecx], al
mov eax, dword [esp + 0x1c]
sub ebp, 1
jne 0x1020d137
mov esi, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x34]
mov edi, esi
lea eax, [esi + ebx]
neg edi
and edi, 0xf
push edi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
lea eax, [edi + esi]
add esp, 0xc
add ebx, eax
lea ecx, [eax + 0x20]
jmp 0x1020d269
push 0x40
push 0x102aa598
push edx
mov dword [esp + 0x4c], 0x40
call fcn.1001ae80
push dword [esp + 0x40]
lea eax, [esi + 0x178]
push eax
call fcn.101e34d0
push 0x10
lea eax, [esi + 0x284]
mov dword [esi + 0x120], 1
push eax
lea eax, [esi + 0x178]
mov dword [esi + 0x170], 0
push eax
call fcn.101e35a0
add esp, 0x28
mov dword [esp + 0x20], ebx
test byte [esi + 0x50], 2
mov dword [esi + 0x298], 0xd
mov dword [esi + 0x29c], 0
mov dword [esi + 0x2a0], edi
mov dword [esi + 0x2a4], 0
je 0x1020d227
lea eax, [esi + 0x120]
push eax
lea eax, [esi + 0x100]
mov esi, dword [esp + 0x18]
push eax
push edi
push ebp
push esi
call fcn.1001ae80
push edi
push esi
push dword [esp + 0x34]
call fcn.101e35a0
jmp 0x1020d246
push edi
push ebp
push dword [esp + 0x20]
call fcn.101e35a0
push dword [esp + 0x1c]
mov eax, dword [esp + 0x2c]
push eax
push edi
push ebp
push dword [esp + 0x30]
call fcn.1001ae80
add esp, 0x20
mov eax, edi
neg eax
and eax, 0xf
push eax
push 0x102aa598
push dword [esp + 0x20]
call fcn.101e35a0
add esp, 0xc
mov esi, edi
mov ecx, 0x10
mov edi, dword [esp + 0x14]
lea eax, [esi + ebp]
add edi, esi
mov dword [esp + 0x10], eax
mov esi, dword [esp + 0x3c]
push ecx
push dword [esp + 0x24]
movups xmm0, xmmword [esi + 0x298]
movups xmmword [ebx], xmm0
lea ebx, [esi + 0x178]
push ebx
call fcn.101e35a0
push dword [esp + 0x44]
push dword [esp + 0x3c]
call fcn.10001320
test byte [esi + 0x50], 2
lea eax, [esi + 0x274]
cmove eax, dword [esp + 0x34]
push eax
push ebx
call fcn.101e3450
add esp, 0x1c
mov dword [esi + 0x2b0], 0xffffffff
test byte [esi + 0x50], 2
je 0x1020d2db
movups xmm0, xmmword [esi + 0x274]
mov eax, dword [esp + 0x30]
movups xmmword [edi], xmm0
jmp 0x1020d319
push 0x10
push dword [esp + 0x14]
push dword [esp + 0x28]
call fcn.10001390
add esp, 0xc
test eax, eax
je 0x1020d312
mov ecx, dword [esp + 0x30]
cmp ecx, 0x10
jbe 0x1020d30e
lea eax, [ecx - 0x10]
sub edi, ecx
push eax
push 0
add edi, 0x10
push edi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
xor eax, eax
jmp 0x1020d324
mov eax, dword [esp + 0x30]
sub eax, 0x10
mov ecx, dword [esp + 0x40]
mov dword [ecx], eax
mov eax, 1
mov ecx, dword [esp + 0xe4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.100b9f43
add esp, 0xd8
ret