Function at 0x401ae0
Capabilities:
Encrypt or decrypt 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 - 0x7dc]
sub esp, 0x944
lea esi, [esi]
mov byte [ebx + eax], al
add eax, 1
cmp eax, 0x7d0
jne 0x401af8
lea eax, [ebp - 0x910]
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 - 0x924], eax
call eax
sub esp, 0x14
test eax, eax
jne 0x401c06
mov eax, 0x570
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
xor eax, eax
lea esi, [esi]
mov byte [ebx + eax], al
add eax, 1
cmp eax, 0x7d0
jne 0x401b80
lea eax, [ebp - 0x910]
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 [ebp - 0x924]
call eax
sub esp, 0x14
test eax, eax
jne 0x402864
mov eax, 0x5f3
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
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x7d0
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x910]
mov edi, dword fs:[0x18]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptHashData]
sub esp, 0x10
mov esi, eax
mov eax, 0x575
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x908]
mov dword [ebp - 0x908], 0x10
mov dword [esp + 0x10], 0
mov dword [ebp - 0x918], eax
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x8ec]
mov dword [esp + 8], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x910]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov esi, eax
mov eax, 0x579
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x90c]
mov dword [esp + 0xc], 0x280000
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x910]
mov dword [esp + 4], 0x6602
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDeriveKey]
sub esp, 0x14
mov esi, eax
mov eax, 0x57c
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov edx, dword [sym.imp.advapi32.dll_CryptGetKeyParam]
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 4], 9
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x904]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov dword [ebp - 0x91c], edx
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x580
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
lea esi, [ebp - 0x8fc]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [ebp - 0x8fc], 0xdeadbeef
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 4
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x586
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
lea esi, [ebp - 0x8fc]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x587
call fcn.00401310
mov dword [esp + 4], str.Wrong_default_chaining_mode_n
xor eax, eax
cmp dword [ebp - 0x8fc], 1
sete al
mov dword [esp], eax
call fcn.00401ac0
mov dword [ebp - 0x8fc], 1
mov dword [esp + 8], esi
mov esi, dword [sym.imp.advapi32.dll_CryptSetKeyParam]
mov dword [esp + 0xc], 0
mov dword [esp + 4], 4
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov dword [ebp - 0x920], esi
call esi
sub esp, 0x10
mov esi, eax
mov eax, 0x58b
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
lea esi, [ebp - 0x8f8]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 5
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x914], eax
mov eax, 0x58f
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x914]
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8f8], 0xdeadbeef
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x914], eax
mov eax, 0x594
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x914]
mov dword [esp], edx
call fcn.00401ac0
mov eax, 0x595
call fcn.00401310
mov edx, dword [ebp - 0x8f8]
mov eax, 1
cmp edx, 0x3b
je 0x401f88
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_DECRYPTCRYPT_ENCRYPT__got__08lx_n
mov edi, dword fs:[0x18]
call fcn.00401ac0
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 6
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x914], eax
mov eax, 0x59d
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x914]
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 8
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x5a1
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x5a2
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov dword [esp + 4], str.Expected_4__got__ld_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov dword [ebp - 0x908], 0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x5a6
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
lea esi, [ebp - 0x8dc]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x914], eax
mov eax, 0x5a8
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x914]
mov dword [esp], edx
call fcn.00401ac0
mov eax, 0x5a9
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov dword [esp + 4], str.Expected_8__got__ld_n
cmp eax, 8
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov dword [ebp - 0x908], 0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x914], eax
mov eax, 0x5ad
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x914]
mov dword [esp], edx
call fcn.00401ac0
mov eax, 0x5af
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov dword [esp + 4], str.unexpected_salt_length__ld_n
cmp eax, 0xb
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x914], eax
mov eax, 0x5b2
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x914]
mov dword [esp], edx
call fcn.00401ac0
mov edi, dword [ebp - 0x908]
test edi, edi
je 0x4022d9
xor edi, edi
lea esi, [esi]
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x5b4
movzx edx, byte [esi + edi]
mov dword [esp + 0xc], edi
test dl, dl
mov dword [esp + 8], edx
sete al
mov dword [esp + 4], str.unexpected_salt_value__02x____d_n
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
cmp edi, dword [ebp - 0x908]
jb 0x402298
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 4], 4
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x8fc]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x91c]
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x5b8
call fcn.00401310
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x914], edx
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov eax, 0x5b9
call fcn.00401310
mov eax, dword [ebp - 0x8fc]
mov dword [esp + 4], str.Expected_CRYPT_MODE_CBC__got__ld_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x910]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyHash]
sub esp, 4
mov edi, eax
mov eax, 0x5bc
call fcn.00401310
mov edx, dword [ebp - 0x914]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x928], edx
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
lea eax, [ebp - 0x900]
mov dword [ebp - 0x900], 0xd
mov dword [esp + 0x18], 0x18
mov dword [ebp - 0x914], eax
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 - 0x90c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptEncrypt]
sub esp, 0x1c
mov edi, eax
mov eax, 0x5c0
call fcn.00401310
mov edx, dword [ebp - 0x928]
mov eax, dword [edx + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x5c2
call fcn.00401310
cmp dword [ebp - 0x7dc], 0x2fe49ac0
je 0x403450
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.RC2_encryption_failed__n
mov dword [esp], eax
mov edi, dword fs:[0x18]
call fcn.00401ac0
mov dword [ebp - 0x908], 0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov dword [ebp - 0x928], eax
mov eax, 0x5c6
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x928]
mov dword [esp], edx
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x5c8
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov esi, dword [ebp - 0x914]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], esi
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDecrypt]
sub esp, 0x18
mov esi, eax
mov eax, 0x5cb
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebx
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov esi, dword [ebp - 0x920]
call esi
sub esp, 0x10
mov esi, eax
mov eax, 0x5cf
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str.setting_salt_failed:__08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [ebp - 0x908], 0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x5d2
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, dword [0x42b010]
sub eax, 1
cmp eax, 1
jbe 0x40341e
mov eax, 0x5d6
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov edx, 1
test eax, eax
jne 0x40356b
mov dword [esp + 8], eax
mov dword [esp + 4], str.expected_salt_length_0__got__ld_n
mov dword [esp], edx
call fcn.00401ac0
mov dword [ebp - 0x8f0], ebx
xor edi, edi
mov esi, dword fs:[0x18]
lea esi, [esi]
nop
lea eax, [ebp - 0x8f4]
mov dword [ebp - 0x8f4], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0xa
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 0x10
mov dword [ebp - 0x914], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x5dd
mov eax, dword [esi + 0x34]
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str.setting_salt_failed_for_size__d:__08lx_n
mov ecx, dword [ebp - 0x914]
mov dword [esp], ecx
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x91c]
call eax
sub esp, 0x14
mov dword [ebp - 0x914], eax
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x5e0
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x914]
mov dword [esp], ecx
call fcn.00401ac0
call fcn.00412e10
mov dword [eax], 0x41605d
mov dword [eax + 4], 0x5e1
mov eax, dword [ebp - 0x908]
mov dword [esp + 8], edi
cmp eax, edi
mov dword [esp + 0xc], eax
sete al
mov dword [esp + 4], str.size__d:_unexpected_salt_length__ld_n
add edi, 1
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
cmp edi, 0x18
jne 0x402690
lea eax, [ebp - 0x8f4]
mov dword [esi + 0x34], 0xdeadbeef
mov dword [ebp - 0x8f4], 0x19
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0xa
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0x5e6
call fcn.00401310
mov edx, dword [esi + 0x34]
mov eax, 1
test edi, edi
je 0x402810
mov edi, dword [0x42b050]
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str._08lx_n
call fcn.00401ac0
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptDestroyKey]
sub esp, 4
mov esi, eax
mov eax, 0x5eb
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 0x401b7b
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x7d0
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x910]
mov esi, dword fs:[0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptHashData]
mov dword [ebp - 0x92c], eax
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0x5f6
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x908]
mov dword [ebp - 0x908], 0x10
mov dword [esp + 0x10], 0
mov dword [ebp - 0x918], eax
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x8ec]
mov dword [esp + 8], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x910]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_CryptGetHashParam]
sub esp, 0x14
mov edi, eax
mov eax, 0x5fa
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x90c]
mov dword [esp + 0xc], 0x380000
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x910]
mov dword [esp + 4], 0x6602
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDeriveKey]
mov dword [ebp - 0x934], eax
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x5fd
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x13
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptSetKeyParam]
mov dword [ebp - 0x920], eax
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0x601
call fcn.00401310
mov edx, dword [esi + 0x34]
xor eax, eax
test edi, edi
jne 0x4029d8
xor eax, eax
cmp edx, 0x57
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str._08lx_n
mov edi, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0x904]
mov dword [ebp - 0x904], 0
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x13
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 0x10
mov esi, eax
mov eax, 0x605
call fcn.00401310
mov edx, dword [edi + 0x34]
xor eax, eax
test esi, esi
jne 0x402a52
xor eax, eax
cmp edx, 0x80090005
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str._08lx_n
mov esi, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0x904]
mov dword [ebp - 0x904], 0x401
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x13
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0x609
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.CryptSetKeyParam_failed:__08lx_n
mov dword [esp + 8], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.00401ac0
lea ecx, [ebp - 0x904]
mov dword [ebp - 0x908], 4
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 9
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptGetKeyParam]
mov dword [ebp - 0x91c], eax
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x60d
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x60e
call fcn.00401310
mov eax, dword [ebp - 0x904]
mov edx, dword [esi + 0x34]
mov dword [esp + 4], str._ld___08lx__n
cmp eax, 0x38
mov dword [esp + 8], eax
sete al
mov dword [esp + 0xc], edx
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov edx, dword [ebp - 0x918]
mov dword [esp + 4], 0x13
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x904]
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x91c]
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x610
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, 0x611
call fcn.00401310
mov edx, dword [ebp - 0x904]
mov ecx, dword [esi + 0x34]
mov eax, 1
cmp edx, 0x38
je 0x402c03
mov esi, dword [0x42b050]
test esi, esi
sete al
mov esi, eax
xor eax, eax
cmp edx, 0x28
sete al
and eax, esi
mov dword [esp], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 8], edx
mov dword [esp + 4], str._ld___08lx__n
mov esi, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0x904]
mov dword [ebp - 0x904], pe_nt_image_headers32
mov dword [esi + 0x34], 0xdeadbeef
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x13
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 0x10
cmp dword [0x42b010], 1
mov edi, eax
je 0x403490
mov dword [ebp - 0x904], 0x3039
mov eax, 0x619
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str.expected_success__got_error_0x_08lX_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 4], 0x13
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x904]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x91c]
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x61b
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, 0x61c
call fcn.00401310
mov eax, dword [ebp - 0x904]
mov dword [esp + 4], str.Expected_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 [ebp - 0x908], 4
lea edx, [ebp - 0x904]
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 9
mov eax, dword [ebp - 0x90c]
mov esi, dword fs:[0x18]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov edi, eax
mov eax, 0x629
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x62a
call fcn.00401310
mov eax, dword [ebp - 0x904]
mov edx, dword [esi + 0x34]
mov dword [esp + 4], str._ld___08lx__n
cmp eax, 0x38
mov dword [esp + 8], eax
sete al
mov dword [esp + 0xc], edx
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 4], 0x13
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x904]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov edi, eax
mov eax, 0x62c
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, 0x62d
call fcn.00401310
cmp dword [0x42b010], 1
mov edx, dword [esi + 0x34]
mov eax, dword [ebp - 0x904]
je 0x4035d0
xor ecx, ecx
cmp eax, 0x80
sete cl
mov dword [esp + 0xc], edx
mov dword [esp], ecx
mov dword [esp + 8], eax
mov dword [esp + 4], str._ld___08lx__n
mov edi, dword fs:[0x18]
call fcn.00401ac0
mov eax, dword [ebp - 0x910]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDestroyHash]
mov dword [ebp - 0x930], eax
call eax
sub esp, 4
mov esi, eax
mov eax, 0x631
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp], esi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x900]
mov dword [ebp - 0x900], 0xd
mov dword [esp + 0x18], 0x18
mov dword [ebp - 0x914], eax
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 - 0x90c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptEncrypt]
mov dword [ebp - 0x928], eax
call eax
sub esp, 0x1c
mov esi, eax
mov eax, 0x635
call fcn.00401310
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str._08lx_n
mov dword [esp], esi
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, 0x636
call fcn.00401310
mov edx, 0x418f6c
mov eax, 0x418f5c
cmp dword [0x42b010], 1
cmovne eax, edx
mov edx, dword [eax]
cmp dword [ebp - 0x7dc], edx
je 0x403598
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.RC2_encryption_failed__n
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.00401ac0
lea eax, [ebp - 0x904]
mov dword [ebp - 0x904], 0x28
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
mov dword [esp + 4], 0x13
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0x63c
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._ld_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [sym.imp.advapi32.dll_CryptDestroyKey]
mov dword [ebp - 0x920], eax
call eax
sub esp, 4
mov edi, eax
mov eax, 0x63f
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x910]
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 - 0x924]
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x643
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x7d0
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x910]
mov dword [esp], eax
mov eax, dword [ebp - 0x92c]
call eax
sub esp, 0x10
mov edi, eax
mov eax, 0x646
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp], edi
mov dword [esp + 4], str._08lx_n
mov dword [esp + 8], eax
call fcn.00401ac0
lea eax, [ebp - 0x90c]
mov dword [esp + 0xc], 0x280004
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x910]
mov dword [esp + 4], 0x6602
mov dword [esp + 8], eax
mov eax, dword [0x42b014]
mov dword [esp], eax
mov eax, dword [ebp - 0x934]
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x649
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 dword [esi + 0x34], 0xdeadbeef
mov dword [ebp - 0x900], 0x10
mov dword [ebp - 0x7dc], 0xafafafaf
mov dword [ebp - 0x7d8], 0xafafafaf
mov dword [ebp - 0x7d4], 0xafafafaf
mov dword [ebp - 0x7d0], 0xafafafaf
mov dword [esp + 0x18], 0x18
mov eax, dword [ebp - 0x914]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x928]
call eax
sub esp, 0x1c
test eax, eax
je 0x4031da
mov eax, 0x651
call fcn.00401310
mov eax, dword [0x42b010]
test eax, eax
je 0x403581
cmp eax, 2
je 0x4035dd
cmp eax, 1
jne 0x403606
mov eax, dword [ebp - 0x900]
mov dword [esp + 4], 0x418f14
mov dword [esp + 8], eax
mov dword [esp], ebx
call sub.msvcrt.dll_memcmp
test eax, eax
sete al
movzx eax, al
mov dword [esp + 4], str.RC2_encryption_failed__n
mov dword [esp], eax
call fcn.00401ac0
jmp 0x403220
mov ebx, dword [esi + 0x34]
mov eax, 0x659
call fcn.00401310
mov eax, 1
cmp ebx, 0x80090005
je 0x40320c
mov edx, dword [0x42b050]
test edx, edx
sete dl
xor eax, eax
cmp ebx, 0x80090012
sete al
and eax, edx
mov dword [esp + 8], ebx
mov dword [esp + 4], str.Expected_0x80009005__got_0x_08lX_n
mov dword [esp], eax
call fcn.00401ac0
mov dword [ebp - 0x908], 4
lea edx, [ebp - 0x904]
mov dword [ebp - 0x904], 0x3039
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 9
mov eax, dword [ebp - 0x90c]
mov ebx, dword fs:[0x18]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x65f
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
mov eax, 0x660
call fcn.00401310
mov eax, dword [ebp - 0x904]
mov dword [esp + 4], str.Expected_40__got__ld_n
cmp eax, 0x28
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
lea edx, [ebp - 0x8dc]
mov eax, 0xafafafaf
mov ecx, 0x40
mov dword [ebp - 0x908], 0x100
mov edi, edx
rep stosd dword es:[edi], eax
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 4], 2
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov edx, dword [ebp - 0x91c]
call edx
sub esp, 0x14
mov esi, eax
mov eax, 0x665
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 [0x42b010]
test eax, eax
je 0x4033ed
mov eax, 0x667
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov dword [esp + 4], str.Expected_11__got__ld_n
cmp eax, 0xb
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
mov eax, dword [ebp - 0x90c]
mov esi, dword fs:[0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x920]
call eax
sub esp, 4
mov ebx, eax
mov eax, 0x66c
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 eax, dword [ebp - 0x910]
mov dword [esp], eax
mov eax, dword [ebp - 0x930]
call eax
sub esp, 4
mov ebx, eax
mov eax, 0x66f
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 esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0x669
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov dword [esp + 4], str.Expected_0__got__ld_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
jmp 0x403370
mov eax, 0x5d4
call fcn.00401310
mov eax, dword [ebp - 0x908]
mov dword [esp + 4], str.expected_salt_length_11__got__ld_n
cmp eax, 0xb
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
jmp 0x402678
cmp dword [ebp - 0x7d8], 0x1167470a
jne 0x40244c
cmp dword [ebp - 0x7d4], 0xce8718fb
jne 0x40244c
xor eax, eax
cmp dword [ebp - 0x7d0], 0xb107750c
jne 0x40244c
jmp 0x402451
mov eax, 0x620
call fcn.00401310
xor eax, eax
test edi, edi
mov dword [esp + 4], str.expected_error_n
sete al
mov dword [esp], eax
call fcn.00401ac0
mov eax, 0x621
call fcn.00401310
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.Expected_0x80009005__got_0x_08lX_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0x80090005
sete al
mov dword [esp], eax
call fcn.00401ac0
mov dword [esp + 0x10], 0
mov eax, dword [ebp - 0x918]
mov dword [esp + 4], 0x13
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x904]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x90c]
mov dword [esp], eax
mov eax, dword [ebp - 0x91c]
call eax
sub esp, 0x14
mov edi, eax
mov eax, 0x623
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, 0x624
call fcn.00401310
mov eax, dword [ebp - 0x904]
mov dword [esp + 4], str.Expected_40__got__ld_n
cmp eax, 0x28
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401ac0
jmp 0x402d25
mov esi, dword [0x42b004]
test esi, esi
je 0x40357a
cmp eax, 0xb
je 0x4035f4
xor edx, edx
jmp 0x402664
mov eax, dword [ebp - 0x900]
mov dword [esp + 4], 0x418f44
mov dword [esp + 8], eax
jmp 0x4031b8
mov edx, dword [eax + 4]
cmp dword [ebp - 0x7d8], edx
jne 0x402f4b
mov edx, dword [eax + 8]
cmp dword [ebp - 0x7d4], edx
jne 0x402f4b
mov eax, dword [eax + 0xc]
cmp dword [ebp - 0x7d0], eax
jne 0x402f4b
xor eax, eax
jmp 0x402f50
xor ecx, ecx
cmp eax, 0x28
sete cl
jmp 0x402e4a
mov eax, dword [ebp - 0x900]
mov dword [esp + 4], 0x418f2c
mov dword [esp + 8], eax
jmp 0x4031b8
mov ecx, dword [0x42b050]
xor edx, edx
test ecx, ecx
sete dl
jmp 0x402664
xor eax, eax
jmp 0x4031c8