Function at 0x41dee0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
push edi
push esi
sub esp, 0xc
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
test edi, edi
sets bl
mov esi, edi
sub esi, 1
sete bh
or bl, bh
cmp edi, 0x24
setg bh
jmp 0x41df0d
or bl, bh
test bl, 1
jne 0x41df16
jmp 0x41df1b
jmp 0x41e0ab
mov esi, ecx
add esi, edx
add esi, 0xffffffff
mov byte [ecx + edx - 1], 0
cmp eax, 0
sete cl
test cl, 1
jne 0x41df34
jmp 0x41df42
mov ecx, esi
add ecx, 0xffffffff
mov byte [esi - 1], 0x30
jmp 0x41e0a9
cmp edi, 0xa
sete cl
test cl, 1
jne 0x41df52
jmp 0x41dfde
jmp 0x41df54
cmp eax, 0x64
jb 0x41df93
mov edi, 0x64
mov ecx, eax
mov eax, ecx
xor edx, edx
div edi
shl edx, 1
mov al, byte [edx + 0x44170d]
mov edi, esi
add edi, 0xffffffff
mov byte [esi - 1], al
mov al, byte [edx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
add edi, 0xffffffff
mov byte [esi - 2], al
mov esi, 0x64
mov eax, ecx
xor edx, edx
div esi
mov esi, edi
jmp 0x41df54
cmp eax, 0xa
setb cl
test cl, 1
jne 0x41dfa0
jmp 0x41dfb5
lea ecx, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
add ecx, eax
mov al, byte [ecx]
add esi, 0xffffffff
jmp 0x41dfaf
mov byte [esi], al
jmp 0x41dfb3
jmp 0x41dfd7
shl eax, 1
mov dl, byte [eax + 0x44170d]
mov ecx, esi
add ecx, 0xffffffff
mov byte [esi - 1], dl
mov al, byte [eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
add ecx, 0xffffffff
mov byte [esi - 2], al
mov esi, ecx
jmp 0x41dfd7
mov ecx, esi
jmp 0x41e0a9
cmp edi, 0x10
sete cl
test cl, 1
jne 0x41dff0
jmp 0x41dfeb
jmp 0x41e07f
jmp 0x41dff2
cmp eax, 0x100
setae cl
test cl, 1
jne 0x41e001
jmp 0x41e02e
mov ecx, eax
and ecx, 0xff
shl ecx, 1
mov dl, byte [ecx + 0x4417d6]
mov edi, esi
add edi, 0xffffffff
mov byte [esi - 1], dl
mov cl, byte [ecx + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add edi, 0xffffffff
mov byte [esi - 2], cl
shr eax, 8
mov esi, edi
jmp 0x41dff2
cmp eax, 0x10
jae 0x41e044
mov al, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ecx, esi
add ecx, 0xffffffff
mov byte [esi - 1], al
jmp 0x41e0a9
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 dl, byte [eax + 0x4417d6]
mov ecx, esi
add ecx, 0xffffffff
mov byte [esi - 1], dl
mov al, byte [eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add ecx, 0xffffffff
mov byte [esi - 2], al
jmp 0x41e0a9
cmp eax, 0
jbe 0x41e0a5
mov ecx, eax
mov eax, ecx
xor edx, edx
div edi
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ebx, esi
add ebx, 0xffffffff
mov byte [esi - 1], al
mov eax, ecx
xor edx, edx
div edi
mov esi, ebx
jmp 0x41e07f
mov ecx, esi
jmp 0x41e0a9
jmp 0x41e0ab
mov eax, ecx
add esp, 0xc
pop esi
pop edi
pop ebx
ret