Function at 0x403920
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49c1e6
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0xa8
push esi
push edi
mov eax, dword [0x4b8040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x54], esi
sub esp, 0x18
mov byte [esi], 0
mov edx, esp
mov byte [ebp - 0x19], 0
xorps xmm0, xmm0
mov dword [ebp - 0x58], esp
lea ecx, [ebp - 0x19]
lea edi, [ecx + 1]
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403990
sub ecx, edi
lea eax, [ebp - 0x19]
push ecx
push eax
mov ecx, edx
call fcn.0040e0d0
mov dword [ebp - 4], 0
xor edx, edx
cmp dword [0x5067b8], 2
movups xmm0, xmmword [str.CLII]
mov eax, dword [0x4ae918]
movaps xmm4, xmmword [0x4b0d40]
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x38], eax
movq xmm0, qword [0x4ae910]
mov al, byte [0x4ae91c]
movq qword [ebp - 0x40], xmm0
mov byte [ebp - 0x34], al
mov dword [ebp - 0x14], edx
jl 0x403b00
movaps xmm0, xmmword [0x4b0e40]
movaps xmm5, xmmword [0x4b0c70]
movaps xmm3, xmmword [0x4b0f40]
movaps xmm6, xmmword [0x4b0ca0]
movaps xmmword [ebp - 0x30], xmm0
mov ecx, dword [ebp - 0x30]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm5
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
movd xmm0, ecx
andps xmm2, xmm4
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmm0
movd xmm0, dword [ebp + edx - 0x50]
xorps xmm2, xmm0
movd xmm0, eax
movd dword [ebp + edx - 0x50], xmm2
pshufd xmm2, xmm0, 0
paddd xmm2, xmm5
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
movd xmm0, ecx
andps xmm2, xmm4
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmm0
movd xmm0, dword [ebp + edx - 0x4c]
xorps xmm2, xmm0
movd dword [ebp + edx - 0x4c], xmm2
add edx, 8
cmp edx, 0x18
jl 0x403a10
mov dword [ebp - 0x14], edx
cmp edx, 0x1d
jge 0x403b31
nop dword [eax]
mov eax, 0x8fb823ef
imul edx
add edx, dword [ebp - 0x14]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x14]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0x50], cl
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x1d
jl 0x403b00
sub esp, 0x18
lea ecx, [ebp - 0x50]
mov edx, esp
mov dword [ebp - 0x5c], esp
xorps xmm0, xmm0
lea edi, [ecx + 1]
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403b53
sub ecx, edi
lea eax, [ebp - 0x50]
push ecx
push eax
mov ecx, edx
call fcn.0040e0d0
mov byte [ebp - 4], 1
cmp byte [0x4ae92f], 0
mov eax, dword [0x4ae92c]
mov edi, dword [0x5067b8]
mov dword [ebp - 0x14], eax
je 0x403c34
xor edx, edx
mov dword [ebp - 0x18], edx
cmp edi, 2
jl 0x403c03
movaps xmm3, xmmword [0x4b0c70]
movaps xmm2, xmm3
movaps xmm0, xmm3
punpckhdq xmm0, xmm3
pmuldq xmm0, xmmword [0x4b0f40]
punpckldq xmm2, xmm3
pmuldq xmm2, xmmword [0x4b0f40]
shufps xmm2, xmm0, 0xdd
paddd xmm2, xmm3
psrad xmm2, 5
movaps xmm0, xmm2
psrld xmm0, 0x1f
paddd xmm0, xmm2
pmulld xmm0, xmmword [0x4b0ca0]
psubd xmm3, xmm0
movd xmm0, eax
andps xmm3, xmmword [0x4b0d40]
packuswb xmm3, xmm3
packuswb xmm3, xmm3
paddb xmm3, xmmword [0x4b0e40]
xorps xmm3, xmm0
movd dword [ebp - 0x14], xmm3
jmp 0x403c34
mov eax, 0x8fb823ef
imul edx
add edx, dword [ebp - 0x18]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x18]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0x14], cl
inc edx
mov dword [ebp - 0x18], edx
cmp edx, 4
jl 0x403c03
sub esp, 0x18
lea ecx, [ebp - 0x14]
mov edx, esp
mov dword [ebp - 0x60], esp
xorps xmm0, xmm0
lea eax, [ecx + 1]
mov dword [ebp - 0x18], eax
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403c60
sub ecx, dword [ebp - 0x18]
lea eax, [ebp - 0x14]
push ecx
push eax
mov ecx, edx
call fcn.0040e0d0
mov byte [ebp - 4], 2
xor edx, edx
mov al, byte [0x4ae988]
mov byte [ebp - 0x70], al
mov dword [ebp - 0x14], edx
movups xmm0, xmmword [0x4ae948]
movups xmmword [ebp - 0xb0], xmm0
movups xmm0, xmmword [0x4ae958]
movups xmmword [ebp - 0xa0], xmm0
movups xmm0, xmmword [0x4ae968]
movups xmmword [ebp - 0x90], xmm0
movups xmm0, xmmword [0x4ae978]
movups xmmword [ebp - 0x80], xmm0
cmp edi, 2
jl 0x403de5
movaps xmm0, xmmword [0x4b0e40]
movaps xmm5, xmmword [0x4b0c70]
movaps xmm3, xmmword [0x4b0f40]
movaps xmm6, xmmword [0x4b0ca0]
movaps xmm4, xmmword [0x4b0d40]
movaps xmmword [ebp - 0x30], xmm0
mov ecx, dword [ebp - 0x30]
nop
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm5
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
movd xmm0, ecx
andps xmm2, xmm4
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmm0
movd xmm0, dword [ebp + edx - 0xb0]
xorps xmm2, xmm0
movd xmm0, eax
movd dword [ebp + edx - 0xb0], xmm2
pshufd xmm2, xmm0, 0
paddd xmm2, xmm5
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, 5
movaps xmm0, xmm1
psrld xmm0, 0x1f
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
movd xmm0, ecx
andps xmm2, xmm4
packuswb xmm2, xmm2
packuswb xmm2, xmm2
paddb xmm2, xmm0
movd xmm0, dword [ebp + edx - 0xac]
xorps xmm2, xmm0
movd dword [ebp + edx - 0xac], xmm2
add edx, 8
cmp edx, 0x40
jl 0x403cf0
mov dword [ebp - 0x14], edx
cmp edx, 0x41
jge 0x403e19
mov eax, 0x8fb823ef
imul edx
add edx, dword [ebp - 0x14]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x14]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0xb0], cl
inc edx
mov dword [ebp - 0x14], edx
cmp edx, 0x41
jl 0x403de5
sub esp, 0x18
lea ecx, [ebp - 0xb0]
mov edx, esp
mov dword [ebp - 0x14], esp
xorps xmm0, xmm0
lea edi, [ecx + 1]
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403e40
sub ecx, edi
lea eax, [ebp - 0xb0]
push ecx
push eax
mov ecx, edx
call fcn.0040e0d0
mov byte [ebp - 4], 3
xor edx, edx
mov ax, word [0x4ae928]
movq xmm0, qword [0x4ae920]
mov word [ebp - 0x24], ax
mov al, byte [0x4ae92a]
movq qword [ebp - 0x2c], xmm0
mov byte [ebp - 0x22], al
mov dword [ebp - 0x18], edx
mov eax, 0x1f7047dd
mul edx
mov eax, dword [ebp - 0x18]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x18]
shr eax, 5
mov cl, dl
movsx eax, al
imul eax, eax, 0x39
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0x2c], cl
inc edx
mov dword [ebp - 0x18], edx
cmp edx, 0xb
jl 0x403e80
sub esp, 0x18
lea ecx, [ebp - 0x2c]
mov edx, esp
mov dword [ebp - 0x64], esp
xorps xmm0, xmm0
lea edi, [ecx + 1]
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403ed2
sub ecx, edi
lea eax, [ebp - 0x2c]
push ecx
push eax
mov ecx, edx
call fcn.0040e0d0
mov byte [ebp - 4], 4
xor edx, edx
mov ax, word [0x4ae994]
movq xmm0, qword [str.uy_MvT_Y_M_]
mov word [ebp - 0x24], ax
mov al, byte [0x4ae996]
movq qword [ebp - 0x2c], xmm0
mov byte [ebp - 0x22], al
mov dword [ebp - 0x18], edx
nop
mov eax, 0x1f7047dd
mul edx
mov eax, dword [ebp - 0x18]
sub eax, edx
shr eax, 1
add eax, edx
mov edx, dword [ebp - 0x18]
shr eax, 5
mov cl, dl
movsx eax, al
imul eax, eax, 0x39
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0x2c], cl
inc edx
mov dword [ebp - 0x18], edx
cmp edx, 0xb
jl 0x403f10
sub esp, 0x18
lea edx, [ebp - 0x2c]
mov ecx, esp
lea edi, [edx + 1]
xorps xmm0, xmm0
movups xmmword [ecx], xmm0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x403f60
sub edx, edi
lea eax, [ebp - 0x2c]
push edx
push eax
call fcn.0040e0d0
lea ecx, [esi + 8]
mov dword [ebp - 4], 0xffffffff
call fcn.00402f30
lea ecx, [esi + 0x200]
mov dword [ebp - 4], 5
xorps xmm0, xmm0
push 0
movups xmmword [ecx], xmm0
push 0x4ae8dc
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.0040e0d0
lea ecx, [esi + 0x218]
mov byte [ebp - 4], 6
xorps xmm0, xmm0
push 0
movups xmmword [ecx], xmm0
push 0x4ae8dc
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0
call fcn.0040e0d0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret