Function at 0x5f41c671
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
push ebx
xor ebx, ebx
cmp dword [ecx + 8], ebx
push esi
push edi
mov dword [ebp - 0x14], ecx
je 0x5f41c699
mov eax, dword [ebp + 8]
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov ecx, dword [ecx + 8]
mov dword [eax + 8], ecx
jmp 0x5f41c6c3
mov eax, dword [ecx]
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + 4]
cmp eax, ebx
mov dword [ebp - 0x1c], eax
jne 0x5f41c6af
cmp dword [ecx], ebx
je 0x5f41c6b4
cmp dword [ebp + 0xc], ebx
jne 0x5f41c6ca
mov eax, dword [ebp + 8]
xor ecx, ecx
xor edx, edx
mov dword [eax], edx
mov dword [eax + 4], ecx
mov dword [eax + 8], ebx
pop edi
pop esi
pop ebx
leave
ret 8
mov esi, 0x80000000
cmp eax, esi
jne 0x5f41c6e9
cmp dword [ecx], ebx
jne 0x5f41c6e9
cmp dword [ebp + 0xc], 1
jne 0x5f41c6e9
mov eax, dword [ebp + 8]
mov edx, dword [ecx]
mov dword [eax], edx
mov ecx, dword [ecx + 4]
jmp 0x5f41c6bd
cmp eax, ebx
jge 0x5f41c702
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0x20]
push eax
call sym.MFC42.DLL_Ordinal_918
push eax
lea ecx, [ebp - 0x20]
call sym.MFC42.DLL_Ordinal_830
push dword [ebp + 0xc]
call sub.MSVCRT.dll_labs
mov edx, dword [ebp - 0x1c]
pop ecx
cmp edx, ebx
je 0x5f41c781
test esi, edx
mov dword [ebp - 8], 0x20
mov edi, 0xffff
jne 0x5f41c734
add dword [ebp - 8], edi
push 1
mov ecx, dword [ebp - 8]
pop ebx
dec ecx
shl ebx, cl
test edx, ebx
je 0x5f41c722
xor ebx, ebx
cmp eax, ebx
je 0x5f41c77c
test esi, eax
mov dword [ebp - 4], 0x20
jne 0x5f41c755
add dword [ebp - 4], edi
push 1
mov ecx, dword [ebp - 4]
pop ebx
dec ecx
shl ebx, cl
test eax, ebx
je 0x5f41c743
xor ebx, ebx
movzx ecx, word [ebp - 4]
movzx edi, word [ebp - 8]
lea ecx, [ecx + edi - 1]
cmp ecx, 0x3f
jle 0x5f41c781
mov eax, dword [ebp + 8]
xor ecx, ecx
mov dword [eax], ecx
mov dword [eax + 4], esi
mov dword [eax + 8], 1
jmp 0x5f41c6c3
mov dword [ebp - 4], ebx
jmp 0x5f41c755
mov esi, dword [ebp - 0x20]
mov ecx, eax
shr esi, 0x10
movzx eax, ax
shr ecx, 0x10
movzx edi, si
movzx ebx, cx
mov esi, eax
mov dword [ebp - 8], ebx
imul esi, edi
imul edi, ebx
movzx ecx, word [ebp - 0x20]
mov dword [ebp - 0x10], edi
mov dword [ebp - 4], ecx
movzx edi, dx
imul ecx, ebx
shr edx, 0x10
imul edx, eax
mov ebx, edi
imul edi, dword [ebp - 8]
imul ebx, eax
imul eax, dword [ebp - 4]
mov dword [ebp - 8], edx
mov edx, ecx
and dword [ebp - 0x1c], 0
mov dword [ebp - 0xc], ebx
shl edx, 0x10
add eax, edx
mov ebx, esi
mov edx, ecx
shl ebx, 0x10
shl edx, 0x10
add ebx, eax
cmp eax, edx
mov dword [ebp - 0x20], ebx
jae 0x5f41c7ee
mov dword [ebp - 0x1c], 1
cmp ebx, eax
jae 0x5f41c7f5
inc dword [ebp - 0x1c]
mov eax, dword [ebp - 8]
shr esi, 0x10
add esi, dword [ebp - 0xc]
add eax, edi
shl eax, 0x10
add esi, eax
mov eax, dword [ebp - 0x14]
shr ecx, 0x10
mov eax, dword [eax + 4]
add ecx, esi
add ecx, dword [ebp - 0x10]
xor eax, dword [ebp + 0xc]
add dword [ebp - 0x1c], ecx
test eax, 0x80000000
je 0x5f41c838
lea eax, [ebp - 0x2c]
lea ecx, [ebp - 0x20]
push eax
call sym.MFC42.DLL_Ordinal_918
push eax
lea ecx, [ebp - 0x20]
call sym.MFC42.DLL_Ordinal_830
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x1c]
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0x18]
jmp 0x5f41c694