Function at 0x410d20
Capabilities:
Access peb ldr_data
Create new key via cryptacquirecontext
Encrypt data using aes via winapi
Encrypt data using des via winapi
Encrypt data using rc4 via winapi
Encrypt or decrypt via wincrypt
Generate random numbers via winapi
Get ntdll base address
Get process heap flags
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
push ebp
mov eax, str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x78
mov dword [0x42b010], 0
lea esi, [esi]
nop
xor edx, edx
call fcn.0040a790
test eax, eax
je 0x411c6e
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1071
mov eax, dword [0x42b010]
mov dword [esp], str.Testing__s_n
mov eax, dword [eax*4 + 0x419230]
mov edi, dword fs:[0x18]
mov dword [esp + 4], eax
call fcn.00401440
lea eax, [ebp - 0x34]
mov dword [ebp - 0x34], 4
mov esi, dword [sym.imp.advapi32.dll_CryptGetProvParam]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x22
mov eax, dword [0x42b014]
mov dword [esp], eax
call esi
sub esp, 0x14
mov ebx, eax
test eax, eax
jne 0x410dd6
cmp dword [edi + 0x34], 0x8009000a
je 0x4120d0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x108
mov eax, dword [ebp - 0x20]
mov edx, dword fs:[0x18]
mov dword [esp + 0xc], eax
mov edx, dword [edx + 0x34]
test ebx, ebx
mov dword [esp + 4], str._08lx___ld_n
mov dword [esp + 8], edx
setne dl
cmp eax, 8
sete al
movzx eax, al
and eax, edx
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0x34]
mov dword [ebp - 0x34], 4
mov edi, dword fs:[0x18]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x23
mov eax, dword [0x42b014]
mov dword [esp], eax
call esi
sub esp, 0x14
mov ebx, eax
test eax, eax
jne 0x410e70
cmp dword [edi + 0x34], 0x8009000a
je 0x412100
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x110
mov eax, dword [ebp - 0x20]
mov edx, dword fs:[0x18]
mov dword [esp + 0xc], eax
mov edx, dword [edx + 0x34]
cmp eax, 8
mov dword [esp + 4], str._08lx___ld_n
mov dword [esp + 8], edx
sete dl
xor eax, eax
test ebx, ebx
setne al
and eax, edx
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0x34]
mov dword [ebp - 0x34], 0
mov esi, dword [sym.imp.advapi32.dll_CryptGenRandom]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x10
mov eax, dword [0x42b014]
mov dword [esp], eax
call esi
sub esp, 0xc
mov ebx, eax
test eax, eax
jne 0x410f29
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x80090020
je 0x410fdd
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x121
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp], ebx
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 4], 0x10
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call esi
sub esp, 0xc
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x124
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x126
lea eax, [ebp - 0x20]
mov dword [esp + 4], eax
lea eax, [ebp - 0x34]
mov dword [esp + 8], 0x10
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_memcmp]
mov dword [esp + 4], str.CryptGenRandom_generates_non_random_data_n
mov dword [esp], eax
call fcn.00401ac0
call fcn.0040eec0
call fcn.0040d640
call fcn.00401ae0
call fcn.0040aac0
cmp dword [0x42b010], 1
je 0x411888
call fcn.00407460
xor ecx, ecx
lea edx, [ebp - 0x4c]
mov eax, 0x6603
call fcn.00407220
test eax, eax
je 0x4117b9
xor eax, eax
lea esi, [esi]
mov byte [ebp + eax - 0x44], al
add eax, 1
cmp eax, 0x10
jne 0x411020
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 0xd
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x18], 0x10
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptEncrypt]
mov dword [ebp - 0x68], eax
call eax
sub esp, 0x1c
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x41d
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x41f
cmp dword [ebp - 0x44], 0xa2ddba7b
je 0x4128d0
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.3DES_encryption_failed__n
mov esi, 0x4190c0
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0x48]
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDecrypt]
mov dword [ebp - 0x58], eax
call eax
sub esp, 0x18
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x422
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [ebp - 0x50], 0
mov ecx, dword [esi + 0x20]
lea eax, [esi - 0x20]
mov dword [ebp - 0x5c], ecx
mov dword [esp + 4], eax
lea eax, [ebp - 0x44]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edi, dword [esi + 0x24]
mov ebx, dword [esi + 0x28]
lea eax, [ebp - 0x48]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x48], edi
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov eax, dword [ebp - 0x68]
call eax
sub esp, 0x1c
mov edi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov ecx, dword fs:[0x18]
mov dword [eax + 4], 0x42a
mov eax, dword [ecx + 0x34]
mov dword [ebp - 0x60], ecx
mov dword [esp + 8], eax
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x42b
mov eax, dword [ebp - 0x48]
mov dword [esp + 0xc], ebx
cmp eax, ebx
mov dword [esp + 8], eax
sete al
mov dword [esp + 4], str.length_incorrect__got__ld__expected__d_n
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
lea eax, [ebp - 0x44]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
lea eax, [ebp - 0x34]
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x48]
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
sub esp, 0x18
mov edi, eax
call fcn.00412e10
mov ecx, dword [ebp - 0x60]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x42f
mov eax, dword [ecx + 0x34]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
call fcn.00412e10
mov edi, dword [ebp - 0x54]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x430
mov eax, dword [ebp - 0x48]
mov dword [esp + 0xc], edi
cmp eax, edi
mov dword [esp + 8], eax
sete al
mov dword [esp + 4], str.length_incorrect__got__ld__expected__d_n
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x431
lea eax, [ebp - 0x44]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov ecx, dword [ebp - 0x50]
mov dword [esp + 4], str.decryption_incorrect__d_n
test eax, eax
sete al
mov dword [esp + 8], ecx
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
cmp edi, dword [ebp - 0x48]
jne 0x411330
lea eax, [ebp - 0x44]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x4113eb
mov dword [esp + 4], str.expected
mov dword [esp], 0x416079
call dword [sym.imp.msvcrt.dll_printf]
mov eax, dword [ebp - 0x5c]
lea ecx, [esi + eax]
test eax, eax
je 0x41137e
mov dword [ebp - 0x60], ebx
mov edi, ecx
mov ebx, esi
lea esi, [esi]
lea esi, [esi]
movzx eax, byte [ebx]
add ebx, 1
mov dword [esp], str.0x_02x_
mov dword [esp + 4], eax
call dword [sym.imp.msvcrt.dll_printf]
cmp edi, ebx
jne 0x411360
mov ebx, dword [ebp - 0x60]
mov dword [esp], 0xa
lea edi, [ebp - 0x44]
call dword [sym.imp.msvcrt.dll_putchar]
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x60], ecx
mov dword [esp + 4], 0x417722
mov dword [esp], 0x416079
call dword [sym.imp.msvcrt.dll_printf]
mov ecx, dword [ebp - 0x60]
mov eax, edi
add eax, ecx
test ecx, ecx
je 0x4113de
mov dword [ebp - 0x60], ebx
mov ebx, edi
mov edi, eax
lea esi, [esi]
nop
movzx eax, byte [ebx]
add ebx, 1
mov dword [esp], str.0x_02x_
mov dword [esp + 4], eax
call dword [sym.imp.msvcrt.dll_printf]
cmp edi, ebx
jne 0x4113c0
mov ebx, dword [ebp - 0x60]
mov dword [esp], 0xa
call dword [sym.imp.msvcrt.dll_putchar]
lea eax, [ebp - 0x34]
mov dword [ebp - 0x48], ebx
mov dword [esp + 4], eax
lea eax, [ebp - 0x44]
mov dword [esp + 8], ebx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x48]
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov edi, dword [ebp - 0x58]
call edi
sub esp, 0x18
mov dword [ebp - 0x64], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov edx, dword fs:[0x18]
mov dword [eax + 4], 0x442
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x60], edx
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
mov ecx, dword [ebp - 0x64]
mov dword [esp], ecx
call fcn.00401ac0
lea eax, [ebp - 0x34]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
lea eax, [ebp - 0x20]
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [ebp - 0x60]
lea eax, [ebp - 0x48]
not byte [ebp + ebx - 0x21]
mov dword [ebp - 0x64], edx
mov dword [edx + 0x34], 0xdeadbeef
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call edi
sub esp, 0x18
mov dword [ebp - 0x60], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x449
xor eax, eax
mov dword [esp + 4], str.CryptDecrypt_should_failed__n
mov ecx, dword [ebp - 0x60]
test ecx, ecx
sete al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov edx, dword [ebp - 0x64]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x44a
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edx + 0x34], 0x80090005
sete al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x44b
mov eax, dword [ebp - 0x48]
mov dword [esp + 0xc], ebx
cmp eax, ebx
mov dword [esp + 8], eax
sete al
mov dword [esp + 4], str.length_incorrect__got__ld__expected__d_n
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x44c
mov eax, dword [esi]
cmp dword [ebp - 0x44], eax
je 0x411ca8
mov eax, 1
mov ecx, dword [ebp - 0x50]
xor eax, 1
mov dword [esp + 4], str.decryption_incorrect__d_n
mov dword [esp], eax
mov dword [esp + 8], ecx
call fcn.00401ac0
lea eax, [ebp - 0x34]
mov dword [ebp - 0x48], ebx
mov dword [esp + 4], eax
lea eax, [ebp - 0x44]
mov dword [esp + 8], ebx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x48]
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], eax
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
mov eax, dword [ebp - 0x58]
call eax
sub esp, 0x18
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x452
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00401ac0
call fcn.00412e10
mov ecx, dword [ebp - 0x54]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x453
mov eax, dword [ebp - 0x48]
mov dword [esp + 0xc], ecx
cmp eax, ecx
mov dword [esp + 8], eax
sete al
mov dword [esp + 4], str.length_incorrect__got__ld__expected__d_n
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x454
mov eax, dword [esi]
cmp dword [ebp - 0x44], eax
je 0x411c90
mov eax, 1
mov edx, dword [ebp - 0x50]
xor eax, 1
mov dword [esp + 4], str.decryption_incorrect__d_n
mov dword [esp], eax
mov dword [esp + 8], edx
call fcn.00401ac0
mov eax, dword [ebp - 0x54]
cmp eax, dword [ebp - 0x48]
jne 0x4116b6
mov dword [esp + 8], eax
lea eax, [ebp - 0x44]
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x411766
mov dword [esp + 4], str.expected
mov ebx, dword [sym.imp.msvcrt.dll_printf]
mov dword [esp], 0x416079
call ebx
mov eax, dword [ebp - 0x5c]
lea edx, [esi + eax]
test eax, eax
je 0x4116fa
mov dword [ebp - 0x54], esi
mov edi, edx
lea esi, [esi]
movzx eax, byte [esi]
add esi, 1
mov dword [esp], str.0x_02x_
mov dword [esp + 4], eax
call ebx
cmp esi, edi
jne 0x4116e0
mov esi, dword [ebp - 0x54]
mov eax, dword [sym.imp.msvcrt.dll_putchar]
mov dword [esp], 0xa
lea edi, [ebp - 0x44]
mov dword [ebp - 0x54], eax
call eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x5c], ecx
mov dword [esp + 4], 0x417722
mov dword [esp], 0x416079
call ebx
mov ecx, dword [ebp - 0x5c]
mov eax, edi
add eax, ecx
test ecx, ecx
je 0x41175a
mov dword [ebp - 0x5c], esi
mov esi, edi
mov edi, ebx
mov ebx, eax
lea esi, [esi]
movzx eax, byte [esi]
add esi, 1
mov dword [esp], str.0x_02x_
mov dword [esp + 4], eax
call edi
cmp esi, ebx
jne 0x411740
mov esi, dword [ebp - 0x5c]
mov dword [esp], 0xa
mov eax, dword [ebp - 0x54]
call eax
add dword [ebp - 0x50], 1
mov eax, dword [ebp - 0x50]
add esi, 0x4c
cmp eax, 4
jne 0x411152
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x45d
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, dword [0x42b010]
test eax, eax
jne 0x411888
lea eax, [ebp - 0x34]
mov dword [ebp - 0x48], 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
test eax, eax
je 0x412888
lea eax, [ebp - 0x20]
mov dword [ebp - 0x48], 0x94
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x34]
mov dword [esp + 8], 0x94
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x414ae0
mov eax, dword [0x42b014]
mov esi, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7c8
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.00401ac0
test ebx, ebx
jne 0x412128
lea esi, [esi]
call fcn.00408640
call fcn.00407ce0
call fcn.0040e450
call fcn.00406760
call fcn.0040b650
call fcn.00404050
mov dword [ebp - 0x54], 0x418b40
mov dword [ebp - 0x50], 0
jmp 0x411938
mov esi, dword [0x42b050]
test esi, esi
jne 0x411c18
cmp eax, 0x80090009
jne 0x411c18
mov dword [esp + 0xc], 0x80090009
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], str.CryptImportKey_failed_on_test_case__ld:__08lx_n
mov dword [esp + 8], eax
mov dword [esp], 1
call fcn.00401ac0
lea esi, [esi]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
add dword [ebp - 0x50], 1
mov eax, dword [ebp - 0x50]
add dword [ebp - 0x54], 0x14
cmp eax, 7
je 0x411c40
mov eax, dword [ebp - 0x54]
mov esi, dword fs:[0x18]
mov ecx, dword [eax + 4]
lea edi, [ecx + 0xc]
mov dword [ebp - 0x58], ecx
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
sub esp, 0xc
mov ebx, eax
test eax, eax
je 0x411924
mov edx, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x58]
mov dword [eax], 0x208
lea eax, [eax + 0xc]
mov dword [eax - 8], 0x6602
mov edx, dword [edx]
mov dword [eax - 4], ecx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
lea eax, [ebp - 0x4c]
mov dword [esp + 8], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0x100
mov dword [esp + 0xc], 0
mov dword [esp + 4], ebx
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov edi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xb22
mov eax, dword [esi + 0x34]
test edi, edi
je 0x4118c0
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], str.CryptImportKey_failed_on_test_case__ld:__08lx_n
mov dword [esp + 8], eax
mov dword [esp], 1
call fcn.00401ac0
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x34], 0x8004
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], 0
mov eax, dword [ebp - 0x4c]
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 dword [eax + 4], 0xb2b
mov eax, dword [esi + 0x34]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str.CryptCreateHash_failed_on_test_case__ld:__08lx_n
call fcn.00401ac0
lea edx, [ebp - 0x34]
mov dword [esp + 0xc], 0
mov dword [esp + 8], edx
mov dword [esp + 4], 5
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptSetHashParam]
sub esp, 0x10
mov edi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xb2d
mov eax, dword [esi + 0x34]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str.CryptSetHashParam_failed_on_test_case__ld:__08lx_n
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + 0xc]
mov dword [esp + 8], eax
mov eax, dword [ecx + 8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptHashData]
sub esp, 0x10
mov edi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xb2f
mov eax, dword [esi + 0x34]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str.CryptHashData_failed_on_test_case__ld:__08lx_n
call fcn.00401ac0
lea edx, [ebp - 0x44]
mov dword [ebp - 0x44], 0x14
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x20]
mov dword [esp + 8], edx
mov dword [esp + 0x10], 0
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov edi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xb32
mov eax, dword [esi + 0x34]
mov dword [esp + 0xc], eax
mov esi, dword [ebp - 0x50]
mov dword [esp + 4], str.CryptGetHashParam_failed_on_test_case__ld:__08lx_n
mov dword [esp + 8], esi
mov dword [esp], edi
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xb33
mov dword [esp + 8], 0x14
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + 0x10]
mov dword [esp + 4], eax
lea eax, [ebp - 0x20]
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
mov dword [esp + 8], esi
test eax, eax
mov dword [esp + 4], str.Unexpected_value_on_test_case__ld_n
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x4c]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
jmp 0x411900
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], str.CryptImportKey_failed_on_test_case__ld:__08lx_n
mov dword [esp + 8], eax
mov dword [esp], 0
call fcn.00401ac0
jmp 0x411900
call fcn.00403610
mov eax, dword [0x42b010]
cmp eax, 1
je 0x411c64
cmp eax, 2
mov edx, str.STRONG
mov eax, 0x41827e
cmove eax, edx
call fcn.00403970
call fcn.00405930
call fcn.00403830
mov eax, dword [0x42b010]
add eax, 1
mov dword [0x42b010], eax
cmp eax, 2
ja 0x411cc0
mov eax, dword [eax*4 + 0x419230]
jmp 0x410d40
mov eax, dword [esi + 4]
cmp dword [ebp - 0x40], eax
jne 0x411674
xor eax, eax
jmp 0x411679
mov eax, dword [esi + 4]
cmp dword [ebp - 0x40], eax
jne 0x411582
xor eax, eax
jmp 0x411587
xor eax, eax
mov edx, 1
call fcn.0040a790
test eax, eax
jne 0x412410
mov dword [esp + 0x10], 0
mov ebx, dword [sym.imp.advapi32.dll_CryptAcquireContextA]
mov dword [esp + 0xc], 1
mov eax, dword [0x42b00c]
mov dword [esp + 4], str.winetest
mov dword [esp + 8], eax
lea eax, [ebp - 0x4c]
mov dword [esp], eax
call ebx
sub esp, 0x14
test eax, eax
je 0x412900
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x254
mov dword [esp + 4], 0x414cc0
mov eax, dword [ebp - 0x4c]
mov edi, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdf2
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str.CryptImportKey_failed:__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x34]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov eax, dword [ebp - 0x44]
mov dword [esp + 8], 0x94
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x414780
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdf6
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str.CryptImportKey_failed:__08lx_n
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 1
mov eax, dword [0x42b00c]
mov dword [esp + 4], str.winetest
mov dword [esp + 8], eax
lea eax, [ebp - 0x48]
mov dword [esp], eax
call ebx
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdfc
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str.CryptAcquireContextA_failed:__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetUserKey]
sub esp, 0xc
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdfe
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.CryptGetUserKey_failed:__08lx_n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00401ac0
test esi, esi
jne 0x412984
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x48]
mov esi, dword [sym.imp.advapi32.dll_CryptReleaseContext]
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x34]
sub esp, 8
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov eax, dword [ebp - 0x44]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call esi
lea eax, [ebp - 0x4c]
sub esp, 8
mov dword [esp + 0x10], 0x10
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0
mov dword [esp + 4], str.winetest
mov dword [esp], eax
call ebx
sub esp, 0x14
call fcn.00404bc0
call fcn.00408fd0
call fcn.004089c0
mov dword [esp], str.advapi32.dll
call dword [sym.imp.kernel32.dll_GetModuleHandleA]
sub esp, 4
mov dword [esp + 4], str.CryptDuplicateHash
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
mov dword [0x42b014], 0xffffffff
sub esp, 8
mov dword [0x42b000], eax
mov dword [esp + 0x10], 0xf0000000
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], str.winetest
mov dword [esp], 0x42b014
call ebx
sub esp, 0x14
mov edi, eax
test eax, eax
jne 0x412962
mov edx, dword fs:[0x18]
cmp dword [edx + 0x34], 0x80090017
je 0x412d15
mov dword [ebp - 0x50], edx
call fcn.00412e10
mov edx, dword [ebp - 0x50]
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xd3
mov eax, dword [edx + 0x34]
xor edx, edx
cmp eax, 0x80090009
sete dl
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str._d___08lx_n
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], str.winetest
mov dword [esp], 0x42b014
call ebx
sub esp, 0x14
mov edi, eax
test eax, eax
je 0x412998
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x1095
mov dword [esp], str.Testing_AES_provider._n
call fcn.00401440
mov eax, pe_nt_image_headers32
call fcn.0040cb00
mov eax, 0xc0
call fcn.0040cb00
mov eax, 0x100
call fcn.0040cb00
call fcn.0040c3c0
mov eax, 0x41855d
call fcn.00403970
call fcn.00405930
mov dword [esp + 4], 1
mov eax, dword [0x42b014]
mov dword [esp], eax
call esi
sub esp, 8
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xf5
xor eax, eax
mov edx, dword fs:[0x18]
mov ecx, dword [edx + 0x34]
test esi, esi
je 0x412400
mov dword [esp + 8], ecx
mov dword [esp + 4], str._08lx_n
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0x10
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], str.winetest
mov dword [esp], 0x42b014
call ebx
sub esp, 0x14
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x104
mov dword [esp], str.PP_SIG_KEYSIZE_INC_is_not_supported__win9x_or_NT__n
call fcn.00401430
add dword [0x42b004], 1
jmp 0x410e1d
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x10e
mov dword [esp], str.PP_KEYX_KEYSIZE_INC_is_not_supported__win9x_or_NT__n
call fcn.00401430
jmp 0x410eb6
lea eax, [ebp - 0x48]
mov dword [ebp - 0x44], 0xdeadbeef
mov dword [ebp - 0x48], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x44]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetKeyParam]
sub esp, 0x14
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7ce
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7cf
mov edx, dword [ebp - 0x44]
mov eax, 1
cmp edx, 0x3b
je 0x4121c2
mov edi, dword [0x42b050]
test edi, edi
sete cl
xor eax, eax
cmp edx, 0xffffffff
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.expected_CRYPT_MACCRYPT_WRITECRYPT_READCRYPT_DECRYPTCRYPT_ENCRYPT__got__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 0xc
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0x414ad4
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDecrypt]
sub esp, 0x18
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7d7
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7d8
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], str.expected_12__got__ld_n
cmp eax, 0xc
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], 0x7d9
cmp dword [0x414ad4], 0x656e6957
je 0x412cee
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.decrypt_failed_n
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov ecx, 0x38
lea edx, [ebp - 0x20]
mov eax, 0x6801
sub esp, 4
call fcn.00407220
test eax, eax
je 0x411888
lea eax, [ebp - 0x48]
mov dword [ebp - 0x48], 0x94
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0x414ae0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x34]
mov ebx, dword fs:[0x18]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptExportKey]
sub esp, 0x18
mov esi, eax
mov eax, 0x7e0
call fcn.00401310
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
test esi, esi
je 0x411888
lea eax, [ebp - 0x20]
mov dword [ebp - 0x48], 0x94
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x34]
mov dword [esp + 8], 0x94
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x414ae0
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov esi, eax
mov eax, 0x7e6
call fcn.00401310
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
test esi, esi
je 0x411888
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov eax, dword [ebp - 0x34]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov eax, dword [0x414ccc]
sub esp, 4
shr eax, 1
add eax, 0x14
mov dword [ebp - 0x48], eax
cmp eax, 0x253
jbe 0x412c74
jmp 0x411888
xor eax, eax
cmp ecx, 0x80090009
sete al
jmp 0x41207f
lea eax, [ebp - 0x48]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov esi, dword fs:[0x18]
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], 0xd8c
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.00401ac0
test ebx, ebx
je 0x411cd4
lea eax, [ebp - 0x20]
mov dword [ebp - 0x34], 0xdeadbeef
mov dword [ebp - 0x20], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x34]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptGetKeyParam]
mov dword [ebp - 0x50], eax
call eax
sub esp, 0x14
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xd92
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov dword [esp], ebx
call fcn.00401ac0
mov eax, 0xd93
call fcn.00401310
mov edx, dword [ebp - 0x34]
mov eax, 1
cmp edx, 0x3f
je 0x412500
mov ecx, dword [0x42b050]
test ecx, ecx
sete cl
xor eax, eax
cmp edx, 0xffffffff
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.expected_CRYPT_MACCRYPT_WRITECRYPT_READCRYPT_EXPORTCRYPT_DECRYPTCRYPT_ENCRYPT__got__08lx_n
mov ebx, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov edi, dword [sym.imp.advapi32.dll_CryptExportKey]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 6
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call edi
sub esp, 0x18
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xd9b
mov eax, dword [ebx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call edi
sub esp, 0x18
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xd9e
mov eax, dword [ebx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x34]
and dword [ebp - 0x34], 0xfffffffb
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptSetKeyParam]
sub esp, 0x10
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xda2
mov eax, 1
mov edx, dword [ebx + 0x34]
test esi, esi
jne 0x412650
mov ecx, dword [0x42b050]
cmp edx, 0x80090005
je 0x412d30
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x80090009
sete bl
xor eax, eax
test ecx, ecx
sete al
and eax, ebx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [ebp - 0x34], 0xdeadbeef
mov dword [ebp - 0x20], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x34]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
sub esp, 0x14
mov ebx, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdaa
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0xdab
call fcn.00401310
mov edx, dword [ebp - 0x34]
mov eax, 1
cmp edx, 0x3f
je 0x4126fa
mov eax, dword [0x42b050]
test eax, eax
sete cl
xor eax, eax
cmp edx, 0xffffffff
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.expected_CRYPT_MACCRYPT_WRITECRYPT_READCRYPT_EXPORTCRYPT_DECRYPTCRYPT_ENCRYPT__got__08lx_n
mov ebx, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 7
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call edi
sub esp, 0x18
mov esi, eax
mov eax, 0xdb4
call fcn.00401310
mov eax, dword [ebx + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x44]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetUserKey]
sub esp, 0xc
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdb7
mov eax, dword [ebx + 0x34]
mov dword [esp], esi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [ebp - 0x34], 0xdeadbeef
mov dword [ebp - 0x20], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x34]
mov dword [esp + 0x10], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x44]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
sub esp, 0x14
mov esi, eax
mov eax, 0xdbf
call fcn.00401310
mov eax, dword [ebx + 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], 0xdc0
mov edx, dword [ebp - 0x34]
mov eax, 1
cmp edx, 0x3f
je 0x412845
mov eax, dword [0x42b050]
test eax, eax
sete cl
xor eax, eax
cmp edx, 0xffffffff
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.expected_CRYPT_MACCRYPT_WRITECRYPT_READCRYPT_EXPORTCRYPT_DECRYPTCRYPT_ENCRYPT__got__08lx_n
call fcn.00401ac0
mov eax, dword [ebp - 0x44]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov eax, dword [ebp - 0x48]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
call fcn.00403830
jmp 0x411cd4
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7c2
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], 0x80090020
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
jmp 0x411888
cmp dword [ebp - 0x40], 0xb37bd339
jne 0x4110c4
cmp dword [ebp - 0x3c], 0x418151c7
jne 0x4110c4
xor eax, eax
cmp dword [ebp - 0x38], 0xebcfe853
jne 0x4110c4
jmp 0x4110c9
mov dword [esp + 0x10], 8
mov dword [esp + 0xc], 1
mov eax, dword [0x42b00c]
mov dword [esp + 4], str.winetest
mov dword [esp + 8], eax
lea eax, [ebp - 0x4c]
mov dword [esp], eax
call ebx
sub esp, 0x14
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xdee
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str.CryptAcquireContextA_failed:__08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
jmp 0x411d0e
call fcn.00412e10
xor edx, edx
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xd3
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
jmp 0x411fa4
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
jmp 0x411e7e
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0xd7
mov ecx, dword fs:[0x18]
mov eax, dword [ecx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
cmp dword [ecx + 0x34], 0x80090016
sete al
mov dword [ebp - 0x50], ecx
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov ecx, dword [ebp - 0x50]
cmp dword [ecx + 0x34], 0x80090016
jne 0x4120bf
mov dword [ebp - 0x54], ecx
mov dword [esp + 0x10], 8
mov dword [esp + 0xc], 0x18
mov dword [esp + 8], 0
mov dword [esp + 4], str.winetest
mov dword [esp], 0x42b014
call ebx
sub esp, 0x14
mov dword [ebp - 0x50], eax
mov eax, 0xdb
call fcn.00401310
mov ecx, dword [ebp - 0x54]
mov eax, dword [ecx + 0x34]
mov dword [ebp - 0x58], ecx
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x50]
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x50]
test eax, eax
je 0x4120bf
lea eax, [ebp - 0x20]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptGenKey]
mov dword [ebp - 0x50], eax
call eax
sub esp, 0x10
mov dword [ebp - 0x54], eax
mov eax, 0xde
call fcn.00401310
mov ecx, dword [ebp - 0x58]
mov eax, dword [ecx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x54]
test eax, eax
jne 0x412d51
lea eax, [ebp - 0x20]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 2
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
sub esp, 0x10
mov dword [ebp - 0x54], eax
mov eax, 0xe1
call fcn.00401310
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x54]
test eax, eax
jne 0x412d3d
lea eax, [ebp - 0x20]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x6611
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
mov dword [ebp - 0x54], eax
sub esp, 0x10
mov eax, 0xe6
call fcn.00401310
xor eax, eax
mov ecx, dword fs:[0x18]
mov edx, dword [ecx + 0x34]
mov ecx, dword [ebp - 0x54]
test ecx, ecx
jne 0x412b61
xor eax, eax
cmp edx, 0x80090008
sete al
mov dword [esp + 0xc], edx
mov ecx, dword [ebp - 0x54]
mov dword [esp], eax
mov dword [esp + 8], ecx
mov dword [esp + 4], str._d__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 8], 0x800000
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x6611
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
mov dword [ebp - 0x54], eax
sub esp, 0x10
mov eax, 0xe8
call fcn.00401310
mov edx, dword [ebp - 0x54]
mov eax, dword fs:[0x18]
mov ecx, dword [eax + 0x34]
test edx, edx
jne 0x412bcd
xor eax, eax
cmp ecx, 0x80090008
sete al
mov edi, eax
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp], edi
mov dword [esp + 4], str._d__08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x20]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 0x660e
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x50]
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0xea
call fcn.00401310
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.00401ac0
test edi, edi
je 0x411ff2
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
jmp 0x411ff2
mov eax, dword [ebp - 0x34]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
mov eax, dword [ebp - 0x48]
add eax, 1
mov dword [ebp - 0x48], eax
cmp eax, 0x253
ja 0x411888
lea ecx, [ebp - 0x34]
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x414cc0
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptImportKey]
sub esp, 0x18
mov esi, eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x7f4
mov eax, dword [ebx + 0x34]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x34]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], str.CryptImportKey_failed_at_size__ld:__ld___08lx__n
mov dword [esp + 8], eax
mov dword [esp], esi
call fcn.00401ac0
test esi, esi
je 0x412c60
jmp 0x412c51
cmp dword [0x414ad8], 0x636f7220
jne 0x412298
xor eax, eax
cmp dword [0x414adc], 0x21736b
jne 0x412298
jmp 0x41229d
mov eax, 0xd0
call fcn.00401310
mov dword [esp], str.RSA_AES_provider_not_supported_n
call fcn.00404020
jmp 0x4120bf
test ecx, ecx
je 0x412650
jmp 0x412637
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
jmp 0x412b0f
mov eax, dword [ebp - 0x20]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
jmp 0x412ab0