Function at 0x10077780
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x48]
test eax, eax
mov esi, 6
cmovns esi, eax
mov ebx, dword [esp + 0x44]
mov ecx, ebx
and ecx, 0x7fffff
lea eax, [ecx + ecx]
cmp ebx, 0x7fffff
ja 0x100777bc
test ecx, ecx
mov ebx, 0xffffff82
cmove ebx, ecx
jmp 0x100777c7
shr ebx, 0x17
or eax, 0x1000000
add ebx, 0xffffff81
mov edi, ebx
neg edi
cmovs edi, ebx
mov ecx, ebp
sub ecx, dword [esp + 0x3c]
mov edx, 0x84
sub ecx, esi
jl 0x10077a04
mov dword [esp], eax
xor eax, eax
cmp edi, 0x64
setb al
xor eax, 3
cmp edi, 0xa
mov ebp, 1
cmovae ebp, eax
cmp esi, 1
sbb ebp, 0
add ebp, 4
cmp ecx, ebp
mov ebp, dword [esp + 0x40]
jl 0x10077a04
shr ebx, 0x1f
add bl, bl
add bl, 0x2b
cmp esi, 5
ja 0x10077889
lea edx, [esi*4]
mov ebp, dword [esp]
mov eax, ebp
add eax, ebp
mov dword [esp + 4], eax
lea eax, [ebp - 1]
add eax, ebp
or eax, ebp
mov cl, 0x18
sub cl, dl
mov edx, 1
shl edx, cl
and eax, dword [esp + 4]
and edx, eax
add edx, ebp
mov eax, edx
shr eax, 0x18
add al, 0x30
mov ebp, dword [esp + 0x3c]
mov byte [ebp], al
test esi, esi
je 0x1007792a
mov byte [ebp + 1], 0x2e
mov eax, edx
shr eax, 0x14
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ebp + 2], al
cmp esi, 1
jne 0x1007792d
add ebp, 3
jmp 0x10077994
mov edx, dword [esp]
mov eax, edx
shr eax, 0x18
or al, 0x30
mov ecx, dword [esp + 0x3c]
mov byte [ecx], al
mov byte [ecx + 1], 0x2e
mov eax, edx
shr eax, 0x14
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ecx + 2], al
mov eax, edx
shr eax, 0x10
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ecx + 3], al
mov eax, edx
shr eax, 0xc
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ecx + 4], al
mov eax, edx
shr eax, 8
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ecx + 5], al
mov eax, edx
shr eax, 4
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ecx + 6], al
and edx, 0xf
movzx eax, byte [edx + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
lea ebp, [ecx + 8]
mov byte [ecx + 7], al
mov eax, esi
add eax, 0xfffffffa
je 0x10077994
add ecx, 7
push eax
push 0x30
push ebp
mov ebp, ecx
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
add ebp, esi
add ebp, 0xfffffffb
jmp 0x10077994
inc ebp
jmp 0x10077994
mov eax, edx
shr eax, 0x10
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ebp + 3], al
cmp esi, 2
jne 0x10077949
add ebp, 4
jmp 0x10077994
mov eax, edx
shr eax, 0xc
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ebp + 4], al
cmp esi, 3
jne 0x10077965
add ebp, 5
jmp 0x10077994
mov eax, edx
shr eax, 8
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ebp + 5], al
cmp esi, 4
jne 0x10077981
add ebp, 6
jmp 0x10077994
shr edx, 4
and edx, 0xf
movzx eax, byte [edx + str.0123456789abcdefghijklmnopqrstuvwxyz00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov byte [ebp + 6], al
add ebp, 7
mov byte [ebp], 0x70
mov byte [ebp + 1], bl
xor esi, esi
mov ecx, 0xcccccccd
nop word cs:[eax + eax]
mov eax, edi
mul ecx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
mov ebx, edi
sub ebx, eax
or bl, 0x30
mov byte [esp + esi + 0x27], bl
dec esi
cmp edi, 9
mov edi, edx
ja 0x100779b0
lea eax, [ebp + 2]
mov ecx, esi
neg ecx
mov edi, dword [esp + 0x40]
mov edx, edi
sub edx, eax
cmp edx, ecx
jge 0x100779ec
mov edx, 0x84
mov ebp, edi
jmp 0x10077a04
lea edx, [esp + esi]
add edx, 0x28
push ecx
push edx
push eax
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
sub ebp, esi
add ebp, 2
xor edx, edx
mov eax, ebp
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret