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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x419750
push 0x416760
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x40
push ebx
push esi
push edi
xor esi, esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], esi
push 0x41ee10
mov eax, dword [ebp + 0x10]
push eax
mov edi, dword [sym.imp.MSVCRT.dll_fopen]
call edi
add esp, 8
mov ebx, eax
mov dword [ebp - 0x20], ebx
test ebx, ebx
je 0x412079
push 0x41ee0c
mov ecx, dword [ebp + 0x14]
push ecx
call edi
add esp, 8
mov dword [ebp - 0x38], eax
test eax, eax
je 0x412079
push esi
push 1
push esi
mov edi, dword [ebp + 8]
push edi
lea edx, [ebp - 0x30]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x411f80
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x48], eax
cmp eax, 0x80090016
jne 0x411f80
push 8
push 1
push esi
push edi
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
lea ecx, [ebp - 0x40]
push ecx
push 0
push 0
push 0x8003
mov edx, dword [ebp - 0x30]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x412079
push 0
mov edx, dword [ebp + 0xc]
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push edx
mov eax, dword [ebp - 0x40]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x412079
lea ecx, [ebp - 0x44]
push ecx
push 0x800000
mov edx, dword [ebp - 0x40]
push edx
push 0x6801
mov eax, dword [ebp - 0x30]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
je 0x412079
mov ecx, dword [ebp - 0x40]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov dword [ebp - 0x40], 0
mov eax, 0x3e8
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x24], eax
push eax
call sub.MFC42u.DLL_operatornew
add esp, 4
mov dword [ebp - 0x4c], eax
mov esi, eax
mov dword [ebp - 0x28], esi
test eax, eax
je 0x412079
push ebx
mov edx, dword [ebp - 0x2c]
push edx
push 1
push esi
call dword [sym.imp.MSVCRT.dll_fread]
add esp, 0x10
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 0xc]
test al, 0x20
jne 0x412079
and eax, 0x10
mov dword [ebp - 0x3c], eax
lea ecx, [ebp - 0x34]
push ecx
push esi
push 0
push eax
push 0
mov edx, dword [ebp - 0x44]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
je 0x412079
mov edi, dword [ebp - 0x38]
push edi
mov eax, dword [ebp - 0x34]
push eax
push 1
push esi
call dword [sym.imp.MSVCRT.dll_fwrite]
add esp, 0x10
test byte [edi + 0xc], 0x20
jne 0x412079
test byte [ebx + 0xc], 0x10
je 0x412019
mov dword [ebp - 0x1c], 1
mov dword [ebp - 4], 0xffffffff
call fcn.0041209f
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret