Function at 0x47c7f0
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.0047b3b0
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 0x47ca6a
addss xmm0, dword [0x526968]
addss xmm2, dword [0x526968]
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 [0x526af0]
mulss xmm0, xmm2
cvttss2si esi, xmm0
movss xmm0, dword [esp + 0x2c]
mulss xmm0, xmm2
cvttss2si edi, xmm0
jne 0x47c8c4
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.004847c0
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
jmp 0x47c8e6
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, 0x47a900
jne 0x47c99e
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 0x47c92f
mov eax, 0xffff8000
jmp 0x47c93a
cmp esi, 0x7fff
mov eax, esi
cmovg eax, ecx
cmp edi, 0xffff8000
jge 0x47c949
mov edx, 0xffff8000
jmp 0x47c954
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 + 0x515c00]
mov eax, dword [ecx + eax*4]
mov ecx, 0x7fff
mov dword [ebx], eax
add ebx, 4
sub dword [esp + 0x1c], 1
jne 0x47c920
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, 0x47a930
jne 0x47ca14
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.00482a40
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 0x47c9b4
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.00482a40
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 0x47ca14
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.004f7000
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x526af0]
cvttss2si eax, xmm0
push eax
call esi
movss xmm2, dword [esp + 0x28]
add esp, 0x14
addss xmm2, dword [0x526990]
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 0x47ca74
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10