Function at 0x409814
Capabilities:
Create new key via cryptacquirecontext
Encrypt data using des 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, 0x40
mov dword [ebp - 4], 0
mov dword [ebp - 8], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x2c], esp
push 0x10
push 1
push str.Microsoft_Strong_Cryptographic_Provider
push 0x743927
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x40989a
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x2c], esp
push 8
push 1
push str.Microsoft_Strong_Cryptographic_Provider
push 0x743927
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x4098d1
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
jne 0x4098e8
mov eax, 0x4788ac
jmp 0x409e5c
mov dword [ebp - 0x2c], esp
lea eax, [ebp - 8]
push eax
push 0
push 0
push 0x8004
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x40991d
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
jne 0x40996d
cmp dword [ebp - 4], 0
je 0x409963
mov dword [ebp - 0x2c], esp
mov eax, 0
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409963
push 6
call fcn.0043fb89
add esp, 4
mov eax, 0x4788ac
jmp 0x409e5c
push 0x80000004
push 0
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebx]
test eax, eax
jne 0x409982
mov eax, 0x478de2
push eax
push 1
mov ebx, 0x198
call fcn.004419f0
add esp, 0x10
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
push eax
mov ebx, dword [ebp - 0xc]
test ebx, ebx
je 0x4099ac
push ebx
call fcn.0043fb83
add esp, 4
pop eax
mov dword [ebp - 0xc], eax
push 0x80000005
push 0
mov eax, dword [ebp - 0xc]
test eax, eax
jne 0x4099c3
mov eax, 0x4788ac
push eax
push 1
mov ebx, 0x194
call fcn.00440100
add esp, 0x10
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x2c], esp
push 0
push dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4099ee
add eax, 8
push eax
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409a0e
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
jne 0x409a8b
cmp dword [ebp - 8], 0
je 0x409a48
mov dword [ebp - 0x2c], esp
lea eax, [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409a48
push 6
call fcn.0043fb89
add esp, 4
cmp dword [ebp - 4], 0
je 0x409a81
mov dword [ebp - 0x2c], esp
mov eax, 0
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409a81
push 6
call fcn.0043fb89
add esp, 4
mov eax, 0x4788ac
jmp 0x409e5c
mov dword [ebp - 0x2c], esp
lea eax, [ebp - 0x14]
push eax
push 4
push dword [ebp - 8]
push 0x6601
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409abe
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x34], 0
jne 0x409b3b
cmp dword [ebp - 8], 0
je 0x409af8
mov dword [ebp - 0x2c], esp
lea eax, [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409af8
push 6
call fcn.0043fb89
add esp, 4
cmp dword [ebp - 4], 0
je 0x409b31
mov dword [ebp - 0x2c], esp
mov eax, 0
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409b31
push 6
call fcn.0043fb89
add esp, 4
mov eax, 0x4788ac
jmp 0x409e5c
mov dword [ebp - 0x2c], esp
lea eax, [ebp - 8]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409b5e
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 8], 0
push 0x80000005
push 0
mov ebx, dword [ebp + 8]
mov eax, dword [ebx]
test eax, eax
jne 0x409b7a
mov eax, 0x4788ac
push eax
push 1
mov ebx, 0x194
call fcn.00440100
add esp, 0x10
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fstp qword [ebp - 0x30]
fld qword [ebp - 0x30]
fmul qword [0x743ab0]
fstp qword [ebp - 0x38]
fld qword [ebp - 0x38]
call fcn.004011c3
push 0x80000301
push 0
push eax
push 1
mov ebx, 0x1bc
call fcn.00441e80
add esp, 0x10
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
push eax
mov ebx, dword [ebp - 0x18]
test ebx, ebx
je 0x409bdb
push ebx
call fcn.0043fb83
add esp, 4
pop eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x2c], esp
push 0
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x409bf1
add eax, 8
push eax
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x409bfc
add eax, 8
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyn]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409c19
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x34], esp
push 0
mov ebx, dword [ebp + 8]
mov eax, dword [ebx]
test eax, eax
je 0x409c30
add eax, 8
push eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebx]
test eax, eax
je 0x409c3d
add eax, 8
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyn]
nop
nop
nop
nop
cmp dword [ebp - 0x34], esp
je 0x409c5a
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], esp
push dword [ebp - 0x10]
push dword [ebp - 0x38]
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_RtlMoveMemory]
nop
nop
nop
nop
cmp dword [ebp - 0x3c], esp
je 0x409c85
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x2c], esp
push 0
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x409c97
add eax, 8
push eax
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x409ca2
add eax, 8
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyn]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409cbf
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x1c], eax
fild dword [ebp - 0x10]
fstp qword [ebp - 0x30]
fld qword [ebp - 0x30]
fmul qword [0x743ab0]
fstp qword [ebp - 0x38]
mov dword [ebp - 0x3c], esp
fld qword [ebp - 0x38]
call fcn.004011c3
push eax
lea eax, [ebp - 0x10]
push eax
push dword [ebp - 0x1c]
push 0
push 1
push 0
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptEncrypt]
nop
nop
nop
nop
cmp dword [ebp - 0x3c], esp
je 0x409d15
push 6
call fcn.0043fb89
add esp, 4
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x409d91
cmp dword [ebp - 4], 0
je 0x409d5b
mov dword [ebp - 0x2c], esp
mov eax, 0
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409d5b
push 6
call fcn.0043fb89
add esp, 4
cmp dword [ebp - 0x14], 0
je 0x409d87
mov dword [ebp - 0x2c], esp
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409d87
push 6
call fcn.0043fb89
add esp, 4
mov eax, 0x4788ac
jmp 0x409e5c
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x24], eax
push 0x80000301
push 0
push dword [ebp - 0x24]
push 0x80000301
push 0
push dword [ebp - 0x1c]
push 2
mov ebx, 0x910
call fcn.00441eb0
add esp, 0x1c
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x2c]
push eax
mov ebx, dword [ebp - 0x28]
test ebx, ebx
je 0x409dd4
push ebx
call fcn.0043fb83
add esp, 4
pop eax
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x14], 0
je 0x409e04
mov dword [ebp - 0x2c], esp
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409e04
push 6
call fcn.0043fb89
add esp, 4
cmp dword [ebp - 4], 0
je 0x409e3d
mov dword [ebp - 0x2c], esp
mov eax, 0
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 4]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
nop
nop
nop
nop
cmp dword [ebp - 0x2c], esp
je 0x409e3d
push 6
call fcn.0043fb89
add esp, 4
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x409e57
push eax
mov eax, dword [eax + 4]
add eax, 8
push eax
call fcn.0043fb7d
pop ecx
pop esi
mov edi, eax
rep movsb byte es:[edi], byte [esi]
jmp 0x409e5c
push eax
mov ebx, dword [ebp - 0xc]
test ebx, ebx
je 0x409e6d
push ebx
call fcn.0043fb83
add esp, 4
mov ebx, dword [ebp - 0x18]
test ebx, ebx
je 0x409e7d
push ebx
call fcn.0043fb83
add esp, 4
mov ebx, dword [ebp - 0x28]
test ebx, ebx
je 0x409e8d
push ebx
call fcn.0043fb83
add esp, 4
pop eax
mov esp, ebp
pop ebp
ret 8