Function at 0x1009670
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push 0xfffffffffffffffe
push 0x1010590
push 0x100e02b
mov eax, dword fs:[0]
push eax
add esp, 0xffffffec
push ebx
push esi
push edi
mov eax, dword [section..data]
xor dword [ebp - 8], eax
xor eax, ebp
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
mov dword [ebp - 0x18], esp
xor eax, eax
mov word [ebp - 0x20], ax
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x1c], 1
mov edx, dword [ebp + 8]
movsx eax, byte [edx]
test eax, eax
jne 0x10096c9
xor eax, eax
jmp 0x1009881
mov dword [ebp - 4], 0
push 0x30f
push 0
mov ecx, dword [ebp + 0xc]
push ecx
call sub.msvcrt.dll_memset
add esp, 0xc
mov edx, dword [ebp - 0x24]
movsx eax, byte [edx]
cmp eax, 0x22
jne 0x10096f9
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
jmp 0x10096e3
movzx edx, word [ebp - 0x20]
mov eax, dword [ebp - 0x24]
movsx ecx, byte [eax + edx]
cmp ecx, 0x22
je 0x1009736
movzx edx, word [ebp - 0x20]
mov eax, dword [ebp - 0x24]
movsx ecx, byte [eax + edx]
cmp ecx, 0x3d
je 0x1009736
movzx edx, word [ebp - 0x20]
mov eax, dword [ebp - 0x24]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x1009736
mov dx, word [ebp - 0x20]
add dx, 1
mov word [ebp - 0x20], dx
jmp 0x10096f9
movzx eax, word [ebp - 0x20]
push eax
mov ecx, dword [ebp - 0x24]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx eax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
lea edx, [ecx + eax + 1]
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
movsx ecx, byte [eax]
cmp ecx, 0x22
je 0x100976f
mov edx, dword [ebp - 0x24]
movsx eax, byte [edx]
cmp eax, 0x3d
jne 0x100977a
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
jmp 0x1009759
xor edx, edx
mov word [ebp - 0x20], dx
movzx eax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ecx + eax]
cmp edx, 0x22
je 0x10097bd
movzx eax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ecx + eax]
cmp edx, 0x2c
je 0x10097bd
movzx eax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ecx + eax]
test edx, edx
je 0x10097bd
mov ax, word [ebp - 0x20]
add ax, 1
mov word [ebp - 0x20], ax
jmp 0x1009780
movzx ecx, word [ebp - 0x20]
push ecx
mov edx, dword [ebp - 0x24]
push edx
mov eax, dword [ebp + 0xc]
add eax, 0x105
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx ecx, word [ebp - 0x20]
mov edx, dword [ebp - 0x24]
lea eax, [edx + ecx + 1]
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ecx]
cmp edx, 0x22
je 0x1009806
mov eax, dword [ebp - 0x24]
movsx ecx, byte [eax]
cmp ecx, 0x20
je 0x1009806
mov edx, dword [ebp - 0x24]
movsx eax, byte [edx]
cmp eax, 0x2c
jne 0x1009811
mov ecx, dword [ebp - 0x24]
add ecx, 1
mov dword [ebp - 0x24], ecx
jmp 0x10097e5
xor edx, edx
mov word [ebp - 0x20], dx
movzx eax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ecx + eax]
cmp edx, 0x22
je 0x1009844
movzx eax, word [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
movsx edx, byte [ecx + eax]
test edx, edx
je 0x1009844
mov ax, word [ebp - 0x20]
add ax, 1
mov word [ebp - 0x20], ax
jmp 0x1009817
movzx ecx, word [ebp - 0x20]
push ecx
mov edx, dword [ebp - 0x24]
push edx
mov eax, dword [ebp + 0xc]
add eax, 0x20a
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [ebp - 4], 0xfffffffe
jmp 0x100987e
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8