Function at 0x494c50
Capabilities:
Encrypt data using rc4 prga

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x494f67
sub esp, 0x30
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
xor edi, edi
jmp 0x494c98
dec ecx
mov dword [esp + 0x38], ecx
neg ecx
sar ecx, 0x1f
and ecx, 1
add ecx, esi
mov esi, dword [esp + 0x38]
mov esi, eax
mov eax, ecx
mov ecx, dword [esp + 0x38]
test ecx, ecx
jle 0x494f20
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], eax
xchg edi, eax
mov byte [esp + 0x22], al
xchg edi, eax
movzx eax, byte [eax]
mov byte [esp + 0x23], al
cmp al, 0x20
jbe 0x494eba
cmp al, 0x22
je 0x494d5e
cmp al, 0x5c
jne 0x494cdd
lea eax, [esi + 1]
mov esi, dword [esp + 0x34]
cmp ecx, 1
jae 0x494c7d
jmp 0x494f60
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
call fcn.00494bb0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
lea ebx, [ecx + 1]
cmp ebx, edx
jg 0x494d27
movzx ebp, byte [esp + 0x23]
xchg ebp, ebx
mov byte [eax + ecx], bl
xchg ebp, ebx
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov ebp, ebx
movzx edi, byte [esp + 0x22]
mov ebx, edx
mov edx, eax
xor eax, eax
jmp 0x494cd3
mov dword [esp + 0x28], ecx
lea ebp, [0x4dc9e0]
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
call fcn.00436350
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ebx, [ecx + 1]
mov ecx, dword [esp + 0x28]
jmp 0x494d04
mov dword [esp + 0x24], esi
mov eax, esi
sar esi, 0x1f
shr esi, 0x1f
lea ecx, [eax + esi]
sar ecx, 1
mov dword [esp + 0x2c], ecx
mov dword [esp + 0xc], ecx
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
call fcn.00494bb0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
shl ebx, 1
mov ebp, dword [esp + 0x24]
cmp ebp, ebx
jne 0x494e60
movzx ebx, byte [esp + 0x22]
test bl, bl
je 0x494e56
mov ebp, dword [esp + 0x38]
cmp ebp, 1
jle 0x494e50
mov esi, dword [esp + 0x34]
movzx edi, byte [esi + 1]
xchg edi, eax
cmp al, 0x22
xchg edi, eax
jne 0x494e46
lea edi, [ecx + 1]
cmp edi, edx
jg 0x494e06
movzx ebx, byte [esp + 0x23]
mov byte [eax + ecx], bl
lea ecx, [esi + 1]
lea ebx, [ebp - 1]
movzx ebp, byte [esp + 0x22]
xor ebp, 1
mov esi, ecx
mov ecx, ebx
mov ebx, edx
mov edx, eax
xor eax, eax
mov eax, ebp
mov ebp, edi
mov edi, eax
xor eax, eax
jmp 0x494cd3
lea ebx, [0x4dc9e0]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], edi
call fcn.00436350
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea edi, [ecx + 1]
mov ecx, dword [esp + 0x28]
movzx ebx, byte [esp + 0x22]
mov ebp, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
jmp 0x494dd9
mov ecx, esi
mov ebx, ebp
mov edi, dword [esp + 0x28]
jmp 0x494de7
mov esi, dword [esp + 0x34]
jmp 0x494e46
mov ebp, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
jmp 0x494e46
lea ebx, [ecx + 1]
cmp ebx, edx
jg 0x494e87
movzx esi, byte [esp + 0x23]
xchg esi, ebx
mov byte [eax + ecx], bl
xchg esi, ebx
mov ecx, dword [esp + 0x34]
mov edi, ebx
movzx ebp, byte [esp + 0x22]
mov ebx, dword [esp + 0x38]
jmp 0x494def
lea ebp, [0x4dc9e0]
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
call fcn.00436350
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ebx, [ecx + 1]
mov ecx, dword [esp + 0x28]
jmp 0x494e67
cmp al, 9
jne 0x494f16
xchg edi, eax
test al, al
xchg edi, eax
jne 0x494cdd
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
call fcn.00494bb0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x38]
dec eax
mov ecx, eax
neg eax
sar eax, 0x1f
and eax, 1
mov edx, dword [esp + 0x34]
add eax, edx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], ecx
add esp, 0x30
ret
cmp al, 0x20
je 0x494ebf
jmp 0x494cdd
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
call fcn.00494bb0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
add esp, 0x30
ret
call fcn.00424590
ud2
call fcn.00448580
jmp fcn.00494c50