Function at 0x421080
Capabilities:
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 4], 1
mov ecx, dword [ebp + 0xc]
add ecx, 4
mov dword [ebp + 0xc], ecx
mov dword [edi], 1
cmp eax, 1
jle 0x4213a6
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
dec eax
mov dword [ebp + 8], eax
mov esi, dword [ecx]
push 2
push 0x45aaec
push esi
call fcn.0043cf31
lea ecx, [esi + 2]
add esp, 0xc
xor esi, esi
test eax, eax
cmove esi, ecx
test esi, esi
jne 0x4210fd
mov eax, dword [ebp + 0xc]
push dword [eax]
push str.ERROR:_Unknown_option
push 0x4717f0
call fcn.00401200
add esp, 8
push eax
call fcn.00401200
push eax
call fcn.00401eb0
jmp 0x421308
push 7
push str.secret
push esi
call fcn.0043cf31
xor ebx, ebx
lea ecx, [esi + 7]
add esp, 0xc
test eax, eax
cmove ebx, ecx
test ebx, ebx
je 0x4212e3
cmp dword [ebp - 4], 0
jne 0x421134
push str.ERROR:_The_secret_was_set_twice
push 0x4717f0
jmp 0x4212f7
cmp byte [ebx], 0
jne 0x421151
push str.WARNING:_The_secret_is_empty
push 0x4717f0
call fcn.00401200
push eax
call fcn.00401eb0
add esp, 0xc
push 0xf0000000
push 1
push str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
push 0
lea esi, [edi + 4]
push esi
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x42119d
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
push eax
push str.CryptAcquireContext_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
jmp 0x42130b
lea eax, [edi + 8]
push eax
push 0
push 0
push 0x8003
push dword [esi]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x42121f
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
push eax
push str.CryptCreateHash_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
push 0
push dword [esi]
mov esi, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call esi
test eax, eax
je 0x421311
call ebx
push eax
push str.CryptReleaseContext_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
jmp 0x421311
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x421224
push 0
sub ecx, edx
push ecx
push ebx
push dword [edi + 8]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x4212d6
call ebx
push eax
push str.CryptHashData_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
push dword [edi + 8]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x42129f
call ebx
push eax
push str.CryptDestroyHash_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
push 0
push dword [esi]
mov esi, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call esi
test eax, eax
je 0x421311
call ebx
push eax
push str.CryptReleaseContext_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
jmp 0x421311
mov esi, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
xor eax, eax
mov dword [ebp - 4], eax
jmp 0x42131a
push esi
push str.ERROR:_Unknown_option
push 0x4717f0
call fcn.00401200
add esp, 8
push eax
call fcn.00401200
push eax
call fcn.00401eb0
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
add esp, 0xc
mov esi, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 4]
mov dword [edi], 0
mov ecx, dword [ebp + 0xc]
add ecx, 4
sub dword [ebp + 8], 1
mov dword [ebp + 0xc], ecx
jne 0x4210b5
test eax, eax
jne 0x4213a6
cmp dword [edi], eax
jne 0x4213c4
push dword [edi + 8]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x42136b
call ebx
push eax
push str.CryptDestroyHash_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
push 0
push dword [edi + 4]
call esi
test eax, eax
je 0x4213c4
call ebx
push eax
push str.CryptReleaseContext_____error
push 0x4717f0
call fcn.00401200
add esp, 8
mov ecx, eax
call fcn.00402f30
push eax
call fcn.00401eb0
add esp, 4
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
push str.ERROR:_The_secret_was_not_set
push 0x4717f0
call fcn.00401200
push eax
call fcn.00401eb0
add esp, 0xc
mov dword [edi], 0
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8