Function at 0x10124090
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 0x101240cc
test ecx, ecx
mov ebx, 0xffffff82
cmove ebx, ecx
jmp 0x101240d7
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 0x10124314
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 0x10124314
shr ebx, 0x1f
add bl, bl
add bl, 0x2b
cmp esi, 5
ja 0x10124199
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
or al, 0x30
mov ebp, dword [esp + 0x3c]
mov byte [ebp], al
test esi, esi
je 0x1012423a
mov byte [ebp + 1], 0x2e
mov eax, edx
shr eax, 0x14
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ebp + 2], al
cmp esi, 1
jne 0x1012423d
add ebp, 3
jmp 0x101242a4
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.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ecx + 2], al
mov eax, edx
shr eax, 0x10
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ecx + 3], al
mov eax, edx
shr eax, 0xc
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ecx + 4], al
mov eax, edx
shr eax, 8
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ecx + 5], al
mov eax, edx
shr eax, 4
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ecx + 6], al
and edx, 0xf
movzx eax, byte [edx + str.0123456789abcdefghijklmnopqrstuvwxyz]
lea ebp, [ecx + 8]
mov byte [ecx + 7], al
mov eax, esi
add eax, 0xfffffffa
je 0x101242a4
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 0x101242a4
inc ebp
jmp 0x101242a4
mov eax, edx
shr eax, 0x10
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ebp + 3], al
cmp esi, 2
jne 0x10124259
add ebp, 4
jmp 0x101242a4
mov eax, edx
shr eax, 0xc
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ebp + 4], al
cmp esi, 3
jne 0x10124275
add ebp, 5
jmp 0x101242a4
mov eax, edx
shr eax, 8
and eax, 0xf
movzx eax, byte [eax + str.0123456789abcdefghijklmnopqrstuvwxyz]
mov byte [ebp + 5], al
cmp esi, 4
jne 0x10124291
add ebp, 6
jmp 0x101242a4
shr edx, 4
and edx, 0xf
movzx eax, byte [edx + str.0123456789abcdefghijklmnopqrstuvwxyz]
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 0x101242c0
lea eax, [ebp + 2]
mov ecx, esi
neg ecx
mov edi, dword [esp + 0x40]
mov edx, edi
sub edx, eax
cmp edx, ecx
jge 0x101242fc
mov edx, 0x84
mov ebp, edi
jmp 0x10124314
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