Function at 0x405930
Capabilities:
Create new key via cryptacquirecontext
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0xa34]
push ebx
mov edi, dword fs:[0x18]
sub esp, 0xa68
mov dword [esp + 0x10], 0xf0000008
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptAcquireContextA]
sub esp, 0x14
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xfe0
mov eax, dword [edi + 0x34]
mov dword [esp], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], str.Failed__error__lx._n
call fcn.00401ac0
lea eax, [ebp - 0xa40]
mov dword [esp + 8], 0x800000
mov esi, dword [sym.imp.advapi32.dll_CryptGenKey]
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x6602
mov eax, dword [ebp - 0xa34]
mov dword [esp], eax
call esi
sub esp, 0x10
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xfe4
mov eax, dword [edi + 0x34]
mov dword [esp], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], str.Failed__error__lx._n
call fcn.00401ac0
mov eax, dword [ebp - 0xa40]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov dword [ebp - 0xa58], eax
call eax
lea eax, [ebp - 0xa40]
sub esp, 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x880000
mov dword [esp + 4], 0x6602
mov eax, dword [ebp - 0xa34]
mov dword [esp], eax
call esi
sub esp, 0x10
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xfe9
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 4], str.Expected_failure._n
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xa34]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptReleaseContext]
lea eax, [ebp - 0xa44]
sub esp, 8
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetUserKey]
sub esp, 0xc
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xfee
mov dword [esp], ebx
lea ebx, [ebp - 0x80c]
mov dword [esp + 4], str.CryptGetUserKey_failed._n
call fcn.00401ac0
mov dword [ebp - 0xa18], 0
mov dword [ebp - 0xa14], 0x6602
mov byte [ebp - 0xa17], 2
mov dword [ebp - 0xa4c], 0x418680
mov dword [ebp - 0xa48], 0
mov eax, 0xcccccccc
mov ecx, pe_nt_image_headers32
lea edi, [ebp - 0xa0c]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0xa4c]
mov esi, dword [eax]
mov dword [esp], str.length__lu
mov dword [esp + 4], esi
call fcn.00401280
cmp esi, 0x1ff
jbe 0x406750
mov edx, esi
mov eax, 0x40
shr edx, 3
mov dword [ebp - 0xa3c], eax
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa54], edx
mov dword [esp + 0x14], eax
lea eax, [ebp - 0xa0c]
mov dword [esp + 0x18], 0x200
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xa44]
mov edi, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptEncrypt]
sub esp, 0x1c
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xffd
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0xa50]
mov dword [esp], ecx
call fcn.00401ac0
mov eax, dword [ebp - 0xa3c]
mov ecx, 0x200
mov dword [esp + 4], 0xee
sub ecx, eax
mov dword [esp + 8], ecx
lea ecx, [ebp - 0xa0c]
add eax, ecx
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_memset]
mov edx, dword [ebp - 0xa54]
lea eax, [ebp - 0xa40]
mov byte [ebp - 0xa18], 8
mov dword [ebp - 0xa10], edx
add edx, 0xc
mov dword [esp + 0x14], eax
lea eax, [ebp - 0xa18]
mov dword [esp + 8], edx
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 4], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1004
xor eax, eax
mov dword [esp + 4], str.Expected_failure._n
mov edx, dword [ebp - 0xa50]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa40]
mov byte [ebp - 0xa18], 1
mov dword [ebp - 0xa10], 0xa400
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0xa44]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0xa3c]
add eax, 0xc
mov dword [esp + 8], eax
lea eax, [ebp - 0xa18]
mov dword [esp + 4], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x100b
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 4
mov dword [ebp - 0xa38], 0xdeadbeef
mov dword [esp + 0xc], eax
lea eax, [ebp - 0xa38]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x13
mov eax, dword [ebp - 0xa40]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetKeyParam]
sub esp, 0x14
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1012
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
mov edx, 0x200
mov ecx, 0x28
cmp esi, edx
cmovbe edx, esi
cmp dword [0x42b010], 1
cmovne ecx, edx
mov dword [ebp - 0xa54], edx
mov dword [ebp - 0xa50], ecx
call fcn.00412e10
mov ecx, dword [ebp - 0xa50]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1015
mov eax, dword [ebp - 0xa38]
mov dword [esp + 0xc], ecx
cmp eax, ecx
mov dword [esp + 8], eax
sete al
mov dword [esp + 4], str.Unexpected_value__lu__expected__lu._n
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
lea eax, [ebp - 0xa38]
mov dword [esp + 8], eax
mov dword [esp + 4], 9
mov eax, dword [ebp - 0xa40]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetKeyParam]
sub esp, 0x14
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1019
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0xa50]
mov dword [esp], ecx
call fcn.00401ac0
call fcn.00412e10
mov edx, dword [ebp - 0xa54]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x101a
mov eax, dword [ebp - 0xa38]
mov dword [esp + 0xc], edx
cmp eax, edx
mov dword [esp + 8], eax
sete al
mov dword [esp + 4], str.Unexpected_value__lu__expected__lu._n
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebx], 0xcccccccc
mov dword [ebx + 4], 0xcccccccc
mov dword [ebp - 0xa3c], 8
mov dword [esp + 0x18], 0x800
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xa40]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptEncrypt]
sub esp, 0x1c
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1020
xor eax, eax
mov dword [esp + 4], str.Expected_failure._n
mov edx, dword [ebp - 0xa50]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1021
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Unexpected_error__lx._n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x80090003
sete al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 8
mov dword [esp + 0x18], 0x800
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xa40]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptEncrypt]
sub esp, 0x1c
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1024
xor eax, eax
mov dword [esp + 4], str.Expected_failure._n
mov edx, dword [ebp - 0xa50]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1025
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Unexpected_error__lx._n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x80090003
sete al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 8
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0xa40]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDecrypt]
sub esp, 0x18
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1029
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x102a
mov eax, dword [ebp - 0xa3c]
mov dword [esp + 4], str.Unexpected_len__lu._n
cmp eax, 8
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0xa48]
cmp dword [0x42b010], 1
lea edi, [eax + 0x418640]
jne 0x4060c8
lea edi, [eax + 0x418660]
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x102c
mov eax, dword [ebp - 0xa3c]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.Data_does_not_match._n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
mov edi, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0xa30]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0xa40]
mov dword [esp + 4], 0x8005
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptCreateHash]
sub esp, 0x14
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x102f
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
mov byte [ebp - 0x80c], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptHashData]
sub esp, 0x10
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1033
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0xa38]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 4
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1037
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1038
mov eax, dword [ebp - 0xa38]
mov dword [esp + 4], str.Unexpected_value__lu._n
cmp eax, 8
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 0x20
mov dword [ebx], 0xcccccccc
mov dword [ebx + 4], 0xcccccccc
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], 2
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov dword [ebp - 0xa50], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x103d
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa50]
mov dword [esp], edx
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x103e
mov eax, dword [ebp - 0xa3c]
mov dword [esp + 4], str.Unexpected_len__lu._n
cmp eax, 8
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0xa48]
lea edx, [eax + 0x418600]
add eax, 0x4185c0
cmp dword [0x42b010], 1
mov dword [ebp - 0xa54], eax
jne 0x40636d
mov eax, dword [ebp - 0xa48]
lea edx, [eax + 0x418620]
add eax, 0x4185e0
mov dword [ebp - 0xa54], eax
mov dword [ebp - 0xa50], edx
call fcn.00412e10
mov dword [eax], 0x41605d
mov edi, dword [ebp - 0xa3c]
mov dword [eax + 4], 0x1043
mov dword [esp + 8], edi
mov edx, dword [ebp - 0xa50]
mov dword [esp], ebx
mov dword [esp + 4], edx
call sub.msvcrt.dll_memcmp
mov edx, eax
mov eax, 1
test edx, edx
je 0x4063cf
mov dword [esp + 8], edi
mov eax, dword [ebp - 0xa54]
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [sym.imp.msvcrt.dll_memcmp]
or eax, dword [0x42b050]
sete al
movzx eax, al
mov dword [esp], eax
mov dword [esp + 4], str.Hash_does_not_match._n
call fcn.00401ac0
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyHash]
lea eax, [ebp - 0xa30]
sub esp, 4
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0xa40]
mov dword [esp + 4], 0x8009
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptCreateHash]
sub esp, 0x14
mov edi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov edx, dword fs:[0x18]
mov dword [eax + 4], 0x1048
mov eax, dword [edx + 0x34]
mov dword [ebp - 0xa50], edx
mov dword [esp + 8], eax
mov dword [esp], edi
mov edi, ebx
mov dword [esp + 4], str.Failed__error__lx._n
call fcn.00401ac0
xor eax, eax
mov ecx, 0x200
mov dword [ebp - 0xa24], esi
rep stosd dword es:[edi], eax
lea eax, [ebp - 0xa2c]
mov dword [ebp - 0xa1c], esi
mov dword [ebp - 0xa2c], 0x8003
mov dword [ebp - 0xa28], ebx
mov dword [ebp - 0xa20], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 5
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptSetHashParam]
sub esp, 0x10
mov esi, eax
call fcn.00412e10
mov edx, dword [ebp - 0xa50]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1052
mov eax, dword [edx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str.Failed__error__lx._n
call fcn.00401ac0
mov byte [ebp - 0x80c], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptHashData]
sub esp, 0x10
mov esi, eax
call fcn.00412e10
mov edx, dword [ebp - 0xa50]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1056
mov eax, dword [edx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str.Failed__error__lx._n
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0xa38]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 4
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov edx, dword [ebp - 0xa50]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x105a
mov eax, dword [edx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str.Failed__error__lx._n
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x105b
mov eax, dword [ebp - 0xa38]
mov dword [esp + 4], str.Unexpected_value__lu._n
cmp eax, 0x10
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0xa3c]
mov dword [ebp - 0xa3c], 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], ebx
mov dword [esp + 4], 2
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov edx, dword [ebp - 0xa50]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x105f
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str.Failed__error__lx._n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1060
mov eax, dword [ebp - 0xa3c]
mov dword [esp + 4], str.Unexpected_len__lu._n
cmp eax, 0x10
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1062
mov eax, dword [ebp - 0xa3c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xa48]
mov dword [esp], ebx
lea eax, [eax + eax + str.mXD_]
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.Hash_does_not_match._n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0xa30]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0xa40]
sub esp, 4
mov dword [esp], eax
mov eax, dword [ebp - 0xa58]
call eax
sub esp, 4
call fcn.00412e10
mov edx, dword [eax + 0xbec]
test edx, edx
je 0x406717
sub edx, 1
mov dword [eax + 0xbec], edx
add dword [ebp - 0xa48], 8
mov eax, dword [ebp - 0xa48]
add dword [ebp - 0xa4c], 4
cmp eax, 0x20
jne 0x405afb
mov eax, dword [ebp - 0xa44]
mov dword [esp], eax
mov eax, dword [ebp - 0xa58]
call eax
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, esi
shr eax, 3
mov edx, eax
jmp 0x405b3b