Function at 0x4014e4
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using aes via winapi
Encrypt or decrypt via wincrypt
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._memcpy
mov dword [esp + 0x10], 0xf0000000
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], 0
lea eax, [ebp - 0xc]
mov dword [esp], eax
call sym._CryptAcquireContextA_20
sub esp, 0x14
test eax, eax
jne 0x40156d
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x2f
mov dword [esp + 4], 1
mov dword [esp], str.Error:_Failed_to_acquire_cryptographic_context_n
call sym._fwrite
mov eax, 0xffffffff
jmp 0x4017c0
mov eax, dword [ebp - 0xc]
lea edx, [ebp - 0x14]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8004
mov dword [esp], eax
call sym._CryptCreateHash_20
sub esp, 0x14
test eax, eax
jne 0x4015e6
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x1d
mov dword [esp + 4], 1
mov dword [esp], str.Error:_Failed_to_create_hash_n
call sym._fwrite
mov eax, dword [ebp - 0xc]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptReleaseContext_8
sub esp, 8
mov eax, 0xffffffff
jmp 0x4017c0
mov eax, dword [ebp - 0x14]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x10
mov edx, dword [ebp + 0x14]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._CryptHashData_16
sub esp, 0x10
test eax, eax
jne 0x401665
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x1b
mov dword [esp + 4], 1
mov dword [esp], str.Error:_Failed_to_hash_data_n
call sym._fwrite
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call sym._CryptDestroyHash_4
sub esp, 4
mov eax, dword [ebp - 0xc]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptReleaseContext_8
sub esp, 8
mov eax, 0xffffffff
jmp 0x4017c0
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0xc]
lea ecx, [ebp - 0x10]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], edx
mov dword [esp + 4], 0x660e
mov dword [esp], eax
call sym._CryptDeriveKey_20
sub esp, 0x14
test eax, eax
jne 0x4016eb
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x20
mov dword [esp + 4], 1
mov dword [esp], str.Error:_Failed_to_derive_AES_key_n
call sym._fwrite
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call sym._CryptDestroyHash_4
sub esp, 4
mov eax, dword [ebp - 0xc]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptReleaseContext_8
sub esp, 8
mov eax, 0xffffffff
jmp 0x4017c0
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x18], edx
lea edx, [ebp - 0x18]
mov dword [esp + 0x14], edx
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptEncrypt_28
sub esp, 0x1c
test eax, eax
jne 0x40178b
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x1e
mov dword [esp + 4], 1
mov dword [esp], str.Error:_Failed_to_encrypt_data_n
call sym._fwrite
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._CryptDestroyKey_4
sub esp, 4
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call sym._CryptDestroyHash_4
sub esp, 4
mov eax, dword [ebp - 0xc]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptReleaseContext_8
sub esp, 8
mov eax, 0xffffffff
jmp 0x4017c0
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._CryptDestroyKey_4
sub esp, 4
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call sym._CryptDestroyHash_4
sub esp, 4
mov eax, dword [ebp - 0xc]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptReleaseContext_8
sub esp, 8
mov eax, dword [ebp - 0x18]
leave
ret