Function at 0x4312b0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0xc]
mov al, byte [ebp + 8]
mov edi, eax
call fcn.00417a70
sub esp, 8
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 0x4312e9
jmp 0x4312ee
jmp 0x431436
mov eax, edi
movzx ecx, al
mov edi, esi
mov edx, dword [ebp + 0x10]
add edi, edx
add edi, 0xffffffff
mov byte [esi + edx - 1], 0
cmp ecx, 0
sete cl
test cl, 1
jne 0x43130f
jmp 0x43131d
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], 0x30
jmp 0x431436
cmp ebx, 0xa
jne 0x4313ae
jmp 0x431328
movzx ecx, al
cmp ecx, 0x64
jb 0x43136c
mov esi, 0x64
mov eax, ecx
xor edx, edx
div esi
shl edx, 1
lea eax, str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
add eax, edx
mov dl, byte [edx + 0x44470d]
add edi, 0xffffffff
jmp 0x431351
mov byte [edi], dl
mov al, byte [eax]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
mov edi, 0x64
mov eax, ecx
xor edx, edx
div edi
mov edi, esi
jmp 0x431328
cmp ecx, 0xa
setb al
test al, 1
jne 0x431378
jmp 0x431389
mov al, byte [ecx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
jmp 0x4313a9
shl ecx, 1
mov al, byte [ecx + 0x44470d]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
mov al, byte [ecx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
add esi, 0xffffffff
mov byte [edi - 2], al
jmp 0x4313a9
jmp 0x431436
cmp ebx, 0x10
je 0x4313b5
jmp 0x43140b
movzx eax, al
jmp 0x4313ba
cmp eax, 0x10
jge 0x4313d0
mov al, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
jmp 0x431436
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 2
mov edx, eax
and edx, 0xfffffffd
imul edx, ecx
mov ecx, eax
and ecx, 2
or eax, 2
imul eax, ecx
add eax, edx
mov cl, byte [eax + 0x4447d6]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], cl
mov al, byte [eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add esi, 0xffffffff
mov byte [edi - 2], al
jmp 0x431436
movzx ecx, al
cmp ecx, 0
jbe 0x431432
mov eax, ecx
xor edx, edx
div ebx
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
mov eax, ecx
xor edx, edx
div ebx
mov edi, esi
jmp 0x43140b
mov esi, edi
jmp 0x431436
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret