Function at 0x40eec0
Capabilities:
Create new key via cryptacquirecontext
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
push edi
push esi
push ebx
lea ebx, [ebp - 0x80c]
sub esp, 0x8f8
lea esi, [esi]
mov byte [ebx + eax], al
add eax, 1
cmp eax, 0x800
jne 0x40eed8
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8001
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptCreateHash]
mov dword [ebp - 0x8d4], eax
call eax
sub esp, 0x14
test eax, eax
jne 0x410950
mov eax, 0x1c0
lea edi, [ebp - 0x8b4]
call fcn.00401310
mov eax, dword fs:[0x18]
mov edx, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], edx
cmp dword [eax + 0x34], 0x80090008
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [sym.imp.advapi32.dll_CryptHashData]
mov dword [ebp - 0x8cc], eax
lea eax, [ebp - 0x8b8]
mov dword [ebp - 0x8e0], eax
mov eax, dword [sym.imp.advapi32.dll_CryptGetHashParam]
mov dword [ebp - 0x8d0], eax
lea eax, [ebp - 0x8b0]
mov dword [ebp - 0x8dc], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDestroyHash]
mov dword [ebp - 0x8d8], eax
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8002
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x1d5
call fcn.00401310
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x8e4], edx
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov esi, eax
mov eax, 0x1d8
call fcn.00401310
mov edx, dword [ebp - 0x8e4]
xor eax, eax
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x40f04d
xor eax, eax
cmp ecx, 0x80090009
sete al
mov dword [esp], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
mov dword [ebp - 0x8e4], 1
sub esp, 0x10
mov esi, eax
test eax, eax
jne 0x40f0ac
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x80090009
je 0x410ca0
mov eax, 0x1e2
call fcn.00401310
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x8e8], edx
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov dword [ebp - 0x8b4], 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x8e0]
mov dword [esp + 4], 4
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1e6
mov eax, dword [ebp - 0x8b8]
mov dword [esp + 0xc], eax
mov edx, dword [ebp - 0x8e8]
cmp eax, 0x10
sete al
mov ecx, dword [edx + 0x34]
mov dword [esp + 4], str._08lx__hashlen:__ld_n
mov dword [esp + 8], ecx
xor ecx, ecx
test esi, esi
setne cl
and ecx, eax
mov dword [esp], ecx
call fcn.00401ac0
mov dword [ebp - 0x8b4], 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov ecx, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], ecx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x1ea
call fcn.00401310
mov edx, dword [ebp - 0x8e8]
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x1ec
call fcn.00401310
cmp dword [ebp - 0x8b0], 0xbf582a8e
je 0x410b20
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.Wrong_MD4_hash__n
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
sub esp, 4
mov dword [ebp - 0x8e8], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1ef
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8003
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov dword [ebp - 0x8e8], eax
mov eax, 0x1f3
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8b4], 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x8e0]
mov dword [esp + 4], 4
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov dword [ebp - 0x8e8], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1f7
mov eax, dword [ebp - 0x8b8]
mov dword [esp + 0xc], eax
mov ecx, dword [esi + 0x34]
cmp eax, 0x10
mov dword [esp + 4], str._08lx__hashlen:__ld_n
sete al
mov dword [esp + 8], ecx
mov edx, dword [ebp - 0x8e8]
test edx, edx
setne dl
movzx edx, dl
and edx, eax
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov dword [ebp - 0x8e8], eax
call fcn.00412e10
mov edx, dword [ebp - 0x8e8]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1fa
xor eax, eax
mov ecx, dword [esi + 0x34]
test edx, edx
jne 0x40f38e
xor eax, eax
cmp ecx, 0x80090009
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov eax, dword [ebp - 0x8e4]
mov dword [esp + 4], ebx
mov dword [esp + 8], 0x800
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov esi, eax
mov eax, 0x1fd
call fcn.00401310
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x8e8], edx
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov dword [ebp - 0x8b4], 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x201
call fcn.00401310
mov edx, dword [ebp - 0x8e8]
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x203
cmp dword [ebp - 0x8b0], 0x4da97615
je 0x410c20
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.Wrong_MD5_hash__n
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
sub esp, 4
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov edx, dword fs:[0x18]
mov dword [eax + 4], 0x206
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x8e8], edx
mov dword [esp + 8], eax
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8003
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov edx, dword [ebp - 0x8e8]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x209
mov eax, dword [edx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov dword [ebp - 0x8b4], 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov edx, dword [ebp - 0x8e8]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x20e
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x210
cmp dword [ebp - 0x8b0], 0xd98c1dd4
je 0x410be0
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.Wrong_MD5_hash__n
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x214
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x216
call fcn.00401310
cmp dword [ebp - 0x8b0], 0xd98c1dd4
je 0x410ba0
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.Wrong_MD5_hash__n
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.00401ac0
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov dword [ebp - 0x8e8], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x21b
xor eax, eax
mov dword [esp + 4], str.Expected_failure_n
mov edx, dword [ebp - 0x8e8]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
mov eax, 0x21c
call fcn.00401310
mov edx, dword [esi + 0x34]
mov eax, 1
cmp edx, 0x8009000c
je 0x40f719
xor eax, eax
cmp edx, 0x80090008
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.Expected_NTE_BAD_HASH_STATE_or_NTE_BAD_ALGID__got__08lx_n
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov eax, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x222
call fcn.00401310
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x224
call fcn.00401310
cmp dword [ebp - 0x8b0], 0xd98c1dd4
je 0x410b60
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.Wrong_MD5_hash__n
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
sub esp, 4
mov dword [ebp - 0x8e8], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x227
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
lea ecx, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8004
mov eax, dword [0x42b014]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d4]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e8], eax
mov eax, 0x22b
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov ecx, dword [ebp - 0x8e4]
mov dword [esp + 4], ebx
mov dword [esp + 8], 5
mov dword [esp + 0xc], ecx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8cc]
call ecx
sub esp, 0x10
mov dword [ebp - 0x8e4], eax
mov eax, 0x22e
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e4]
mov dword [esp], edx
call fcn.00401ac0
mov eax, dword [0x42b000]
test eax, eax
je 0x40faed
lea edx, [ebp - 0x8c4]
mov dword [esp + 8], 0
mov dword [esp + 0xc], edx
mov dword [esp + 4], 0
mov edx, dword [ebp - 0x8c8]
mov dword [esp], edx
call eax
sub esp, 0x10
mov dword [ebp - 0x8e4], eax
mov eax, 0x232
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e4]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0x807]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x7fb
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8cc]
call ecx
sub esp, 0x10
mov dword [ebp - 0x8e4], eax
mov eax, 0x235
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e4]
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8b4], 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov ecx, dword [ebp - 0x8e0]
mov dword [esp + 4], 4
mov dword [esp + 8], ecx
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d0]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e0], eax
mov eax, 0x239
call fcn.00401310
mov eax, dword [ebp - 0x8b8]
mov dword [esp + 0xc], eax
mov ecx, dword [esi + 0x34]
cmp eax, 0x14
mov dword [esp + 4], str._08lx__hashlen:__ld_n
sete al
mov dword [esp + 8], ecx
mov edx, dword [ebp - 0x8e0]
test edx, edx
setne dl
movzx edx, dl
and edx, eax
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8b4], 0x14
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov edx, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d0]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e0], eax
mov eax, 0x23d
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
mov eax, 0x23f
call fcn.00401310
mov dword [esp + 8], 0x14
mov dword [esp + 4], 0x419040
mov edx, dword [ebp - 0x8dc]
mov dword [esp], edx
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.Wrong_SHA1_hash__n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
sub esp, 4
mov dword [ebp - 0x8e0], eax
mov eax, 0x242
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
sub esp, 4
mov esi, eax
mov eax, 0x246
call fcn.00401310
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x8e0], edx
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x800c
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x24a
call fcn.00401310
mov edx, dword [ebp - 0x8e0]
xor eax, eax
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x40fb8c
xor eax, eax
cmp ecx, 0x80090008
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.expected_NTE_BAD_ALGID__got__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x800d
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x24d
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x40fc04
xor eax, eax
cmp ecx, 0x80090008
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.expected_NTE_BAD_ALGID__got__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x800e
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x250
call fcn.00401310
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
jne 0x40fc74
xor eax, eax
cmp ecx, 0x80090008
sete al
mov dword [esp + 8], ecx
mov dword [esp], eax
mov dword [esp + 4], str.expected_NTE_BAD_ALGID__got__08lx_n
mov esi, dword fs:[0x18]
call fcn.00401ac0
mov dword [esp + 0x10], 0xf0000000
mov dword [esp + 0xc], 1
mov eax, dword [0x42b00c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
lea eax, [ebp - 0x8c0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptAcquireContextA]
mov dword [ebp - 0x8e0], eax
call eax
sub esp, 0x14
mov dword [ebp - 0x8e4], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x254
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptAcquireContextA_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e4]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8004
mov eax, dword [ebp - 0x8c0]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov dword [ebp - 0x8e4], eax
mov eax, 0x257
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptCreateHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e4]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x8c0]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptReleaseContext]
mov dword [ebp - 0x8e4], eax
call eax
sub esp, 8
mov dword [ebp - 0x8e8], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x25b
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptReleaseContext_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], 0
mov dword [esp + 8], 5
mov dword [esp + 4], str.data
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
mov ecx, dword [esi + 0x34]
sub esp, 0x10
mov dword [ebp - 0x8ec], eax
mov eax, 0x260
mov dword [ebp - 0x8e8], ecx
call fcn.00401310
mov dword [esp + 4], str.CryptHashData_succeeded_n
xor eax, eax
mov edx, dword [ebp - 0x8ec]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
mov eax, 0x261
call fcn.00401310
mov ecx, dword [ebp - 0x8e8]
xor eax, eax
mov dword [esp + 4], str.expected_ERROR_INVALID_PARAMETER_got__lu_n
cmp ecx, 0x57
mov dword [esp + 8], ecx
sete al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
mov ecx, dword [esi + 0x34]
sub esp, 4
mov dword [ebp - 0x8ec], eax
mov dword [ebp - 0x8e8], ecx
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x266
xor eax, eax
mov dword [esp + 4], str.CryptDestroyHash_succeeded_n
mov edx, dword [ebp - 0x8ec]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
mov eax, 0x267
call fcn.00401310
mov ecx, dword [ebp - 0x8e8]
xor eax, eax
mov dword [esp + 4], str.expected_ERROR_INVALID_PARAMETER_got__lu_n
cmp ecx, 0x57
mov dword [esp + 8], ecx
sete al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [0x42b000]
test eax, eax
je 0x410d00
mov dword [esp + 0x10], 0xf0000000
mov dword [esp + 0xc], 1
mov eax, dword [0x42b00c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
lea eax, [ebp - 0x8c0]
mov dword [esp], eax
mov eax, dword [ebp - 0x8e0]
call eax
sub esp, 0x14
mov dword [ebp - 0x8e8], eax
mov eax, 0x270
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptAcquireContextA_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
lea edx, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8004
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d4]
call eax
sub esp, 0x14
mov dword [ebp - 0x8e8], eax
mov eax, 0x273
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptCreateHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 5
mov dword [esp + 4], str.data
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov dword [ebp - 0x8e8], eax
mov eax, 0x276
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptHashData_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0x8c4]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
call dword [0x42b000]
sub esp, 0x10
mov dword [ebp - 0x8e8], eax
mov eax, 0x279
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptDuplicateHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8b4], 0x14
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov edx, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
mov edx, dword [ebp - 0x8d0]
call edx
sub esp, 0x14
mov dword [ebp - 0x8e8], eax
mov eax, 0x27d
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptGetHashParam_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xa
mov dword [esp + 4], str.more_data
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov dword [ebp - 0x8e8], eax
mov eax, 0x281
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptHashData_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov edx, dword [ebp - 0x8d8]
call edx
sub esp, 4
mov dword [ebp - 0x8e8], eax
mov eax, 0x284
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptDestroyHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
mov edx, dword [ebp - 0x8d8]
call edx
sub esp, 4
mov dword [ebp - 0x8e8], eax
mov eax, 0x287
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptDestroyHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x8c0]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8e4]
call ecx
sub esp, 8
mov dword [ebp - 0x8e8], eax
mov eax, 0x28a
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptReleaseContext_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e8]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 0x10], 0xf0000000
lea ecx, [ebp - 0x8c0]
mov dword [esp + 0xc], 1
mov eax, dword [0x42b00c]
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp], ecx
mov ecx, dword [ebp - 0x8e0]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e0], eax
mov eax, 0x28e
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptAcquireContextA_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
lea ecx, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], ecx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8003
mov eax, dword [0x42b014]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d4]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e0], eax
mov eax, 0x292
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptCreateHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 4], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x800
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov dword [ebp - 0x8e0], eax
mov eax, 0x294
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8b4], 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov ecx, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], ecx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d0]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e0], eax
mov eax, 0x297
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptGetHashParam_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov edx, dword [ebp - 0x8d8]
call edx
sub esp, 4
mov dword [ebp - 0x8e0], eax
mov eax, 0x299
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptDestroyHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8004
mov eax, dword [0x42b014]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d4]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8e0], eax
mov eax, 0x29c
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptCreateHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 4], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x800
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov dword [ebp - 0x8e0], eax
mov eax, 0x29e
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8e0]
mov dword [esp], edx
call fcn.00401ac0
lea eax, [ebp - 0x8a0]
mov dword [ebp - 0x8b4], 0x14
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [esp + 8], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d0]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8d0], eax
mov eax, 0x2a1
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptGetHashParam_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8d0]
mov dword [esp], edx
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov edx, dword [ebp - 0x8d8]
call edx
sub esp, 4
mov dword [ebp - 0x8d0], eax
mov eax, 0x2a3
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptDestroyHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8d0]
mov dword [esp], edx
call fcn.00401ac0
lea edx, [ebp - 0x8c8]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], edx
mov dword [esp + 8], 0
mov dword [esp + 4], 0x8008
mov eax, dword [0x42b014]
mov dword [esp], eax
mov ecx, dword [ebp - 0x8d4]
call ecx
sub esp, 0x14
mov dword [ebp - 0x8d0], eax
mov eax, 0x2a6
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptCreateHash_failed_0x_08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8d0]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 4], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x800
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
sub esp, 0x10
mov ebx, eax
mov eax, 0x2a9
call fcn.00401310
mov edx, dword [esi + 0x34]
xor eax, eax
test ebx, ebx
jne 0x4105c6
mov eax, 1
cmp edx, 0x80090008
je 0x4105c6
mov ebx, dword [0x42b050]
cmp edx, 6
sete cl
xor eax, eax
test ebx, ebx
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str._08lx_n
mov esi, dword fs:[0x18]
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0x8dc]
mov dword [esp + 4], 2
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptSetHashParam]
sub esp, 0x10
mov ebx, eax
mov eax, 0x2ac
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x8bc]
mov dword [ebp - 0x8b4], 0x254
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x254
mov dword [esp + 4], 0x414cc0
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov ebx, eax
mov eax, 0x2af
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov edx, dword [sym.imp.advapi32.dll_CryptSignHashA]
mov dword [ebp - 0x8b4], 0
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov dword [ebp - 0x8cc], edx
call edx
sub esp, 0x18
mov ebx, eax
mov eax, 0x2b2
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], ebx
lea ebx, [ebp - 0x88c]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x2b3
call fcn.00401310
mov eax, dword [ebp - 0x8b4]
mov dword [esp + 4], str.expected_len_128__got__ld_n
cmp eax, 0x80
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov edx, dword [ebp - 0x8cc]
call edx
sub esp, 0x18
mov edi, eax
mov eax, 0x2b5
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x2b6
call fcn.00401310
mov eax, dword [ebp - 0x8b4]
mov dword [esp], ebx
mov dword [esp + 4], 0x418fc0
mov dword [esp + 8], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 4], str.unexpected_value_n
test eax, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
cmp dword [ebp - 0x8b4], 0x80
jne 0x4107f7
mov dword [esp + 8], pe_nt_image_headers32
mov dword [esp + 4], 0x418fc0
mov dword [esp], ebx
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x410896
mov dword [esp], 0x416079
mov esi, dword [sym.imp.msvcrt.dll_printf]
xor edi, edi
mov dword [esp + 4], str.expected
call esi
movzx eax, byte [edi + 0x418fc0]
add edi, 1
mov dword [esp], str.0x_02x_
mov dword [esp + 4], eax
call esi
cmp edi, 0x80
jne 0x410810
mov eax, dword [sym.imp.msvcrt.dll_putchar]
mov dword [esp], 0xa
mov dword [ebp - 0x8cc], eax
call eax
mov ecx, dword [ebp - 0x8b4]
mov dword [ebp - 0x8d0], ecx
mov dword [esp + 4], 0x417722
mov dword [esp], 0x416079
call esi
mov ecx, dword [ebp - 0x8d0]
test ecx, ecx
je 0x410887
mov edi, ebx
lea ebx, [ebx + ecx]
nop
movzx eax, byte [edi]
add edi, 1
mov dword [esp], str.0x_02x_
mov dword [esp + 4], eax
call esi
cmp edi, ebx
jne 0x410870
mov dword [esp], 0xa
mov eax, dword [ebp - 0x8cc]
call eax
mov eax, dword [ebp - 0x8bc]
mov esi, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
mov ebx, eax
mov eax, 0x2be
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str.CryptDestroyKey_failed_0x_08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d8]
call eax
sub esp, 4
mov ebx, eax
mov eax, 0x2c0
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str.CryptDestroyHash_failed_0x_08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x8c0]
mov dword [esp], eax
mov eax, dword [ebp - 0x8e4]
call eax
sub esp, 8
mov ebx, eax
mov eax, 0x2c2
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str.CryptReleaseContext_failed_0x_08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0xc], 0
lea edi, [ebp - 0x8b4]
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptHashData]
mov dword [ebp - 0x8cc], eax
call eax
sub esp, 0x10
mov esi, eax
mov eax, 0x1c3
call fcn.00401310
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x8d8], edx
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x8b8]
mov dword [ebp - 0x8b4], 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [ebp - 0x8e0], eax
mov dword [esp + 8], eax
mov dword [esp + 4], 4
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptGetHashParam]
mov dword [ebp - 0x8d0], eax
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x1c7
call fcn.00401310
mov eax, dword [ebp - 0x8b8]
mov dword [esp + 0xc], eax
mov edx, dword [ebp - 0x8d8]
cmp eax, 0x10
sete al
mov ecx, dword [edx + 0x34]
mov dword [esp + 4], str._08lx__hashlen:__ld_n
mov dword [esp + 8], ecx
xor ecx, ecx
test esi, esi
setne cl
and ecx, eax
mov dword [esp], ecx
call fcn.00401ac0
lea ecx, [ebp - 0x8b0]
mov dword [ebp - 0x8b4], 0x10
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], edi
mov dword [ebp - 0x8dc], ecx
mov dword [esp + 8], ecx
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8d0]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0x1cb
call fcn.00401310
mov edx, dword [ebp - 0x8d8]
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x1cd
call fcn.00401310
cmp dword [ebp - 0x8b0], 0x81bcb12
je 0x410c60
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.Wrong_MD2_hash__n
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDestroyHash]
mov dword [ebp - 0x8d8], eax
call eax
sub esp, 4
mov esi, eax
mov eax, 0x1d0
call fcn.00401310
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
jmp 0x40ef9a
cmp dword [ebp - 0x8ac], 0x2326f5f2
jne 0x40f1df
cmp dword [ebp - 0x8a8], 0x3692d279
jne 0x40f1df
xor eax, eax
cmp dword [ebp - 0x8a4], 0x81e3231b
jne 0x40f1df
jmp 0x40f1e4
cmp dword [ebp - 0x8ac], 0x4b2008f
jne 0x40f7a2
cmp dword [ebp - 0x8a8], 0x980980e9
jne 0x40f7a2
xor eax, eax
cmp dword [ebp - 0x8a4], 0x7e42f8ec
jne 0x40f7a2
jmp 0x40f7a7
cmp dword [ebp - 0x8ac], 0x4b2008f
jne 0x40f671
cmp dword [ebp - 0x8a8], 0x980980e9
jne 0x40f671
xor eax, eax
cmp dword [ebp - 0x8a4], 0x7e42f8ec
jne 0x40f671
jmp 0x40f676
cmp dword [ebp - 0x8ac], 0x4b2008f
jne 0x40f5dc
cmp dword [ebp - 0x8a8], 0x980980e9
jne 0x40f5dc
xor eax, eax
cmp dword [ebp - 0x8a4], 0x7e42f8ec
jne 0x40f5dc
jmp 0x40f5e1
cmp dword [ebp - 0x8ac], 0xdd34b36c
jne 0x40f483
cmp dword [ebp - 0x8a8], 0xc2b16c12
jne 0x40f483
xor eax, eax
cmp dword [ebp - 0x8a4], 0xf2e0197f
jne 0x40f483
jmp 0x40f488
cmp dword [ebp - 0x8ac], 0xa9a448c8
jne 0x410ac1
cmp dword [ebp - 0x8a8], 0x9ff1f3aa
jne 0x410ac1
xor eax, eax
cmp dword [ebp - 0x8a4], 0x682829fc
jne 0x410ac1
jmp 0x410ac6
mov eax, 0x1df
call fcn.00401310
mov dword [esp + 4], str.Failed_to_support_CRYPT_USERDATA_flag_n
xor eax, eax
mov edx, dword [0x42b050]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x800
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x8c8]
mov dword [esp], eax
mov eax, dword [ebp - 0x8cc]
call eax
mov dword [ebp - 0x8e4], 0
sub esp, 0x10
mov esi, eax
jmp 0x40f0ac
mov eax, 0x26b
call fcn.00401310
mov dword [esp], str.CryptDuplicateHash_is_not_available_n
call fcn.00404020
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret