Function at 0x100027e0
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:
sub esp, 0x10
mov eax, dword [esp + 0x14]
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 0x10002814
push str.Error_opening_source_plaintext_file_
mov ecx, ebx
call fcn.10002760
mov ecx, dword [esp + 0x28]
push 0x100063dc
push ecx
call esi
add esp, 8
mov dword [esp + 0x28], eax
test eax, eax
jne 0x10002837
push str.Error_opening_destination_ciphertext_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 0x1000286d
push 8
push 1
push eax
push eax
lea eax, [esp + 0x20]
push eax
call esi
test eax, eax
jne 0x1000286d
push str.Error_during_CryptAcquireContext__n
mov ecx, ebx
call fcn.10002760
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x24]
push ecx
push 0
push 0
push 0x8003
push edx
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10002896
push str.Error_during_CryptCreateHash__n
mov ecx, ebx
call fcn.10002760
mov edx, dword [esp + 0x2c]
or ecx, 0xffffffff
mov edi, edx
xor eax, eax
repne scasb al, byte es:[edi]
mov eax, dword [esp + 0x24]
push 0
not ecx
dec ecx
push ecx
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x100028c5
push str.Error_during_CryptHashData.__n
mov ecx, ebx
call fcn.10002760
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1c]
push ecx
push 0x800000
push edx
push 0x6801
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
jne 0x100028f4
push str.Error_during_CryptDeriveKey__n
mov ecx, ebx
call fcn.10002760
mov ecx, dword [esp + 0x24]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0x3f0
mov dword [esp + 0x28], 0
call dword [sym.imp.MSVCRT.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
jne 0x10002927
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 0x10002954
mov ecx, dword [esp + 0x14]
push str.Error_reading_plaintext__n
call fcn.10002760
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x18]
push 0x3f0
push edx
push esi
and eax, 0x10
push 0
push eax
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
test eax, eax
jne 0x10002987
mov ecx, dword [esp + 0x14]
push str.Error_during_CryptEncrypt.__n
call fcn.10002760
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
push edi
push edx
push 1
push esi
call dword [sym.imp.MSVCRT.dll_fwrite]
mov al, byte [edi + 0xc]
add esp, 0x10
test bl, al
je 0x100029b2
mov ecx, dword [esp + 0x14]
push str.Error_writing_ciphertext.
call fcn.10002760
test byte [ebp + 0xc], 0x10
je 0x10002929
mov edi, dword [sym.imp.MSVCRT.dll_fclose]
test ebp, ebp
je 0x100029cc
push ebp
call edi
add esp, 4
mov eax, dword [esp + 0x28]
test eax, eax
je 0x100029da
push eax
call edi
add esp, 4
test esi, esi
je 0x100029e8
push esi
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
mov eax, dword [esp + 0x1c]
pop edi
pop esi
pop ebp
test eax, eax
pop ebx
je 0x100029fb
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x10002a0a
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esp]
test eax, eax
je 0x10002a1b
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, 1
add esp, 0x10
ret 0xc