Function at 0x437410
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebx
push edi
push esi
sub esp, 0xc
mov esi, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov ax, word [esp + 0x1c]
test esi, esi
sets bl
mov edi, esi
sub edi, 1
sete bh
or bl, bh
mov edi, esi
sub edi, 0x25
setge bh
or bl, bh
test bl, 1
jne 0x437447
jmp 0x43744c
jmp 0x4375db
movzx ebx, ax
mov edi, ecx
add edi, edx
add edi, 0xffffffff
mov byte [ecx + edx - 1], 0
cmp ebx, 0
jne 0x43746e
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], 0x30
jmp 0x4375db
cmp esi, 0xa
jne 0x43751b
jmp 0x437479
movzx esi, ax
cmp esi, 0x64
setae al
test al, 1
jne 0x437488
jmp 0x4374db
mov ecx, 0x64
mov eax, esi
xor edx, edx
div ecx
mov eax, edx
xor eax, 0xffffffff
and eax, 2
mov ecx, edx
and ecx, 0xfffffffd
imul ecx, eax
mov eax, edx
and eax, 2
or edx, 2
imul edx, eax
add edx, ecx
mov al, byte [edx + 0x449761]
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], al
mov al, byte [edx + 0x449760]
add ecx, 0xffffffff
mov byte [edi - 2], al
mov edi, 0x64
mov eax, esi
xor edx, edx
div edi
mov edi, ecx
jmp 0x437479
cmp esi, 0xa
setb al
test al, 1
jne 0x4374e7
jmp 0x4374f8
mov al, byte [esi + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], al
jmp 0x437516
shl esi, 1
mov al, byte [esi + 0x449761]
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], al
mov al, byte [esi + 0x449760]
add ecx, 0xffffffff
mov byte [edi - 2], al
jmp 0x4375db
cmp esi, 0x10
sete cl
test cl, 1
jne 0x43752d
jmp 0x437528
jmp 0x4375b0
jmp 0x43752f
movzx eax, ax
cmp eax, 0x100
setge cl
test cl, 1
jne 0x437541
jmp 0x437572
mov edx, eax
and edx, 0xff
shl edx, 1
lea ecx, str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
add ecx, edx
mov dl, byte [edx + 0x44982a]
add edi, 0xffffffff
jmp 0x43755f
mov byte [edi], dl
mov dl, byte [ecx]
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], dl
shr eax, 8
mov edi, ecx
jmp 0x43752f
cmp eax, 0x10
setl cl
test cl, 1
jne 0x43757f
jmp 0x437590
mov al, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], al
jmp 0x4375db
shl eax, 1
mov dl, byte [eax + 0x44982a]
mov ecx, edi
add ecx, 0xffffffff
mov byte [edi - 1], dl
mov al, byte [eax + str.000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF]
add ecx, 0xffffffff
mov byte [edi - 2], al
jmp 0x4375db
movzx ecx, ax
cmp ecx, 0
jbe 0x4375d7
mov eax, ecx
xor edx, edx
div esi
mov al, byte [edx + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov ebx, edi
add ebx, 0xffffffff
mov byte [edi - 1], al
mov eax, ecx
xor edx, edx
div esi
mov edi, ebx
jmp 0x4375b0
mov ecx, edi
jmp 0x4375db
mov eax, ecx
add esp, 0xc
pop esi
pop edi
pop ebx
ret