Function at 0x4370c0
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
mov si, word [esp + 0x20]
test ebp, ebp
sets bl
mov eax, ebp
sub eax, 1
sete al
or bl, al
cmp ebp, 0x24
setg bh
call fcn.0040e5f0
or bl, bh
jmp 0x4370f2
test bl, 1
jne 0x4370f9
jmp 0x4370fe
jmp 0x4372a0
movzx eax, si
mov ebx, edi
mov ecx, dword [esp + 0x28]
add ebx, ecx
add ebx, 0xffffffff
mov byte [edi + ecx - 1], 0
cmp eax, 0
sete al
test al, 1
jne 0x43711d
jmp 0x43712c
add ebx, 0xffffffff
jmp 0x437122
mov byte [ebx], 0x30
jmp 0x437127
jmp 0x43729e
cmp ebp, 0xa
jne 0x4371be
jmp 0x437137
movzx ecx, si
cmp ecx, 0x64
jb 0x43717c
mov esi, 0x64
mov eax, ecx
xor edx, edx
div esi
shl edx, 1
lea eax, [0x4486d8]
add eax, edx
mov dl, byte [edx + 0x4486d9]
mov edi, ebx
add edi, 0xffffffff
mov byte [ebx - 1], dl
mov al, byte [eax]
add edi, 0xffffffff
mov byte [ebx - 2], al
mov esi, 0x64
mov eax, ecx
xor edx, edx
div esi
mov esi, eax
mov ebx, edi
jmp 0x437137
cmp ecx, 0xa
setb al
test al, 1
jne 0x437188
jmp 0x437199
mov cl, byte [ecx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov eax, ebx
add eax, 0xffffffff
mov byte [ebx - 1], cl
jmp 0x4371b7
shl ecx, 1
mov dl, byte [ecx + 0x4486d9]
mov eax, ebx
add eax, 0xffffffff
mov byte [ebx - 1], dl
mov cl, byte [ecx + 0x4486d8]
add eax, 0xffffffff
mov byte [ebx - 2], cl
mov ebx, eax
jmp 0x43729e
cmp ebp, 0x10
sete al
test al, 1
jne 0x4371cf
jmp 0x4371ca
jmp 0x437273
jmp 0x4371d1
movzx esi, si
cmp esi, 0x100
setge al
test al, 1
jne 0x4371e3
jmp 0x43720f
mov eax, esi
and eax, 0xff
shl eax, 1
mov cl, byte [eax + 0x4487a2]
mov edx, ebx
add edx, 0xffffffff
mov byte [ebx - 1], cl
mov al, byte [eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add edx, 0xffffffff
mov byte [ebx - 2], al
shr esi, 8
mov ebx, edx
jmp 0x4371d1
cmp esi, 0x10
setl al
test al, 1
jne 0x43721b
jmp 0x43722e
mov al, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ecx, ebx
add ecx, 0xffffffff
mov byte [ebx - 1], al
mov ebx, ecx
jmp 0x43729e
mov eax, esi
xor eax, 0xffffffff
and eax, 0xffffffff
or eax, 0
and eax, 2
mov ecx, esi
and ecx, 0xfffffffd
imul ecx, eax
mov eax, esi
and eax, 2
or esi, 2
imul esi, eax
add esi, ecx
mov al, byte [esi + 0x4487a2]
mov ecx, ebx
add ecx, 0xffffffff
mov byte [ebx - 1], al
mov al, byte [esi + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add ecx, 0xffffffff
mov byte [ebx - 2], al
mov ebx, ecx
jmp 0x43729e
movzx ecx, si
cmp ecx, 0
jbe 0x43729c
mov eax, ecx
xor edx, edx
div ebp
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov edi, ebx
add edi, 0xffffffff
mov byte [ebx - 1], al
mov eax, ecx
xor edx, edx
div ebp
mov esi, eax
mov ebx, edi
jmp 0x437273
jmp 0x43729e
mov edi, ebx
mov eax, edi
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret