Function at 0x100a789
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xa0
push esi
push edi
push 0x10
xor eax, eax
pop ecx
lea edi, [ebp - 0x9c]
rep stosd dword es:[edi], eax
xor esi, esi
xor ecx, ecx
cmp dword [ebp + 0xc], esi
jbe 0x100a7c8
mov eax, dword [ebp + 0x10]
add eax, ecx
cmp byte [eax], 0x10
ja 0x100a816
movzx eax, byte [eax]
lea eax, [ebp + eax*4 - 0xa0]
inc dword [eax]
inc ecx
cmp ecx, dword [ebp + 0xc]
jb 0x100a7ac
xor edx, edx
inc edx
mov dword [ebp - 0x58], esi
mov eax, edx
mov edi, dword [ebp + eax*4 - 0xa0]
push 0x10
pop ecx
sub ecx, eax
shl edi, cl
add edi, dword [ebp + eax*4 - 0x5c]
inc eax
cmp eax, 0x10
mov dword [ebp + eax*4 - 0x5c], edi
jle 0x100a7d0
cmp dword [ebp - 0x18], 0x10000
je 0x100a81d
cmp dword [ebp - 0x18], esi
jne 0x100a816
mov cl, byte [ebp + 0x14]
shl edx, cl
add edx, edx
push edx
push esi
push dword [ebp + 0x18]
call sub.msvcrt.dll_memset
xor eax, eax
add esp, 0xc
inc eax
jmp 0x100a981
xor eax, eax
jmp 0x100a981
movzx esi, byte [ebp + 0x14]
push ebx
mov bl, 0x10
sub bl, byte [ebp + 0x14]
cmp esi, edx
mov eax, edx
mov dword [ebp - 0x10], esi
jb 0x100a855
lea edi, [esi - 1]
jmp 0x1053200
push 0x10
pop ecx
sub ecx, eax
xor edx, edx
inc edx
shl edx, cl
inc eax
dec ecx
cmp eax, 0x10
mov dword [ebp + eax*4 - 0xa4], edx
jbe 0x100a85a
mov eax, dword [ebp + esi*4 - 0x58]
movzx ecx, bl
mov ebx, dword [ebp + 0x18]
shr eax, cl
mov dword [ebp - 0x14], ecx
cmp eax, 0x10000
je 0x100a89d
xor edx, edx
inc edx
mov ecx, esi
shl edx, cl
sub edx, eax
add edx, edx
push edx
lea eax, [ebx + eax*2]
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov ecx, dword [ebp + 0xc]
xor eax, eax
test ecx, ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], eax
jle 0x100a97d
mov ecx, dword [ebp + 0x10]
mov al, byte [eax + ecx]
test al, al
je 0x100a96d
movzx ecx, al
shl ecx, 2
mov edx, dword [ebp + ecx - 0xa0]
lea esi, [ebp + ecx - 0x5c]
mov edi, dword [esi]
add edx, edi
cmp al, byte [ebp + 0x14]
ja 0x100a913
mov ecx, dword [ebp - 0x10]
xor eax, eax
inc eax
shl eax, cl
cmp edx, eax
ja 0x100a987
cmp edi, edx
jae 0x100a90f
mov eax, dword [ebp - 0xc]
lea ebx, [ebx + edi*2]
mov ecx, edx
sub ecx, edi
mov edi, ebx
mov bx, ax
shl ebx, 0x10
mov bx, ax
shr ecx, 1
mov eax, ebx
mov ebx, dword [ebp + 0x18]
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov dword [esi], edx
jmp 0x100a96d
mov ecx, dword [ebp - 0x14]
sub al, byte [ebp + 0x14]
mov dword [esi], edx
mov edx, edi
shr edx, cl
mov ecx, dword [ebp - 0x10]
mov byte [ebp - 1], al
shl edi, cl
lea edx, [ebx + edx*2]
mov ecx, dword [ebp + 0x1c]
xor esi, esi
cmp word [edx], si
jne 0x100a94e
mov eax, dword [ebp - 8]
shl eax, 2
mov word [eax + ecx + 2], si
mov word [eax + ecx], si
mov eax, dword [ebp - 8]
neg eax
inc dword [ebp - 8]
mov word [edx], ax
movsx eax, word [edx]
shl eax, 2
sub ecx, eax
cmp di, si
jge 0x100a95d
inc ecx
inc ecx
add edi, edi
dec byte [ebp - 1]
mov edx, ecx
jne 0x100a92a
mov ax, word [ebp - 0xc]
mov word [edx], ax
mov eax, dword [ebp - 0xc]
inc eax
cmp eax, dword [ebp + 0xc]
mov dword [ebp - 0xc], eax
jl 0x100a8b0
xor eax, eax
inc eax
pop ebx
pop edi
pop esi
leave
ret 0x18
xor eax, eax
jmp 0x100a980