Function at 0x7c49e3ae
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
push edi
mov esi, ecx
cmp dword [ecx + 8], 0
je 0x7c49e3d4
mov eax, dword [ebp + 8]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov ecx, dword [esi + 8]
mov dword [eax + 8], ecx
jmp 0x7c49e420
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [ebp - 0x10], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0xc], ecx
xor ecx, ecx
mov dword [ebp - 8], ecx
test eax, eax
jne 0x7c49e3f3
cmp dword [esi], ecx
je 0x7c49e587
xor edi, edi
cmp dword [ebp + 0xc], edi
je 0x7c49e587
cmp eax, 0x80000000
jne 0x7c49e429
cmp dword [esi], edi
jne 0x7c49e429
cmp dword [ebp + 0xc], 1
jne 0x7c49e429
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov dword [eax], ecx
mov dword [eax + 8], edi
mov dword [eax + 4], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
test eax, eax
jge 0x7c49e442
lea eax, [ebp - 0x24]
lea ecx, [ebp - 0x10]
push eax
call sym.MFC40.DLL_Ordinal_813
push eax
lea ecx, [ebp - 0x10]
call sym.MFC40.DLL_Ordinal_736
push dword [ebp + 0xc]
call sub.MSVCRT40.dll_labs
add esp, 4
cmp dword [ebp - 0xc], 0
je 0x7c49e4c8
test byte [ebp - 9], 0x80
mov di, 0x20
jne 0x7c49e46e
dec di
mov edx, 1
lea ecx, [edi - 1]
shl edx, cl
test dword [ebp - 0xc], edx
je 0x7c49e45d
test eax, eax
je 0x7c49e4c3
mov dx, 0x20
test eax, 0x80000000
jne 0x7c49e48d
dec dx
mov ebx, 1
lea ecx, [edx - 1]
shl ebx, cl
test eax, ebx
je 0x7c49e47d
movzx ecx, dx
movzx edx, di
add ecx, edx
dec ecx
cmp ecx, 0x3f
jle 0x7c49e4c8
mov dword [ebp - 0xc], 0x80000000
mov dword [ebp - 0x10], 0
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov dword [eax + 8], 1
mov dword [eax], ecx
mov dword [eax + 4], edx
jmp 0x7c49e420
xor dx, dx
jmp 0x7c49e48d
mov dx, word [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
shr ecx, 0x10
movzx edi, dx
mov word [ebp - 0x1a], cx
mov ecx, eax
shr ecx, 0x10
mov word [ebp - 2], cx
movzx ecx, cx
imul ecx, edi
mov dword [ebp - 0x14], ecx
movzx edi, word [ebp - 0x1a]
movzx ecx, ax
mov eax, ecx
mov ebx, ecx
imul eax, edi
movzx edi, dx
imul ebx, edi
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x18]
shl eax, 0x10
add eax, ebx
movzx ebx, word [ebp - 2]
mov edx, ebx
mov dword [ebp - 0x10], eax
shl edx, 0x10
add edx, ecx
movzx eax, word [ebp - 0xc]
imul edx, eax
movzx edi, word [ebp - 0x1a]
mov eax, dword [ebp - 0xc]
shr eax, 0x10
imul ebx, edi
movzx eax, ax
imul eax, ecx
shl eax, 0x10
add edx, eax
mov eax, dword [ebp - 0x18]
shr eax, 0x10
add edx, ebx
add edx, eax
mov eax, dword [ebp - 0x14]
shr eax, 0x10
add edx, eax
mov eax, dword [esi + 4]
xor eax, dword [ebp + 0xc]
mov dword [ebp - 0xc], edx
test eax, 0x80000000
je 0x7c49e571
lea eax, [ebp - 0x24]
lea ecx, [ebp - 0x10]
push eax
call sym.MFC40.DLL_Ordinal_813
push eax
lea ecx, [ebp - 0x10]
call sym.MFC40.DLL_Ordinal_736
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
mov dword [eax], ecx
mov ecx, dword [ebp - 8]
mov dword [eax + 4], edx
jmp 0x7c49e3cf
xor ecx, ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], ecx
mov dword [eax], ecx
mov dword [eax + 4], ecx
jmp 0x7c49e3cf