Function at 0x10002a30
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 0xffffffffffffffff
push 0x100043d8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov eax, dword [esp + 0x24]
push ebx
push ebp
push esi
mov esi, dword [sym.imp.MSVCRT.dll_fopen]
push edi
mov ebx, ecx
push 0x10006408
push eax
mov dword [esp + 0x1c], ebx
call esi
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x10002a79
push str.Error_opening_ciphertext_file_
mov ecx, ebx
call fcn.10002760
mov ecx, dword [esp + 0x38]
push 0x100063dc
push ecx
call esi
add esp, 8
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x10002a9c
push str.Error_opening_plaintext_file_
mov ecx, ebx
call fcn.10002760
mov esi, dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
push 0
push 1
push 0
lea edx, [esp + 0x1c]
push 0
push edx
call esi
test eax, eax
jne 0x10002b1b
push 8
push 1
push eax
push eax
lea eax, [esp + 0x20]
push eax
call esi
test eax, eax
jne 0x10002b1b
lea ecx, [esp + 0x38]
call sub.MFC42.DLL_CString::CString_2
mov dword [esp + 0x2c], 0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [esp + 0x3c]
push 0x100064f0
push ecx
call sub.MFC42.DLL_CString::Format
mov edx, dword [esp + 0x44]
add esp, 0xc
push 0
push 0
push edx
call sub.MFC42.DLL_AfxMessageBox
push str.Error_during_CryptAcquireContext_
mov ecx, ebx
call fcn.10002760
lea ecx, [esp + 0x38]
mov dword [esp + 0x2c], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x34]
push eax
push 0
push 0
push 0x8003
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10002b44
push str.Error_during_CryptCreateHash_
mov ecx, ebx
call fcn.10002760
mov edx, dword [esp + 0x3c]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push 0
push ecx
push edx
mov edx, dword [esp + 0x40]
push edx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x10002b73
push str.Error_during_CryptHashData_
mov ecx, ebx
call fcn.10002760
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x20]
push eax
push 0x800000
push ecx
push 0x6801
push edx
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x10002ba2
push str.Error_during_CryptDeriveKey_
mov ecx, ebx
call fcn.10002760
mov eax, dword [esp + 0x34]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0x3e8
mov dword [esp + 0x38], 0
call dword [sym.imp.MSVCRT.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
jne 0x10002bd5
push str.Out_of_memory__n
mov ecx, ebx
call fcn.10002760
mov bl, 0x20
push ebp
push 0x3e8
push 1
push esi
call dword [sym.imp.MSVCRT.dll_fread]
mov dword [esp + 0x28], eax
mov al, byte [ebp + 0xc]
add esp, 0x10
test bl, al
je 0x10002c02
mov ecx, dword [esp + 0x14]
push str.Error_reading_ciphertext_
call fcn.10002760
mov edx, dword [ebp + 0xc]
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x18]
and edx, 0x10
push ecx
push esi
push 0
push edx
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
jne 0x10002c30
mov ecx, dword [esp + 0x14]
push str.Error_during_CryptDecrypt_
call fcn.10002760
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
push edi
push ecx
push 1
push esi
call dword [sym.imp.MSVCRT.dll_fwrite]
mov al, byte [edi + 0xc]
add esp, 0x10
test bl, al
je 0x10002c5b
mov ecx, dword [esp + 0x14]
push str.Error_writing_plaintext_
call fcn.10002760
test byte [ebp + 0xc], 0x10
je 0x10002bd7
mov edi, dword [sym.imp.MSVCRT.dll_fclose]
test ebp, ebp
je 0x10002c75
push ebp
call edi
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10002c83
push eax
call edi
add esp, 4
test esi, esi
je 0x10002c91
push esi
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
mov eax, dword [esp + 0x20]
pop edi
pop esi
pop ebp
test eax, eax
pop ebx
je 0x10002ca4
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10002cb3
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esp]
test eax, eax
je 0x10002cc4
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [esp + 0x14]
mov eax, 1
mov dword fs:[0], ecx
add esp, 0x20
ret 0xc