Function at 0x4a1350
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
mov ebx, ecx
push esi
push edi
mov eax, dword [ebx + 0x8c]
mov esi, dword [ebx + 0x94]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], esi
call fcn.0049fdd0
cmp byte [ebx + 0x9c], 2
mov edi, eax
movd xmm2, dword [ebp + 8]
lea eax, [ebx + 0x64]
movd xmm0, dword [ebp + 0xc]
cvtdq2ps xmm2, xmm2
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], eax
cvtdq2ps xmm0, xmm0
movss dword [esp + 0x14], xmm2
je 0x4a15ca
addss xmm0, dword [0x5e2e50]
addss xmm2, dword [0x5e2e50]
lea ecx, [esp + 0x28]
push ecx
sub esp, 8
movss dword [esp + 4], xmm0
movss dword [esp], xmm2
push eax
call dword [esp + 0x2c]
movss xmm0, dword [esp + 0x38]
add esp, 0x10
cmp byte [ebx + 0x9c], 1
movss xmm2, dword [0x5e3054]
mulss xmm0, xmm2
cvttss2si esi, xmm0
movss xmm0, dword [esp + 0x2c]
mulss xmm0, xmm2
cvttss2si edi, xmm0
jne 0x4a1424
movd xmm1, dword [ebp + 0xc]
lea eax, [esp + 0x20]
mov ecx, dword [esp + 0x10]
push eax
cvtdq2ps xmm1, xmm1
lea eax, [esp + 0x20]
push eax
call fcn.0049ee20
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
jmp 0x4a1446
movss xmm0, dword [ebx + 0x64]
mulss xmm0, xmm2
cvttss2si eax, xmm0
movss xmm0, dword [ebx + 0x70]
mulss xmm0, xmm2
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x14]
cvttss2si eax, xmm0
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x10], eax
cmp ecx, 0x49f250
jne 0x4a14fe
sar ebx, 1
mov ecx, 0x7fff
sar esi, 1
sar edi, 1
sar eax, 1
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], ebx
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x1c], eax
nop dword [eax]
cmp esi, 0xffff8000
jge 0x4a148f
mov eax, 0xffff8000
jmp 0x4a149a
cmp esi, 0x7fff
mov eax, esi
cmovg eax, ecx
cmp edi, 0xffff8000
jge 0x4a14a9
mov edx, 0xffff8000
jmp 0x4a14b4
cmp edi, 0x7fff
mov edx, edi
cmovg edx, ecx
imul eax, eax
mov ecx, 0x7ff
add esi, dword [esp + 0x14]
add edi, dword [esp + 0x10]
imul edx, edx
add edx, eax
shr edx, 0x13
sub ecx, edx
mov eax, ecx
sar eax, 0x1f
and eax, ecx
mov ecx, dword [esp + 0x18]
movzx eax, byte [eax + edx + 0x5c4238]
mov eax, dword [ecx + eax*4]
mov ecx, 0x7fff
mov dword [ebx], eax
add ebx, 4
sub dword [esp + 0x1c], 1
jne 0x4a1480
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x1c], eax
cmp ecx, 0x49f280
jne 0x4a1574
mov eax, edi
imul edi
mov ecx, eax
mov eax, esi
shrd ecx, edx, 0x10
imul esi
shrd eax, edx, 0x10
mov edx, 0x17
add ecx, eax
mov eax, SysReAllocString
cmovs ecx, eax
call fcn.004a6060
add edi, dword [esp + 0x10]
mov ecx, eax
shl ecx, 0xf
add esi, ebx
sar ecx, 0x1f
xor ecx, eax
shr ecx, 8
movzx eax, cl
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x1c]
mov dword [ecx], eax
add ecx, 4
sub dword [esp + 0x14], 1
mov dword [esp + 0x1c], ecx
jne 0x4a1514
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, edi
imul edi
mov ecx, eax
mov eax, esi
shrd ecx, edx, 0x10
imul esi
shrd eax, edx, 0x10
mov edx, 0x17
add ecx, eax
mov eax, SysReAllocString
cmovs ecx, eax
call fcn.004a6060
mov ecx, dword [esp + 0x18]
add esi, ebx
add edi, dword [esp + 0x10]
shr eax, 8
movzx eax, al
mov eax, dword [ecx + eax*4]
mov ecx, dword [esp + 0x1c]
mov dword [ecx], eax
add ecx, 4
sub dword [esp + 0x14], 1
mov dword [esp + 0x1c], ecx
jne 0x4a1574
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov ecx, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x18], ecx
lea ecx, [esp + 0x28]
push ecx
sub esp, 8
movss dword [esp + 4], xmm0
movss dword [esp], xmm2
push eax
call dword [esp + 0x2c]
movss xmm1, dword [esp + 0x3c]
movss xmm0, dword [esp + 0x38]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
cvtps2pd xmm0, xmm1
call fcn.00596cc0
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x5e3054]
cvttss2si eax, xmm0
push eax
call esi
movss xmm2, dword [esp + 0x28]
add esp, 0x14
addss xmm2, dword [0x5e2e78]
movd xmm0, dword [ebp + 0xc]
shr eax, 8
cvtdq2ps xmm0, xmm0
mov eax, dword [edi + eax*4]
mov dword [ebx], eax
add ebx, 4
sub dword [esp + 0x18], 1
mov eax, dword [esp + 0x10]
movss dword [esp + 0x14], xmm2
jne 0x4a15d4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10