Function at 0x401460
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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov dword [esp], str._DEBUG__Initializing_decryption...
call sym._puts
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 0x4014dc
call sym._GetLastError_0
mov dword [esp + 4], eax
mov dword [esp], str._DEBUG__CryptAcquireContext_failed_with_error__lu_n
call sym._printf
jmp 0x40178d
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 0x40153d
call sym._GetLastError_0
mov dword [esp + 4], eax
mov dword [esp], str._DEBUG__CryptCreateHash_failed_with_error__lu_n
call sym._printf
mov eax, dword [ebp - 0xc]
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._CryptReleaseContext_8
sub esp, 8
jmp 0x40178d
mov eax, dword [ebp - 0x14]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x20
mov edx, dword [ebp + 0x10]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._CryptHashData_16
sub esp, 0x10
test eax, eax
jne 0x4015a4
call sym._GetLastError_0
mov dword [esp + 4], eax
mov dword [esp], str._DEBUG__CryptHashData_failed_with_error__lu_n
call sym._printf
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
jmp 0x40178d
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], 0x6610
mov dword [esp], eax
call sym._CryptDeriveKey_20
sub esp, 0x14
test eax, eax
jne 0x401612
call sym._GetLastError_0
mov dword [esp + 4], eax
mov dword [esp], str._DEBUG__CryptDeriveKey_failed_with_error__lu_n
call sym._printf
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
jmp 0x40178d
mov eax, dword [ebp - 0x14]
mov dword [esp], eax
call sym._CryptDestroyHash_4
sub esp, 4
mov eax, dword [ebp - 0x10]
mov dword [esp + 0xc], 0
mov edx, dword [ebp + 0x14]
mov dword [esp + 8], edx
mov dword [esp + 4], 1
mov dword [esp], eax
call sym._CryptSetKeyParam_16
sub esp, 0x10
test eax, eax
jne 0x401687
call sym._GetLastError_0
mov dword [esp + 4], eax
mov dword [esp], str._DEBUG__CryptSetKeyParam_failed_with_error__lu_n
call sym._printf
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._CryptDestroyKey_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
jmp 0x40178d
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._malloc
mov edx, eax
mov eax, dword [ebp + 0x18]
mov dword [eax], edx
mov eax, dword [ebp + 0x18]
mov eax, dword [eax]
test eax, eax
jne 0x4016d7
mov dword [esp], str._DEBUG__Memory_allocation_failed.
call sym._puts
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._CryptDestroyKey_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
jmp 0x40178d
mov eax, dword [ebp + 0x18]
mov eax, dword [eax]
mov edx, dword [ebp + 0xc]
mov dword [esp + 8], edx
mov edx, dword [ebp + 8]
mov dword [esp + 4], edx
mov dword [esp], eax
call sym._memcpy
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x18]
mov edx, dword [eax]
mov eax, dword [ebp - 0x10]
lea ecx, [ebp - 0x18]
mov dword [esp + 0x14], ecx
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._CryptDecrypt_24
sub esp, 0x18
test eax, eax
jne 0x40175d
call sym._GetLastError_0
mov dword [esp + 4], eax
mov dword [esp], str._DEBUG__CryptDecrypt_failed_with_error__lu_n
call sym._printf
mov eax, dword [ebp + 0x18]
mov eax, dword [eax]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp + 0x18]
mov dword [eax], 0
mov eax, dword [ebp - 0x10]
mov dword [esp], eax
call sym._CryptDestroyKey_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 dword [esp], str._DEBUG__Decryption_completed_successfully.
call sym._puts
leave
ret