Function at 0x4c3ff0
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using rc4 via winapi
Encrypt or decrypt via wincrypt
Get file size
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x548b11
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x57f0b4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, edx
mov edi, ecx
mov dword [ebp - 0x40], edi
mov dword [ebp - 4], 0
mov dword [ebp - 0x48], edi
mov dword [ebp - 0x44], 0
push 0x563af1
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
call fcn.00404820
mov dword [ebp - 4], 0
push 0
push 0x80
push 3
push 0
push 1
push 1
push esi
mov dword [ebp - 0x44], 1
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
mov dword [ebp - 0x40], ebx
cmp ebx, 0xffffffff
je 0x4c41cc
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
lea eax, [ebp - 0x1c]
push 0
push 1
push 0x5756c8
push 0
push eax
call esi
test eax, eax
jne 0x4c40b7
push 8
push 1
push 0x5756c8
push eax
lea eax, [ebp - 0x1c]
push eax
call esi
test eax, eax
je 0x4c41cc
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
lea eax, [ebp - 0x18]
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x4c41cc
push 0
push 0x57508c
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push 0x57508c
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x4c41cc
lea eax, [ebp - 0x20]
push eax
push 0x800000
push dword [ebp - 0x18]
push 0x6801
push dword [ebp - 0x1c]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
je 0x4c41cc
push 0x3e8
call fcn.005286d8
mov esi, eax
add esp, 4
test esi, esi
je 0x4c41cc
push 0x3e8
push 0
push esi
call fcn.0051b820
add esp, 0xc
xor bl, bl
nop dword [eax]
push 0
lea eax, [ebp - 0x24]
push eax
push 0x3e8
push esi
push dword [ebp - 0x40]
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4c41c0
cmp dword [ebp - 0x24], 0x3e8
mov eax, 1
movzx ebx, bl
cmovb ebx, eax
lea eax, [ebp - 0x24]
push eax
push esi
push 0
movzx eax, bl
push eax
push 0
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
je 0x4c41c0
push esi
lea ecx, [ebp - 0x3c]
call fcn.00404820
mov dword [ebp - 4], 1
lea eax, [ebp - 0x3c]
push eax
mov ecx, edi
call fcn.004046f0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x3c]
call fcn.00404760
test bl, bl
je 0x4c4150
push esi
call fcn.0052811e
mov ebx, dword [ebp - 0x40]
add esp, 4
test ebx, ebx
je 0x4c41d7
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x18]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x4c4248
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x4c4241
call ebx
push str.An_error_occurred_in_the_program.__n
push 2
mov esi, eax
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 8
push str.Error_Crypt__n
push 0x574f5c
push 2
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 0xc
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x4c42ac
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
test eax, eax
jne 0x4c42ac
call ebx
push str.An_error_occurred_in_the_program.__n
push 2
mov esi, eax
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 8
push str.Error__Crypt__n
push 0x574f5c
push 2
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 0xc
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4c4312
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test eax, eax
jne 0x4c4312
call ebx
push str.An_error_occurred_in_the_program.__n
push 2
mov esi, eax
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 8
push str.Error_Crypt__n
push 0x574f5c
push 2
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 0xc
push esi
push str.Error_number__x._n
push 2
call fcn.00528054
add esp, 4
push eax
call fcn.004c3fd0
add esp, 0xc
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00518690
mov esp, ebp
pop ebp
ret