Function at 0x100d6550
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, ecx
mov dword [ebp - 8], edx
lea ecx, [edx - 1]
mov dword [ebp - 4], eax
push ebx
mov dword [ebp - 0x1c], ecx
mov ebx, eax
sar ecx, 1
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], ecx
push esi
push edi
cmp eax, ecx
jge 0x100d66d1
movss xmm5, dword [0x10285978]
mov edx, dword [ebp + 0x14]
lea ecx, [ebx + ebx]
add edx, 2
mov dword [ebp - 0x10], ecx
add edx, ecx
mov ecx, dword [ebp + 0x10]
mov esi, dword [ecx + 8]
lea eax, [edx - 1]
mov edi, dword [ecx + 4]
dec esi
and eax, esi
mov dword [ebp - 0x14], edi
and edx, esi
cmp byte [0x1029e239], 0
mov ebx, dword [edi + eax*4]
mov eax, dword [edi + edx*4]
mov dword [ebp - 0xc], eax
je 0x100d65bd
mov al, byte [eax + 0xc]
cmp al, byte [ebx + 0xc]
jne 0x100d6632
mov eax, dword [0x1029ce20]
movss xmm4, dword [eax + 0x1c]
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
mov edx, dword [ecx]
mov ecx, edx
movss xmm3, dword [eax]
mov eax, dword [ebp - 0xc]
movss xmm0, dword [eax]
divss xmm0, xmm4
addss xmm0, xmm5
cvttss2si eax, xmm0
movaps xmm0, xmm3
sub ecx, eax
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm4
subss xmm0, xmm1
call fcn.1003ca60
movss xmm1, dword [ebx]
movaps xmm2, xmm0
divss xmm1, xmm4
addss xmm1, xmm5
cvttss2si eax, xmm1
sub edx, eax
movd xmm1, edx
cvtdq2ps xmm1, xmm1
mulss xmm1, xmm4
subss xmm3, xmm1
movaps xmm0, xmm3
call fcn.1003ca60
comiss xmm0, xmm2
mov ecx, dword [ebp + 0x14]
seta al
mov ebx, dword [ebp - 0x10]
movzx eax, al
inc ebx
xor eax, 1
add ebx, eax
push 0x1800
lea eax, [ebx + ecx]
and eax, esi
mov edi, dword [edi + eax*4]
mov eax, dword [ebp - 4]
add eax, ecx
and eax, esi
mov esi, dword [ebp - 0x14]
mov esi, dword [esi + eax*4]
mov eax, dword [edi]
mov dword [esi], eax
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
movzx eax, byte [edi + 0xc]
mov byte [esi + 0xc], al
lea eax, [edi + 0x10]
push eax
lea eax, [esi + 0x10]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [edi + 0x1810]
add esp, 0xc
mov ecx, dword [ebp - 0x18]
movss xmm5, dword [0x10285978]
mov dword [esi + 0x1810], eax
mov eax, dword [edi + 0x1814]
mov dword [esi + 0x1814], eax
mov eax, dword [edi + 0x1818]
mov dword [esi + 0x1818], eax
movzx eax, byte [edi + 0x181c]
mov byte [esi + 0x181c], al
mov eax, ebx
mov dword [ebp - 4], eax
cmp ebx, ecx
jl 0x100d6581
mov edx, dword [ebp - 8]
cmp ebx, ecx
jne 0x100d6763
test dl, 1
jne 0x100d6763
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 8]
dec eax
add eax, dword [ebp + 0x14]
mov edx, dword [ecx + 8]
mov ecx, dword [ecx + 4]
dec edx
and eax, edx
push 0x1800
mov edi, dword [ecx + eax*4]
mov eax, dword [ebp - 4]
add eax, dword [ebp + 0x14]
and eax, edx
mov esi, dword [ecx + eax*4]
mov eax, dword [edi]
mov dword [esi], eax
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov eax, dword [edi + 8]
mov dword [esi + 8], eax
movzx eax, byte [edi + 0xc]
mov byte [esi + 0xc], al
lea eax, [edi + 0x10]
push eax
lea eax, [esi + 0x10]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [edi + 0x1810]
add esp, 0xc
mov dword [esi + 0x1810], eax
mov eax, dword [edi + 0x1814]
mov dword [esi + 0x1814], eax
mov eax, dword [edi + 0x1818]
mov dword [esi + 0x1818], eax
movzx eax, byte [edi + 0x181c]
mov byte [esi + 0x181c], al
mov eax, dword [ebp - 0x1c]
push dword [ebp + 0x14]
mov edx, dword [ebp - 0x20]
mov ecx, eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.100d6d60
add esp, 0x10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret