Function at 0x425920
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 0x544581
mov eax, dword fs:[0]
push eax
sub esp, 0x40
mov eax, dword [0x57906c]
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 0x55faaf
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
call fcn.00407c10
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 0x425afc
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
lea eax, [ebp - 0x1c]
push 0
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push 0
push eax
call esi
test eax, eax
jne 0x4259e7
push 8
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push eax
lea eax, [ebp - 0x1c]
push eax
call esi
test eax, eax
je 0x425afc
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 0x425afc
push 0
push 0x567b48
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push eax
push 0x567b48
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x425afc
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 0x425afc
push 0x3e8
call fcn.00524e05
mov esi, eax
add esp, 4
test esi, esi
je 0x425afc
push 0x3e8
push 0
push esi
call fcn.00516f30
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 0x425af0
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 0x425af0
push esi
lea ecx, [ebp - 0x3c]
call fcn.00407c10
mov dword [ebp - 4], 1
lea eax, [ebp - 0x3c]
push eax
mov ecx, edi
call fcn.00407ae0
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x3c]
call fcn.00407b50
test bl, bl
je 0x425a80
push esi
call fcn.0051f38c
mov ebx, dword [ebp - 0x40]
add esp, 4
test ebx, ebx
je 0x425b07
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
je 0x425b34
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x425b2d
call esi
mov edx, eax
mov ecx, str.Error_Crypt__n
call fcn.00425ba0
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x425b54
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
test eax, eax
jne 0x425b54
call esi
mov edx, eax
mov ecx, str.Error__Crypt__n
call fcn.00425ba0
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x425b76
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test eax, eax
jne 0x425b76
call esi
mov edx, eax
mov ecx, str.Error_Crypt__n
call fcn.00425ba0
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.004c61ad
mov esp, ebp
pop ebp
ret