Function at 0x41fc37
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x446040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov eax, ecx
mov dword [ebp - 0x20], edx
mov ecx, dword [ebp + 0x10]
mov ebx, edx
sub ebx, ecx
mov dword [ebp - 0x14], eax
cmp dword [ebp + 8], 0
xorps xmm0, xmm0
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], ebx
movlpd qword [ebp - 0xc], xmm0
jle 0x41fdab
push esi
push edi
mov edi, ecx
lea edx, [ecx - 2]
sub edi, eax
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], edi
push ecx
lea eax, [ebp - 0xc]
push 0
push eax
call sub.VCRUNTIME140.dll_memset
mov eax, dword [ebp - 0x28]
add esp, 0xc
xor esi, esi
cmp eax, 3
ja case.default.0x41fbe4
jmp dword [eax*4 + 0x41fdbc]
xor ecx, ecx
test ebx, ebx
js 0x41fd5f
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x10], edx
nop dword [eax + eax]
mov bl, byte [edx]
mov eax, ecx
and eax, 7
movzx edx, bl
inc ecx
movzx eax, byte [ebp + eax - 0xc]
sub edx, eax
add esi, edx
mov edx, dword [ebp - 0x10]
lea eax, [edi + edx]
and eax, 7
mov byte [ebp + eax - 0xc], bl
mov eax, esi
mov ebx, dword [ebp - 0x18]
shr eax, 1
mov byte [edx], al
inc edx
mov dword [ebp - 0x10], edx
cmp ecx, ebx
jle 0x41fc00
jmp 0x41fd5f
xor ecx, ecx
test ebx, ebx
js 0x41fd5f
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
mov bl, byte [eax]
mov eax, ecx
and eax, 7
movzx edx, bl
inc ecx
movzx eax, byte [ebp + eax - 0xc]
sub edx, eax
mov eax, dword [ebp - 0x10]
add eax, edi
add esi, edx
and eax, 7
mov byte [ebp + eax - 0xc], bl
mov eax, 0xaaaaaaab
mov ebx, dword [ebp - 0x18]
mul esi
mov eax, dword [ebp - 0x10]
shr edx, 1
mov byte [eax], dl
inc eax
mov dword [ebp - 0x10], eax
cmp ecx, ebx
jle 0x41fc47
jmp 0x41fd5f
xor ecx, ecx
test ebx, ebx
js 0x41fd5f
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x10], edx
mov bl, byte [edx]
mov eax, ecx
and eax, 7
movzx edx, bl
inc ecx
movzx eax, byte [ebp + eax - 0xc]
sub edx, eax
add esi, edx
mov edx, dword [ebp - 0x10]
lea eax, [edx + edi]
and eax, 7
mov byte [ebp + eax - 0xc], bl
mov eax, esi
mov ebx, dword [ebp - 0x18]
shr eax, 2
mov byte [edx], al
inc edx
mov dword [ebp - 0x10], edx
cmp ecx, ebx
jle 0x41fc95
jmp 0x41fd5f
xor ecx, ecx
test ebx, ebx
js 0x41fd5f
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x10], eax
nop dword [eax]
mov bl, byte [eax]
mov eax, ecx
and eax, 7
movzx edx, bl
inc ecx
movzx eax, byte [ebp + eax - 0xc]
sub edx, eax
mov eax, dword [ebp - 0x10]
add eax, edi
add esi, edx
and eax, 7
mov byte [ebp + eax - 0xc], bl
mov eax, 0xcccccccd
mov ebx, dword [ebp - 0x18]
mul esi
mov eax, dword [ebp - 0x10]
shr edx, 2
mov byte [eax], dl
inc eax
mov dword [ebp - 0x10], eax
cmp ecx, ebx
jle 0x41fce0
jmp 0x41fd5f
xor ecx, ecx
test ebx, ebx
js 0x41fd5f
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x10], edx
mov bl, byte [edx]
mov eax, ecx
and eax, 7
movzx edx, bl
inc ecx
movzx eax, byte [ebp + eax - 0xc]
sub edx, eax
mov eax, dword [ebp - 0x10]
add eax, edi
add esi, edx
and eax, 7
xor edx, edx
mov byte [ebp + eax - 0xc], bl
mov eax, esi
div dword [ebp - 0x1c]
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x18]
mov byte [edx], al
inc edx
mov dword [ebp - 0x10], edx
cmp ecx, ebx
jle 0x41fd28
cmp ecx, dword [ebp - 0x20]
jge 0x41fd91
mov ebx, dword [ebp - 0x14]
mov edi, dword [ebp - 0x20]
nop word [eax + eax]
mov eax, ecx
xor edx, edx
and eax, 7
movzx eax, byte [ebp + eax - 0xc]
sub esi, eax
mov eax, esi
div dword [ebp - 0x1c]
mov byte [ebx + ecx], al
inc ecx
cmp ecx, edi
jl 0x41fd70
mov edi, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x18]
mov eax, dword [ebp + 0xc]
sub edi, eax
add dword [ebp - 0x14], eax
sub dword [ebp + 8], 1
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x24], edi
jne 0x41fbc7
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop ebx
call fcn.0043d4f4
mov esp, ebp
pop ebp
ret