Function at 0x437090
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov ax, word [esp + 0x30]
test ebp, ebp
sets dl
mov edi, ebp
sub edi, 1
sete dh
or dl, dh
mov edi, ebp
sub edi, 0x25
setge dh
or dl, dh
test dl, 1
jne 0x4370c8
jmp 0x4370cd
jmp 0x4372fd
movsx edi, ax
cmp edi, 0
setge bl
jmp 0x4370d8
xor edx, edx
sub edx, edi
test bl, 1
jne 0x4370e4
mov ax, dx
mov edi, esi
add edi, ecx
add edi, 0xffffffff
mov byte [esi + ecx - 1], 0
movzx ecx, ax
cmp ecx, 0
sete cl
test cl, 1
jne 0x437100
jmp 0x43710e
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], 0x30
jmp 0x4372fd
cmp ebp, 0xa
jne 0x43723b
jmp 0x437119
movzx ecx, ax
cmp ecx, 0x64
setae al
test al, 1
jne 0x437128
jmp 0x437165
mov esi, 0x64
mov eax, ecx
xor edx, edx
div esi
shl edx, 1
lea eax, [0x44c760]
add eax, edx
mov edx, eax
add edx, 1
mov bh, byte [edx]
mov edx, edi
add edx, 0xffffffff
mov byte [edi - 1], bh
jmp 0x43714e
mov al, byte [eax]
mov edi, edx
add edi, 0xffffffff
mov byte [edx - 1], al
mov esi, 0x64
mov eax, ecx
xor edx, edx
div esi
jmp 0x437119
cmp ecx, 0xa
setb al
test al, 1
jne 0x437171
jmp 0x437182
mov al, byte [ecx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
jmp 0x4371c2
mov eax, ecx
xor eax, 0xffffffff
and eax, 2
mov edx, ecx
and edx, 0xfffffffd
imul edx, eax
mov eax, ecx
and eax, 2
or ecx, 2
imul ecx, eax
add ecx, edx
lea eax, [0x44c760]
add eax, ecx
mov ecx, eax
add ecx, 1
jmp 0x4371ae
mov cl, byte [ecx]
add edi, 0xffffffff
mov byte [edi], cl
jmp 0x4371b7
mov al, byte [eax]
jmp 0x4371bb
add edi, 0xffffffff
mov byte [edi], al
mov esi, edi
test bl, 1
je 0x4371cc
jmp 0x4372fd
mov al, byte [esp + 0xc]
mov byte [esp + 0x10], al
mov byte [esp + 0x14], 0xef
mov eax, 1
mov byte [esp + eax + 0x14], 0
add eax, 1
cmp eax, 8
jne 0x4371de
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 8
jae 0x437228
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x14]
mov dword [esp + 4], eax
mov dword [esp], ecx
call fcn.0043b520
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x14], al
mov eax, dword [esp + 8]
inc eax
mov dword [esp + 8], eax
jmp 0x4371f3
mov al, byte [esp + 0x14]
mov ecx, esi
add ecx, 0xffffffff
mov byte [esi - 1], al
mov esi, ecx
jmp 0x4372fd
cmp ebp, 0x10
sete cl
test cl, 1
jne 0x43724d
jmp 0x437248
jmp 0x4372d2
jmp 0x43724f
movzx eax, ax
cmp eax, 0x100
setge cl
test cl, 1
jne 0x437261
jmp 0x437294
mov edx, eax
and edx, 0xff
shl edx, 1
lea ecx, str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
add ecx, edx
mov dl, byte [edx + 0x44c82a]
add edi, 0xffffffff
jmp 0x43727f
mov byte [edi], dl
mov cl, byte [ecx]
jmp 0x437285
mov edx, edi
add edx, 0xffffffff
mov byte [edi - 1], cl
shr eax, 8
mov edi, edx
jmp 0x43724f
cmp eax, 0x10
setl cl
test cl, 1
jne 0x4372a1
jmp 0x4372b2
mov al, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
jmp 0x4372fd
shl eax, 1
mov cl, byte [eax + 0x44c82a]
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 0x4372fd
movzx ecx, ax
cmp ecx, 0
jbe 0x4372f9
mov eax, ecx
xor edx, edx
div ebp
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov esi, edi
add esi, 0xffffffff
mov byte [edi - 1], al
mov eax, ecx
xor edx, edx
div ebp
mov edi, esi
jmp 0x4372d2
mov esi, edi
jmp 0x4372fd
mov eax, esi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret