Function at 0x418f30
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
mov ebx, dword [ebp + 0x14]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
call fcn.00413d80
push eax
push eax
test ebx, ebx
sets al
mov ecx, ebx
sub ecx, 1
sete cl
or al, cl
mov ecx, ebx
sub ecx, 0x25
setge cl
or al, cl
test al, 1
jne 0x418f65
jmp 0x418f6a
jmp 0x4190d7
mov ecx, edi
mov eax, dword [ebp + 0x10]
add ecx, eax
add ecx, 0xffffffff
mov byte [edi + eax - 1], 0
cmp esi, 0
jne 0x418f8e
mov eax, ecx
add eax, 0xffffffff
mov byte [ecx - 1], 0x30
mov ecx, eax
jmp 0x4190d5
cmp ebx, 0xa
jne 0x419011
jmp 0x418f95
cmp esi, 0x64
jb 0x418fd4
mov edi, 0x64
mov eax, esi
xor edx, edx
div edi
shl edx, 1
mov al, byte [edx + 0x43c2bd]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], al
mov al, byte [edx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
add edi, 0xffffffff
mov byte [ecx - 2], al
mov ecx, 0x64
mov eax, esi
xor edx, edx
div ecx
mov esi, eax
mov ecx, edi
jmp 0x418f95
cmp esi, 0xa
jae 0x418fec
mov al, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edx, ecx
add edx, 0xffffffff
mov byte [ecx - 1], al
mov ecx, edx
jmp 0x41900c
shl esi, 1
mov al, byte [esi + 0x43c2bd]
mov edx, ecx
add edx, 0xffffffff
mov byte [ecx - 1], al
mov al, byte [esi + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
add edx, 0xffffffff
mov byte [ecx - 2], al
mov ecx, edx
jmp 0x4190d5
cmp ebx, 0x10
sete al
test al, 1
jne 0x419022
jmp 0x41901d
jmp 0x4190ad
jmp 0x419024
cmp esi, 0x100
jb 0x419073
mov eax, esi
and eax, 0xff
mov edi, eax
and edi, 0xfffffffd
mov edx, eax
or edx, 0xfffffffd
xor edx, 0xffffffff
imul edx, edi
mov edi, eax
and edi, 2
or eax, 2
imul eax, edi
add eax, edx
mov dl, byte [eax + 0x43c386]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], dl
mov al, byte [eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add edi, 0xffffffff
mov byte [ecx - 2], al
shr esi, 8
mov ecx, edi
jmp 0x419024
cmp esi, 0x10
jae 0x41908b
mov al, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edx, ecx
add edx, 0xffffffff
mov byte [ecx - 1], al
mov ecx, edx
jmp 0x4190d5
shl esi, 1
mov al, byte [esi + 0x43c386]
mov edx, ecx
add edx, 0xffffffff
mov byte [ecx - 1], al
mov al, byte [esi + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add edx, 0xffffffff
mov byte [ecx - 2], al
mov ecx, edx
jmp 0x4190d5
cmp esi, 0
jbe 0x4190d3
mov eax, esi
xor edx, edx
div ebx
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], al
mov eax, esi
xor edx, edx
div ebx
mov esi, eax
mov ecx, edi
jmp 0x4190ad
jmp 0x4190d5
mov edi, ecx
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret