Function at 0x1009d570
Capabilities:
Encode data using xor
Encrypt data using rc4 prga
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x100c0380]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x100ec848]
push ebx
push esi
push edi
test al, 1
jne 0x1009d5e8
or eax, 1
mov dword [0x100ec848], eax
mov eax, dword [0x100e6a0c]
mov ebx, dword [eax + 0x30]
jmp 0x1009d5dc
mov edi, dword [ebx + 0xc]
mov esi, 0x811c9dc5
xor ecx, ecx
nop word [eax + eax]
inc ecx
cmp byte [edi + ecx], 0
jne 0x1009d5b0
xor edx, edx
test ecx, ecx
je 0x1009d5d9
nop dword [eax]
movsx eax, byte [edi + edx]
inc edx
xor eax, esi
imul esi, eax, 0x1000193
cmp edx, ecx
jb 0x1009d5c0
cmp esi, 0xcc254ccd
je 0x1009d5e0
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x1009d5a0
mov dword [0x100ec844], ebx
jmp 0x1009d5ee
mov ebx, dword [0x100ec844]
mov eax, dword [ebx]
movss xmm0, dword [0x100d0558]
push ecx
mov ecx, ebx
movss dword [esp], xmm0
mov eax, dword [eax + 0x3c]
call eax
cmp byte [0x100cfd68], 0
je 0x1009d9dc
mov edi, dword [0x100ec0f0]
mov eax, 0x2aaaaaab
mov esi, dword [0x100ec0ec]
mov ecx, edi
sub ecx, esi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1009d9dc
xor ecx, ecx
mov dword [ebp - 8], ecx
test eax, eax
je 0x1009d934
xor ebx, ebx
mov dword [ebp - 0x10], ebx
nop dword [eax + eax]
mov ecx, dword [0x100e6a10]
movss xmm0, dword [ebx + esi]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebx + esi + 4]
mov eax, dword [ecx]
movss dword [ebp - 0xc], xmm0
movss xmm0, dword [ebx + esi + 8]
movss dword [ebp - 0x28], xmm0
mov eax, dword [eax + 0x94]
call eax
movss xmm3, dword [ebp - 0xc]
mov esi, eax
movss xmm5, dword [ebp - 0x24]
movaps xmm2, xmm3
movss xmm4, dword [ebp - 0x28]
movaps xmm0, xmm5
mulss xmm0, dword [esi + 0x30]
mulss xmm2, dword [esi + 0x34]
addss xmm2, xmm0
movaps xmm0, xmm4
mulss xmm0, dword [esi + 0x38]
addss xmm0, dword [esi + 0x3c]
addss xmm2, xmm0
movss xmm0, dword [0x100b5ef4]
comiss xmm0, xmm2
ja 0x1009d901
movss xmm1, dword [0x100b5fc8]
movaps xmm0, xmm5
mulss xmm0, dword [esi]
mov eax, dword [0x100c07e0]
divss xmm1, xmm2
mov ecx, dword [0x100c07e4]
mov word [ebp - 0x14], 0xffff
mov byte [ebp - 0x12], 0xff
movaps xmm2, xmm3
mulss xmm5, dword [esi + 0x10]
mulss xmm2, dword [esi + 4]
mulss xmm3, dword [esi + 0x14]
addss xmm2, xmm0
movaps xmm0, xmm4
mulss xmm0, dword [esi + 8]
mulss xmm4, dword [esi + 0x18]
addss xmm3, xmm5
addss xmm0, dword [esi + 0xc]
addss xmm4, dword [esi + 0x1c]
addss xmm2, xmm0
movd xmm0, eax
cdq
sub eax, edx
addss xmm3, xmm4
sar eax, 1
cvtdq2ps xmm0, xmm0
mulss xmm2, xmm1
mulss xmm3, xmm1
mulss xmm2, xmm0
movd xmm0, eax
mov eax, ecx
cvtdq2ps xmm0, xmm0
cdq
sub eax, edx
sar eax, 1
mulss xmm2, dword [0x100b5f90]
addss xmm2, xmm0
movd xmm0, ecx
mov ecx, dword [0x100e6a1c]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 0xc], xmm2
movd xmm2, eax
mov eax, dword [0x100ec0ec]
mulss xmm3, xmm0
cvtdq2ps xmm2, xmm2
movzx eax, byte [ebx + eax + 0x10]
mov byte [ebp - 0x11], al
mov eax, dword [ecx]
mulss xmm3, dword [0x100b5f90]
push dword [ebp - 0x14]
mov eax, dword [eax + 0x38]
subss xmm2, xmm3
movss dword [ebp - 0x24], xmm2
call eax
movss xmm0, dword [ebp - 0x24]
addss xmm0, dword [0x100b605c]
mov ecx, dword [0x100e6a1c]
cvttss2si edi, xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
movss xmm0, dword [ebp - 0xc]
addss xmm0, dword [0x100b605c]
push edi
mov dword [ebp - 0x30], edi
cvttss2si ebx, xmm0
movss xmm0, dword [ebp - 0x24]
addss xmm0, dword [0x100b6004]
push ebx
mov dword [ebp - 0x28], ebx
cvttss2si esi, xmm0
movss xmm0, dword [ebp - 0xc]
addss xmm0, dword [0x100b6004]
push esi
mov dword [ebp - 0x34], esi
cvttss2si edx, xmm0
push edx
mov dword [ebp - 0x2c], edx
call eax
mov eax, dword [0x100ec0ec]
mov word [ebp - 0x18], 0xffff
mov byte [ebp - 0x16], 0xff
mov ecx, dword [ebp - 0x10]
movzx eax, byte [ecx + eax + 0x10]
mov ecx, dword [0x100e6a1c]
mov byte [ebp - 0x15], al
push dword [ebp - 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
movss xmm1, dword [ebp - 0x24]
movss xmm2, dword [ebp - 0xc]
movaps xmm0, xmm1
subss xmm0, dword [0x100b605c]
subss xmm1, dword [0x100b6004]
mov ecx, dword [0x100e6a1c]
cvttss2si edi, xmm0
mov eax, dword [ecx]
mov eax, dword [eax + 0x4c]
movaps xmm0, xmm2
subss xmm0, dword [0x100b605c]
subss xmm2, dword [0x100b6004]
cvttss2si esi, xmm1
push edi
cvttss2si edx, xmm0
cvttss2si ebx, xmm2
push edx
push esi
mov dword [ebp - 0xc], edx
push ebx
call eax
mov eax, dword [0x100ec0ec]
mov ecx, dword [ebp - 0x10]
mov word [ebp - 0x1c], 0xffff
mov byte [ebp - 0x1a], 0xff
movzx eax, byte [ecx + eax + 0x10]
mov ecx, dword [0x100e6a1c]
mov byte [ebp - 0x19], al
push dword [ebp - 0x1c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
mov ecx, dword [0x100e6a1c]
push edi
push dword [ebp - 0x28]
mov eax, dword [ecx]
push esi
push dword [ebp - 0x2c]
mov eax, dword [eax + 0x4c]
call eax
mov eax, dword [0x100ec0ec]
mov ecx, dword [ebp - 0x10]
mov word [ebp - 0x20], 0xffff
mov byte [ebp - 0x1e], 0xff
movzx eax, byte [ecx + eax + 0x10]
mov ecx, dword [0x100e6a1c]
mov byte [ebp - 0x1d], al
push dword [ebp - 0x20]
mov eax, dword [ecx]
mov eax, dword [eax + 0x38]
call eax
push dword [ebp - 0x30]
mov ecx, dword [0x100e6a1c]
push dword [ebp - 0xc]
push dword [ebp - 0x34]
mov eax, dword [ecx]
push ebx
mov eax, dword [eax + 0x4c]
call eax
mov ebx, dword [ebp - 0x10]
mov edi, dword [0x100ec0f0]
mov eax, 0x2aaaaaab
mov esi, dword [0x100ec0ec]
mov ecx, edi
inc dword [ebp - 8]
sub ecx, esi
imul ecx
add ebx, 0x18
sar edx, 2
mov eax, edx
mov dword [ebp - 0x10], ebx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 8], eax
jb 0x1009d650
xor ecx, ecx
mov eax, 0x2aaaaaab
mov dword [ebp - 8], ecx
mov ecx, edi
sub ecx, esi
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
je 0x1009d9dc
xor ebx, ebx
nop word [eax + eax]
movss xmm1, dword [ebx + esi + 0x14]
mov eax, dword [0x100e6a6c]
addss xmm1, dword [0x100b5fd4]
movss xmm0, dword [eax + 0x10]
comiss xmm0, xmm1
jb 0x1009d98d
dec dword [ebx + esi + 0x10]
mov edi, dword [0x100ec0f0]
mov esi, dword [0x100ec0ec]
cmp dword [ebx + esi + 0x10], 0
lea ecx, [ebx + esi]
jg 0x1009d9bc
lea eax, [ecx + 0x18]
sub edi, eax
push edi
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov edi, dword [0x100ec0f0]
add esp, 0xc
mov esi, dword [0x100ec0ec]
sub edi, 0x18
mov dword [0x100ec0f0], edi
inc dword [ebp - 8]
mov ecx, edi
sub ecx, esi
mov eax, 0x2aaaaaab
imul ecx
add ebx, 0x18
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [ebp - 8], eax
jb 0x1009d960
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100a191c
mov esp, ebp
pop ebp
ret