Function at 0x4158e0
Capabilities:
Create new key via cryptacquirecontext
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, 0x9ac
mov eax, dword [0x4c6018]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push esi
mov esi, ecx
mov dword [ebp - 0x9a4], eax
test esi, esi
jne 0x415914
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00449013
mov esp, ebp
pop ebp
ret
push ebx
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ebx, eax
test ebx, ebx
jg 0x415942
pop ebx
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00449013
mov esp, ebp
pop ebp
ret
lea ecx, [ebx + 0x800]
push edi
push ecx
call dword [sym.imp.MSVCR100.dll_malloc]
mov edi, eax
add esp, 4
test edi, edi
je 0x415c8f
lea edx, [ebx + 3]
push edx
push 0
push edi
call sub.MSVCR100.dll_memset
add esp, 0xc
push 0
push 0
add ebx, 2
push ebx
push edi
push 0xffffffffffffffff
push esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
add eax, 0x800
push eax
call dword [sym.imp.MSVCR100.dll_malloc]
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x4159b4
push edi
call dword [sym.imp.MSVCR100.dll_free]
add esp, 4
pop edi
pop ebx
xor eax, eax
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00449013
mov esp, ebp
pop ebp
ret
mov eax, edi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4159c0
sub eax, edx
push eax
mov edx, edi
mov ecx, ebx
call fcn.004150e0
push 0x18f
mov dword [ebp - 0x9a8], eax
lea eax, [ebp - 0x193]
push 0
push eax
mov byte [ebp - 0x194], 0
call sub.MSVCR100.dll_memset
push 0
call dword [sym.imp.MSVCR100.dll__time64]
push eax
call dword [sym.imp.MSVCR100.dll_srand]
add esp, 0x18
xor esi, esi
call dword [sym.imp.MSVCR100.dll_rand]
mov dword [ebp + esi*4 - 0x144], eax
inc esi
cmp esi, 4
jl 0x415a07
mov ecx, dword [ebp - 0x138]
mov edx, dword [ebp - 0x13c]
mov eax, dword [ebp - 0x140]
push ecx
mov ecx, dword [ebp - 0x144]
push edx
push eax
push ecx
lea edx, [ebp - 0x194]
push str._X_X_X_X
push edx
call dword [sym.imp.MSVCR100.dll_sprintf]
mov eax, dword [ebp - 0x9a4]
add esp, 0x18
push 8
push 1
push eax
lea ecx, [ebp - 0x194]
xor esi, esi
push ecx
lea edx, [ebp - 0x9a0]
push edx
mov dword [ebp - 0x9a0], esi
mov dword [ebp - 0x9ac], esi
mov dword [ebp - 0x998], esi
mov dword [ebp - 0x99c], 0x18f
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
cmp eax, esi
je 0x415c60
mov ecx, dword [ebp - 0x9a0]
lea eax, [ebp - 0x9ac]
push eax
push 0x8000000
push 2
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptGenKey]
cmp eax, esi
je 0x415c60
mov ecx, dword [ebp - 0x9ac]
lea edx, [ebp - 0x99c]
push edx
lea eax, [ebp - 0x194]
push eax
push esi
push 6
push esi
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptExportKey]
cmp eax, esi
je 0x415c60
mov ecx, dword [ebp - 0x99c]
sub ecx, 0x14
lea esi, [ebp - 0x180]
mov dword [ebp - 0x99c], ecx
call fcn.00415340
mov edx, dword [ebp - 0x99c]
push edi
push edx
mov eax, esi
push eax
mov eax, dword [ebp - 0x9a8]
mov edx, ebx
call fcn.00415480
mov edx, dword [ebp - 0x9a0]
add esp, 0xc
lea ecx, [ebp - 0x998]
push ecx
push 0
push 0
push 0x8004
mov esi, eax
push edx
mov dword [ebp - 0x9a8], esi
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x415c60
mov eax, dword [ebp - 0x998]
push 0
push esi
push edi
push eax
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x415c60
mov eax, dword [ebp - 0x998]
lea ecx, [ebp - 0x99c]
push ecx
lea edx, [ebp - 0x194]
push edx
push 0
push 0
push 2
push eax
call dword [sym.imp.ADVAPI32.dll_CryptSignHashA]
test eax, eax
je 0x415c60
mov ecx, dword [ebp - 0x99c]
lea esi, [ebp - 0x194]
call fcn.00415340
mov ecx, dword [ebp - 0x99c]
mov eax, dword [ebp - 0x9a8]
push ecx
mov edx, esi
push edx
push edi
push ebx
call fcn.00415790
mov esi, eax
mov eax, 0x800
push 0x7ff
mov dword [ebp - 0x99c], eax
mov dword [ebp - 0x9a4], eax
lea eax, [ebp - 0x993]
push 0
push eax
mov byte [ebp - 0x994], 0
call sub.MSVCR100.dll_memset
add esp, 0x1c
lea ecx, [ebp - 0x994]
push ecx
push ebx
lea edx, [ebp - 0x9a4]
mov ecx, esi
call fcn.00402ce0
push 0x800
push 0
push 0x4d3d58
call sub.MSVCR100.dll_memset
mov edx, dword [ebp - 0x9a4]
push edx
lea eax, [ebp - 0x994]
push eax
push 0x4d3d58
call sub.MSVCR100.dll_memcpy
add esp, 0x18
test esi, esi
mov esi, dword [sym.imp.MSVCR100.dll_free]
push edi
jle 0x415c67
call esi
push ebx
call esi
mov eax, dword [ebp - 0x998]
add esp, 8
test eax, eax
je 0x415c3b
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov ecx, dword [ebp - 0x9a0]
push 0
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
pop ebx
mov eax, 0x4d3d58
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00449013
mov esp, ebp
pop ebp
ret
mov esi, dword [sym.imp.MSVCR100.dll_free]
push edi
call esi
push ebx
call esi
mov eax, dword [ebp - 0x998]
add esp, 8
test eax, eax
je 0x415c80
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov edx, dword [ebp - 0x9a0]
push 0
push edx
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov ecx, dword [ebp - 4]
pop edi
pop ebx
xor ecx, ebp
xor eax, eax
pop esi
call fcn.00449013
mov esp, ebp
pop ebp
ret