Function at 0x421b20
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x7c
mov eax, dword [0x517500]
xor eax, esp
mov dword [esp + 0x78], eax
push ebx
mov ebx, dword [esp + 0x90]
xor ecx, ecx
push ebp
push esi
mov esi, dword [esp + 0x9c]
xor ebp, ebp
push edi
mov edi, dword [esp + 0x98]
shld ebp, edi, 3
movups xmm1, xmmword [esi + 0x30]
shl edi, 3
shld ecx, ebx, 3
movd eax, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
shl ebx, 3
xor edi, eax
mov dword [esp + 0x20], 7
movd eax, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
psrldq xmm1, 0xc
xor ebp, eax
movd eax, xmm0
xor ebx, eax
movd eax, xmm1
xor ecx, eax
mov dword [esp + 0x24], ecx
movups xmm0, xmmword [esi + 0x50]
sub esp, 0x10
mov eax, esp
sub esp, 0x10
movups xmmword [esp + 0x30], xmm0
movups xmm0, xmmword [esi + 0x50]
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [esi + 0x40]
movups xmmword [eax], xmm0
lea eax, [esp + 0x48]
push eax
call fcn.0042b3a0
add esp, 0x14
movups xmm0, xmmword [eax]
mov eax, esp
sub esp, 0x10
movups xmmword [esi + 0x50], xmm0
movups xmm0, xmmword [esi + 0x40]
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [esi + 0x30]
movups xmmword [eax], xmm0
lea eax, [esp + 0x58]
push eax
call fcn.0042b3a0
add esp, 0x14
movups xmm0, xmmword [eax]
mov eax, esp
sub esp, 0x10
movups xmmword [esi + 0x40], xmm0
movups xmm0, xmmword [esi + 0x30]
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [esi + 0x20]
movups xmmword [eax], xmm0
lea eax, [esp + 0x68]
push eax
call fcn.0042b3a0
add esp, 0x14
movups xmm0, xmmword [eax]
mov eax, esp
sub esp, 0x10
movups xmmword [esi + 0x30], xmm0
movups xmm0, xmmword [esi + 0x20]
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [esi + 0x10]
movups xmmword [eax], xmm0
lea eax, [esp + 0x78]
push eax
call fcn.0042b3a0
add esp, 0x14
movups xmm0, xmmword [eax]
mov eax, esp
sub esp, 0x10
movups xmmword [esi + 0x20], xmm0
movups xmm0, xmmword [esi + 0x10]
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [esi]
movups xmmword [eax], xmm0
lea eax, [esp + 0x88]
push eax
call fcn.0042b3a0
add esp, 0x14
movups xmm0, xmmword [eax]
mov eax, esp
sub esp, 0x10
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [esi]
movups xmmword [eax], xmm0
mov eax, esp
movups xmm0, xmmword [esp + 0x30]
movups xmmword [eax], xmm0
lea eax, [esp + 0x98]
push eax
call fcn.0042b3a0
add esp, 0x24
mov ecx, edi
movups xmm1, xmmword [eax]
movd eax, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
mov dword [esi], ecx
movaps xmm0, xmm1
mov ecx, ebp
psrldq xmm0, 8
xor ecx, eax
psrldq xmm1, 0xc
movd eax, xmm0
mov dword [esi + 4], ecx
xor eax, ebx
mov dword [esi + 8], eax
movd eax, xmm1
xor eax, dword [esp + 0x24]
sub dword [esp + 0x20], 1
mov dword [esi + 0xc], eax
jne 0x421b96
mov eax, dword [esp + 0x94]
cmp eax, 0x10
jne 0x421e4e
movups xmm1, xmmword [esi]
movups xmm2, xmmword [esi + 0x10]
movups xmm3, xmmword [esi + 0x20]
movups xmm4, xmmword [esi + 0x30]
movups xmm5, xmmword [esi + 0x40]
movups xmm6, xmmword [esi + 0x50]
movd eax, xmm1
movaps xmm0, xmm1
movd ecx, xmm2
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm3
xor ecx, eax
movd eax, xmm4
xor ecx, eax
movd eax, xmm5
xor ecx, eax
movd eax, xmm6
xor ecx, eax
mov dword [esp + 0x10], ecx
movd ecx, xmm0
movaps xmm0, xmm2
psrldq xmm0, 4
movd eax, xmm0
movaps xmm0, xmm3
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm4
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm5
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm6
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm1
psrldq xmm1, 0xc
psrldq xmm0, 8
xor ecx, eax
mov dword [esp + 0x14], ecx
movd ecx, xmm0
movaps xmm0, xmm2
psrldq xmm0, 8
movd eax, xmm0
movaps xmm0, xmm3
psrldq xmm0, 8
psrldq xmm2, 0xc
xor ecx, eax
psrldq xmm3, 0xc
movd eax, xmm0
movaps xmm0, xmm4
psrldq xmm0, 8
psrldq xmm4, 0xc
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm5
psrldq xmm5, 0xc
psrldq xmm0, 8
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm6
psrldq xmm6, 0xc
psrldq xmm0, 8
xor ecx, eax
movd eax, xmm0
xor ecx, eax
movd eax, xmm2
mov dword [esp + 0x18], ecx
movd ecx, xmm1
xor ecx, eax
movd eax, xmm3
xor ecx, eax
movd eax, xmm4
xor ecx, eax
movd eax, xmm5
xor ecx, eax
movd eax, xmm6
sub esp, 0x10
xor ecx, eax
mov eax, esp
push dword [esp + 0xa0]
mov dword [esp + 0x30], ecx
movups xmm0, xmmword [esp + 0x24]
movups xmmword [eax], xmm0
call fcn.0041fc30
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.0042bc89
add esp, 0x7c
ret
cmp eax, 0x20
jne 0x421fd2
movups xmm3, xmmword [esi + 0x20]
mov edx, dword [esp + 0x90]
sub esp, 0x10
movups xmm1, xmmword [esi]
movups xmm2, xmmword [esi + 0x10]
movd eax, xmm3
movaps xmm0, xmm1
movd ecx, xmm1
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm2
xor ecx, eax
mov dword [esp + 0x20], ecx
movd ecx, xmm0
movaps xmm0, xmm2
psrldq xmm0, 4
movd eax, xmm0
movaps xmm0, xmm3
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm1
psrldq xmm1, 0xc
psrldq xmm0, 8
xor ecx, eax
mov dword [esp + 0x24], ecx
movd ecx, xmm0
movaps xmm0, xmm2
psrldq xmm0, 8
movd eax, xmm0
movaps xmm0, xmm3
psrldq xmm0, 8
psrldq xmm2, 0xc
xor ecx, eax
psrldq xmm3, 0xc
movd eax, xmm0
xor ecx, eax
movd eax, xmm2
mov dword [esp + 0x28], ecx
movd ecx, xmm1
xor ecx, eax
movd eax, xmm3
xor ecx, eax
mov eax, esp
mov dword [esp + 0x2c], ecx
movups xmm0, xmmword [esp + 0x20]
push edx
movups xmmword [eax], xmm0
call fcn.0041fc30
movups xmm2, xmmword [esi + 0x40]
movups xmm1, xmmword [esi + 0x30]
movups xmm3, xmmword [esi + 0x50]
movd eax, xmm2
movaps xmm0, xmm1
movd ecx, xmm1
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm3
xor ecx, eax
mov dword [esp + 0x24], ecx
movd ecx, xmm0
movaps xmm0, xmm2
psrldq xmm0, 4
movd eax, xmm0
movaps xmm0, xmm3
psrldq xmm0, 4
xor ecx, eax
movd eax, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
xor ecx, eax
mov dword [esp + 0x28], ecx
movd ecx, xmm0
movaps xmm0, xmm2
psrldq xmm0, 8
movd eax, xmm0
movaps xmm0, xmm3
psrldq xmm0, 8
xor ecx, eax
movd eax, xmm0
xor ecx, eax
mov dword [esp + 0x2c], ecx
add esp, 4
psrldq xmm1, 0xc
psrldq xmm2, 0xc
movd eax, xmm2
movd ecx, xmm1
psrldq xmm3, 0xc
xor ecx, eax
movd eax, xmm3
xor ecx, eax
mov eax, esp
mov dword [esp + 0x2c], ecx
movups xmm0, xmmword [esp + 0x20]
movups xmmword [eax], xmm0
lea eax, [edx + 0x10]
push eax
call fcn.0041fc30
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x78]
xor ecx, esp
call fcn.0042bc89
add esp, 0x7c
ret
push eax
push 0
push dword [esp + 0x98]
call fcn.0042d500
mov ecx, dword [esp + 0x94]
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0042bc89
add esp, 0x7c
ret