Function at 0x4158d0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
call fcn.00415f20
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 0x415908
jmp 0x41590d
jmp 0x415a9c
mov ecx, edi
add ecx, ebp
add ecx, 0xffffffff
mov byte [edi + ebp - 1], 0
cmp esi, 0
sete al
test al, 1
jne 0x415925
jmp 0x415933
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], 0x30
jmp 0x415a9a
cmp ebx, 0xa
sete al
test al, 1
jne 0x415942
jmp 0x4159ce
jmp 0x415944
cmp esi, 0x64
setae al
test al, 1
jne 0x415950
jmp 0x415993
mov edi, 0x64
mov eax, esi
xor edx, edx
div edi
shl edx, 1
lea edi, [0x442318]
add edi, edx
mov dl, byte [edx + 0x442319]
mov eax, ecx
add eax, 0xffffffff
mov byte [ecx - 1], dl
jmp 0x415976
mov dl, byte [edi]
jmp 0x41597a
jmp 0x41597c
mov ecx, eax
add ecx, 0xffffffff
mov byte [eax - 1], dl
mov edi, 0x64
mov eax, esi
xor edx, edx
div edi
mov esi, eax
jmp 0x415944
cmp esi, 0xa
jae 0x4159a9
mov al, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], al
jmp 0x4159c9
shl esi, 1
mov al, byte [esi + 0x442319]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], al
mov al, byte [esi + 0x442318]
add edi, 0xffffffff
mov byte [ecx - 2], al
jmp 0x4159c9
jmp 0x415a9a
cmp ebx, 0x10
je 0x4159d8
jmp 0x415a69
jmp 0x4159da
cmp esi, 0x100
jb 0x415a0f
mov edx, esi
and edx, 0xff
shl edx, 1
mov bl, byte [edx + 0x4423e2]
mov eax, ecx
add eax, 0xffffffff
mov byte [ecx - 1], bl
mov dl, byte [edx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add eax, 0xffffffff
mov byte [ecx - 2], dl
shr esi, 8
mov ecx, eax
jmp 0x4159da
cmp esi, 0x10
setb al
jmp 0x415a17
test al, 1
jne 0x415a1d
jmp 0x415a2e
mov al, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], al
jmp 0x415a9a
mov eax, esi
and eax, 0xfffffffd
mov edx, esi
or edx, 0xfffffffd
xor edx, 0xffffffff
imul edx, eax
mov eax, esi
and eax, 2
or esi, 2
imul esi, eax
add esi, edx
mov al, byte [esi + 0x4423e2]
mov edi, ecx
add edi, 0xffffffff
mov byte [ecx - 1], al
mov al, byte [esi + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add edi, 0xffffffff
mov byte [ecx - 2], al
jmp 0x415a9a
cmp esi, 0
seta al
test al, 1
jne 0x415a75
jmp 0x415a96
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 0x415a69
mov edi, ecx
jmp 0x415a9a
jmp 0x415a9c
mov eax, edi
pop esi
pop edi
pop ebx
pop ebp
ret