Function at 0x1004fcf0
Capabilities:
Encode data using xor
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x13c
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov eax, esp
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x10060930
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
mov edi, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x34]
mov eax, dword [0x1027eef4]
mov esi, dword [0x1027eef8]
xor edx, edx
div esi
mov edx, dword [ebp - 0x20]
add eax, 0x3b5ce86b
xor eax, 0x45d6fd0
add eax, 0xd04c4565
mov dword [ebp - 0x3c], eax
push eax
mov eax, esp
mov dword [ebp - 0x5c], eax
push eax
mov eax, esp
mov dword [ebp - 0x58], eax
push eax
mov eax, esp
mov dword [ebp - 0x54], eax
push eax
mov ebx, esp
mov dword [ebp - 0xec], ebx
push eax
mov esi, esp
mov dword [ebp - 0xe8], esi
push eax
mov eax, esp
mov dword [ebp - 0x4c], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x50], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x48], eax
push eax
mov eax, esp
mov dword [ebp - 0x40], eax
push eax
mov eax, esp
mov dword [ebp - 0x44], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0xe4], eax
push eax
mov eax, esp
mov dword [ebp - 0xe0], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0xdc], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0xd8], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0xd4], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0xd0], eax
push eax
mov eax, esp
mov dword [ebp - 0xcc], eax
push eax
mov eax, esp
mov dword [ebp - 0xc8], eax
push eax
mov eax, esp
mov dword [ebp - 0xc4], eax
push eax
mov eax, esp
mov dword [ebp - 0xc0], eax
push eax
mov eax, esp
mov dword [ebp - 0xbc], eax
push eax
mov eax, esp
mov dword [ebp - 0xb8], eax
push eax
mov eax, esp
mov dword [ebp - 0xb4], eax
push eax
mov eax, esp
mov dword [ebp - 0xb0], eax
push eax
mov eax, esp
mov dword [ebp - 0xac], eax
push eax
mov eax, esp
mov dword [ebp - 0xa8], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0xa4], eax
push eax
mov eax, esp
mov dword [ebp - 0xa0], eax
push eax
mov eax, esp
mov dword [ebp - 0x9c], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x98], eax
sub esp, 0xc
mov eax, esp
mov dword [ebp - 0x94], eax
push eax
mov eax, esp
mov dword [ebp - 0x90], eax
push eax
mov eax, esp
mov dword [ebp - 0x8c], eax
push eax
mov eax, esp
mov dword [ebp - 0x88], eax
push eax
mov eax, esp
mov dword [ebp - 0x84], eax
push eax
mov eax, esp
mov dword [ebp - 0x80], eax
push eax
mov eax, esp
mov dword [ebp - 0x7c], eax
push eax
mov eax, esp
mov dword [ebp - 0x78], eax
push eax
mov eax, esp
mov dword [ebp - 0x74], eax
push eax
mov eax, esp
mov dword [ebp - 0x70], eax
push eax
mov eax, esp
mov dword [ebp - 0x6c], eax
push eax
mov eax, esp
mov dword [ebp - 0x68], eax
push eax
mov eax, esp
mov dword [ebp - 0x64], eax
push eax
mov eax, esp
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x5c]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x58]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x54]
mov dword [eax], ecx
mov ecx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x28]
mov dword [ebx], eax
mov eax, dword [ebp - 0x4c]
mov dword [esi], edi
mov dword [eax], edx
call fcn.10051350
mov ecx, dword [ebp - 0x48]
call fcn.10051350
mov ecx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
mov dword [eax], 0
mov dword [ecx], 0
xor ecx, ecx
sub esp, 0x14
mov dword [esp], eax
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], 1
mov dword [esp + 0x10], 0xf0000000
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
mov ecx, eax
mov eax, dword [ebp - 0x3c]
cmp ecx, 0
setne cl
mov byte [ebp - 0x35], cl
cmp eax, 0x26cca8e5
ja 0x1004fd46
mov al, byte [ebp - 0x35]
test al, 1
jne 0x1005004d
jmp 0x1004ff77
mov eax, dword [0x1027eefc]
or eax, dword [0x1027ef00]
mov ecx, 0x320292ae
xor edx, edx
div ecx
xor eax, 0xb19351d9
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0xd777dbc2
and eax, 0x2888243d
sub eax, ecx
cmp eax, 0x3e93d910
jb 0x10050fc4
mov ecx, dword [ebp - 0xe4]
lea eax, str.Failed_to_acquire_cryptographic_context.
sub esp, 4
mov dword [esp], eax
call fcn.1004f7c0
mov edx, dword [0x1027ef0c]
mov ecx, dword [0x1027ef10]
mov eax, edx
xor eax, 0xffffffff
xor edx, 0xffffffff
or eax, edx
xor eax, 0xffffffff
or eax, ecx
mov edx, eax
and edx, 0x305d3937
mov ecx, eax
or ecx, 0x305d3937
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0xcfa2c6c8
or eax, 0xcfa2c6c8
imul eax, edx
add eax, ecx
xor ecx, ecx
sub ecx, eax
add ecx, 0xe84d37db
xor eax, eax
sub eax, ecx
sub eax, 0x97085129
cmp eax, 0x413e7d9f
jae 0x10050fc9
mov ecx, dword [ebp - 0xe4]
mov dword [ebp - 0x10], 1
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x1026a94c
call fcn.101ee0b1
add esp, 8
jmp 0x10050fc4
mov eax, dword [0x1027ef1c]
sub eax, dword [0x1027ef20]
sub eax, 0xe16946b4
mov edx, eax
and edx, 0x300ee27d
mov ecx, eax
or ecx, 0x300ee27d
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0xcff11d82
or eax, 0xcff11d82
imul eax, edx
add eax, ecx
sub eax, 0xf52b5edf
sub eax, 0x4d32ed92
add eax, 0xf52b5edf
cmp eax, 0x82223e16
je 0x10050fd5
mov ecx, dword [ebp - 0xdc]
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
mov ebx, dword [0x1027ef24]
imul ebx, dword [0x1027ef28]
xor ebx, 0xffffffff
or ebx, 0x477ff67d
xor ebx, 0xffffffff
add ebx, 0x4cca2808
add ebx, 1
mov edi, ebx
xor edi, 0xffffffff
mov eax, ebx
xor eax, 0xffffffff
or edi, eax
mov eax, dword [ebp - 0xe0]
xor edi, 0xffffffff
or edi, 0xb118c31e
and ebx, 0xb118c31e
xor edi, 0xffffffff
or edi, ebx
mov dword [ebp - 0xf0], edi
mov edx, dword [edx]
add edx, dword [esi]
mov dword [eax], edx
call fcn.10051350
mov ecx, dword [ebp - 0xd8]
call fcn.10051350
mov eax, dword [ebp - 0xf0]
cmp eax, 0x61d060bc
ja 0x1005009f
jmp 0x10050125
mov ecx, dword [ebp - 0xdc]
mov eax, dword [0x1027ef34]
or eax, dword [0x1027ef38]
mov esi, eax
xor esi, 0xffffffff
and esi, 0xef58081b
mov edx, eax
and edx, 0x10a7f7e4
imul edx, esi
mov esi, eax
and esi, 0xef58081b
or eax, 0xef58081b
imul eax, esi
add eax, edx
sub eax, 0xa8420155
sub eax, 0x1fb22bff
mov dword [ebp - 0xf8], eax
call fcn.10051390
mov edx, dword [ebp - 0xe0]
mov ecx, eax
mov eax, dword [ebp - 0xf8]
cmp ecx, dword [edx]
setl cl
mov byte [ebp - 0xf1], cl
cmp eax, 0xfbb109b4
je 0x10050125
mov al, byte [ebp - 0xf1]
test al, 1
jne 0x100501aa
jmp 0x10050dab
mov ecx, dword [0x1027ef3c]
imul ecx, dword [0x1027ef40]
sub ecx, 0x18fa806a
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x55cf3053
xor ecx, 0xffffffff
or ecx, 0x55cf3053
xor ecx, 0xffffffff
or eax, ecx
add eax, 0x759d3ed4
cmp eax, 0xd75eea8d
jae 0x10051010
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x40]
mov esi, dword [0x1027ef44]
sub esi, dword [0x1027ef48]
and esi, 0x56b1b102
mov edx, esi
and edx, 0xe9125ea9
xor edx, 0xffffffff
and esi, 0xe9125ea9
xor esi, 0xffffffff
and edx, esi
xor edx, 0xffffffff
add edx, 0xf5c78f92
mov dword [ebp - 0x100], edx
mov ecx, dword [ecx]
xor edx, edx
sub esp, 0x14
mov dword [esp], ecx
mov dword [esp + 4], 0x8003
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
mov ecx, eax
mov eax, dword [ebp - 0x100]
cmp ecx, 0
setne cl
mov byte [ebp - 0xf9], cl
cmp eax, 0x5db241c2
jb 0x10051010
mov al, byte [ebp - 0xf9]
test al, 1
jne 0x100503c6
jmp 0x10050280
mov eax, dword [0x1027ef4c]
xor edx, edx
div dword [0x1027ef50]
and eax, 0x30e02e8f
sub eax, 0x386e8213
sub eax, 0x6ed325e4
cmp eax, 0xcccfcee0
ja 0x10051047
mov ecx, dword [0x1027ef54]
mov esi, dword [0x1027ef58]
mov eax, ecx
xor eax, 0xffffffff
mov edx, esi
and edx, eax
mov edi, esi
xor edi, 0xffffffff
mov eax, ecx
and eax, edi
imul eax, edx
mov edx, ecx
and edx, esi
or ecx, esi
imul ecx, edx
add ecx, eax
mov eax, ecx
and eax, 0xf6c749e0
or ecx, 0xf6c749e0
add eax, ecx
mov ecx, 0x398ea4db
xor edx, edx
div ecx
mov ecx, eax
mov eax, dword [ebp - 0x40]
mov edx, ecx
xor edx, 0xffffffff
and edx, 0x82e815ba
and ecx, 0x7d17ea45
sub ecx, edx
mov dword [ebp - 0x104], ecx
mov eax, dword [eax]
xor ecx, ecx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0x104]
cmp eax, 0xf6bd3619
jae 0x100502a7
mov ecx, dword [ebp - 0xd4]
lea eax, str.Failed_to_create_hash_object.
sub esp, 4
mov dword [esp], eax
call fcn.1004f7c0
mov eax, dword [0x1027ef64]
xor edx, edx
div dword [0x1027ef68]
mov edx, eax
xor edx, 0xe196cace
mov eax, edx
xor eax, 0x5dc1eb9b
and edx, 0xa23e1464
shl edx, 1
sub edx, eax
mov ecx, edx
xor ecx, 0xffffffff
mov eax, ecx
and eax, 0x5402d212
and edx, 0xabfd2ded
or eax, edx
xor eax, 0xfac4b9b7
or ecx, 0x5139945a
xor ecx, 0xffffffff
or eax, ecx
cmp eax, 0x39e0712a
jbe 0x10050349
mov ecx, dword [ebp - 0xd4]
mov dword [ebp - 0x10], 3
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x1026a94c
call fcn.101ee0b1
add esp, 8
jmp 0x10050fc4
mov esi, dword [0x1027ef6c]
mov edx, dword [0x1027ef70]
mov eax, esi
xor eax, 0xffffffff
and eax, 0xd1b917a4
and esi, 0x2e46e85b
mov ecx, edx
xor ecx, 0xffffffff
and ecx, 0xd1b917a4
and edx, 0x2e46e85b
or eax, esi
or ecx, edx
xor eax, ecx
or eax, 0x84388ca
add eax, 0x88195a7b
sub eax, 0x64bbf465
sub eax, 0xb7e57efb
add eax, 0x64bbf465
cmp eax, 0xba7237f8
je 0x10051067
mov ecx, dword [ebp - 0xd8]
call fcn.100514f0
test al, 1
jne 0x100505a6
mov eax, dword [0x1027ef7c]
xor eax, dword [0x1027ef80]
sub eax, 0x54dc878
imul ecx, eax, 0xb6e9afe3
mov eax, ecx
xor eax, 0x1787f2a
and eax, ecx
cmp eax, 0xa02f5b24
je 0x10051077
mov ecx, dword [ebp - 0xd8]
mov eax, dword [0x1027ef84]
xor edx, edx
div dword [0x1027ef88]
or eax, 0xcf51843b
sub eax, 0x39dab086
mov edx, eax
xor edx, 0x30f5ea47
and eax, 0xcf0a15b8
shl eax, 1
sub eax, edx
mov dword [ebp - 0x10c], eax
call fcn.10051390
mov ecx, dword [ebp - 0xd8]
mov dword [ebp - 0x110], eax
call fcn.1004fb20
mov edx, dword [ebp - 0x44]
mov ecx, eax
mov eax, dword [ebp - 0x110]
mov edx, dword [edx]
xor esi, esi
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
mov ecx, eax
mov eax, dword [ebp - 0x10c]
cmp ecx, 0
setne cl
mov byte [ebp - 0x105], cl
cmp eax, 0x74ee1672
je 0x10051077
mov al, byte [ebp - 0x105]
test al, 1
jne 0x1005059f
jmp 0x10050501
mov eax, dword [0x1027ef8c]
or eax, dword [0x1027ef90]
mov ecx, eax
xor ecx, 0xffffffff
and ecx, 0x31fe56f1
and eax, 0xce01a90e
sub eax, ecx
and eax, 0x224caa11
imul eax, eax, 0x6a76308
cmp eax, 0xd02dae9d
ja 0x100510c3
mov eax, dword [ebp - 0x44]
mov ecx, dword [eax]
sub esp, 4
mov eax, esp
mov dword [eax], ecx
mov eax, dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call eax
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0
mov eax, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call eax
mov ecx, dword [ebp - 0xd0]
sub esp, 4
mov eax, esp
mov dword [eax], str.Failed_to_hash_data.
call fcn.1004f7c0
mov ecx, dword [ebp - 0xd0]
mov dword [ebp - 0x10], 3
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x1026a94c
call fcn.101ee0b1
add esp, 8
jmp 0x10050fc4
mov dword [ebp - 0x10], 3
mov ecx, dword [ebp - 0x50]
mov edi, dword [ebp - 0xc8]
mov esi, dword [ebp - 0xc4]
mov ebx, dword [ebp - 0xc0]
call fcn.10051630
mov eax, dword [ebp - 0xe8]
mov edx, dword [ebp - 0xcc]
mov ecx, dword [eax]
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10051b70
mov eax, dword [ebp - 0xe8]
mov ecx, dword [eax]
sub esp, 4
mov eax, esp
mov dword [eax], edi
call fcn.10051d30
mov ecx, dword [ebp - 0x50]
sub esp, 4
mov eax, esp
mov dword [eax], ebx
call fcn.10051d80
mov eax, dword [ebp - 0xcc]
mov edx, dword [ebp - 0xbc]
mov ecx, dword [ebp - 0x50]
mov ebx, dword [ebx]
mov dword [esi], ebx
mov esi, dword [esi]
mov edi, dword [edi]
mov ebx, dword [eax]
mov dword [ebp - 0x10], 3
sub esp, 0x10
mov eax, esp
mov dword [eax + 0xc], ebx
mov dword [eax + 8], edi
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10051a80
jmp 0x10050637
mov eax, dword [ebp - 0x4c]
mov ecx, dword [eax]
call fcn.100514f0
test al, 1
jne 0x10050818
mov eax, dword [0x1027efac]
add eax, dword [0x1027efb0]
mov edx, eax
xor edx, 0xffffffff
and edx, 0x538a688e
mov ecx, eax
and ecx, 0xac759771
imul ecx, edx
mov edx, eax
and edx, 0x538a688e
or eax, 0x538a688e
imul eax, edx
add eax, ecx
mov ecx, 0xe73991ce
xor edx, edx
div ecx
xor eax, 0x36b90afc
cmp eax, 0x5abf71e2
ja 0x100510fb
mov esi, dword [ebp - 0xb0]
mov edi, dword [ebp - 0xac]
mov ecx, dword [ebp - 0x4c]
mov eax, dword [0x1027efb4]
xor edx, edx
div dword [0x1027efb8]
mov edx, eax
xor edx, 0xa747e13a
add edx, 0xa0233b5f
add edx, 1
mov eax, edx
and eax, 0x284027b2
mov ebx, edx
or ebx, 0x284027b2
xor ebx, 0xffffffff
imul ebx, eax
mov eax, edx
and eax, 0xd7bfd84d
or edx, 0xd7bfd84d
imul edx, eax
mov eax, dword [ebp - 0xb8]
add edx, ebx
mov dword [ebp - 0x120], edx
mov ecx, dword [ecx]
sub esp, 4
mov dword [esp], eax
call fcn.10052360
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0xb4]
mov ecx, dword [ecx]
sub esp, 4
mov dword [esp], eax
call fcn.100524f0
mov ecx, dword [ebp - 0x50]
sub esp, 4
mov dword [esp], edi
call fcn.10051d80
mov edx, dword [ebp - 0xb4]
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ebp - 0x120]
mov edi, dword [edi]
mov dword [esi], edi
mov esi, dword [esi]
mov dword [ebp - 0x11c], esi
mov edx, dword [edx]
mov dword [ebp - 0x118], edx
mov ecx, dword [ecx]
mov dword [ebp - 0x114], ecx
cmp eax, 0x7141db3
jbe 0x10050695
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp - 0xa8]
mov esi, dword [ebp - 0x11c]
mov edi, dword [ebp - 0x118]
mov ebx, dword [ebp - 0x114]
mov dword [ebp - 0x10], 3
sub esp, 0x10
mov eax, esp
mov dword [eax + 0xc], ebx
mov dword [eax + 8], edi
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10051f30
jmp 0x1005079b
mov eax, dword [0x1027efbc]
mov ecx, dword [0x1027efc0]
add eax, 0x9aed8039
sub eax, ecx
sub eax, 0x9aed8039
mov edx, eax
xor edx, 0xffffffff
and edx, 0x200e9b1d
mov ecx, eax
and ecx, 0xdff164e2
imul ecx, edx
mov edx, eax
and edx, 0x200e9b1d
or eax, 0x200e9b1d
imul eax, edx
add eax, ecx
mov ecx, eax
xor ecx, 0xffffffff
or ecx, 0xbddf1e53
xor eax, 0xffffffff
or eax, 0xbddf1e53
xor ecx, 0xffffffff
xor eax, 0xffffffff
or ecx, eax
mov eax, ecx
or eax, 0x1cab8f01
xor eax, 0xffffffff
or ecx, 0x1cab8f01
xor ecx, 0xffffffff
or eax, ecx
xor eax, 0xffffffff
cmp eax, 0x96e4e002
ja 0x10051150
mov ebx, dword [0x1027efcc]
mov edi, dword [0x1027efd0]
mov eax, ebx
xor eax, 0xffffffff
mov edx, edi
xor edx, 0xffffffff
mov ecx, eax
and ecx, 0x5324bec
and ebx, 0xfacdb413
mov esi, edx
and esi, 0x5324bec
and edi, 0xfacdb413
or ecx, ebx
or esi, edi
xor ecx, esi
or eax, edx
xor eax, 0xffffffff
or ecx, eax
add ecx, 0x9a46c4e1
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x1c73871a
xor ecx, 0xffffffff
and ecx, 0x1c73871a
or eax, ecx
xor eax, 0xffffffff
mov edx, eax
and edx, 0x76f152f5
mov ecx, eax
or ecx, 0x76f152f5
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0x890ead0a
or eax, 0x890ead0a
imul eax, edx
add eax, ecx
cmp eax, 0xe0c2f1ea
jbe 0x10051155
mov ecx, dword [ebp - 0x50]
call fcn.10051390
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x124], eax
call fcn.1004fb20
mov edx, dword [ebp - 0x44]
mov ecx, eax
mov eax, dword [ebp - 0x124]
mov edx, dword [edx]
xor esi, esi
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
cmp eax, 0
jne 0x10050956
mov eax, dword [ebp - 0x44]
mov ecx, dword [eax]
sub esp, 4
mov eax, esp
mov dword [eax], ecx
mov eax, dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call eax
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0
mov eax, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call eax
mov ecx, dword [ebp - 0xa4]
sub esp, 4
mov eax, esp
mov dword [eax], str.Failed_to_hash_data.
call fcn.1004f7c0
mov ecx, dword [ebp - 0xa4]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x1026a94c
call fcn.101ee0b1
add esp, 8
jmp 0x10050fc4
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0xa0]
mov edx, dword [ebp - 0x44]
mov esi, dword [0x1027efe4]
mov edi, dword [0x1027efe8]
xor edi, 0xffffffff
sub edi, 0xffffffff
sub esi, edi
mov ebx, esi
xor ebx, 0xffffffff
and ebx, 0x562b520b
mov edi, esi
and edi, 0xa9d4adf4
imul edi, ebx
mov ebx, esi
and ebx, 0x562b520b
or esi, 0x562b520b
imul esi, ebx
add esi, edi
imul esi, esi, 0x6fca2a20
or esi, 0x40c07c06
mov dword [ebp - 0x12c], esi
mov dword [ecx], 0
mov dword [eax], 4
mov edx, dword [edx]
xor esi, esi
sub esp, 0x14
mov dword [esp], edx
mov dword [esp + 4], 4
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
mov ecx, eax
mov eax, dword [ebp - 0x12c]
cmp ecx, 0
setne cl
mov byte [ebp - 0x125], cl
cmp eax, 0xbe059b57
jae 0x1005119b
mov al, byte [ebp - 0x125]
test al, 1
jne 0x10050a85
jmp 0x10050a1a
mov eax, dword [ebp - 0x44]
mov ecx, dword [eax]
sub esp, 4
mov eax, esp
mov dword [eax], ecx
mov eax, dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call eax
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0
mov eax, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call eax
mov ecx, dword [ebp - 0x98]
sub esp, 4
mov eax, esp
mov dword [eax], str.Failed_to_get_hash_length.
call fcn.1004f7c0
mov ecx, dword [ebp - 0x98]
mov dword [ebp - 0x10], 3
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x1026a94c
call fcn.101ee0b1
add esp, 8
jmp 0x10050fc4
mov ecx, dword [ebp - 0xa0]
mov eax, dword [0x1027eff4]
mov esi, dword [str.cB__]
mov edx, eax
xor edx, 0xffffffff
mov edi, esi
xor edi, 0xffffffff
and edx, edi
or eax, esi
xor eax, 0xffffffff
or edx, eax
mov eax, edx
or eax, 0xdf5250d3
and edx, 0xdf5250d3
xor edx, 0xffffffff
and eax, edx
mov esi, 0xc6e44f57
xor edx, edx
div esi
mov edx, eax
and edx, 0x380471ec
shl edx, 1
add eax, 0x380471ec
sub eax, edx
mov ecx, dword [ecx]
mov dword [ebp - 0x130], ecx
cmp eax, 0x53d91120
ja 0x100511e3
mov ecx, dword [ebp - 0xd8]
mov edx, dword [ebp - 0x130]
mov dword [ebp - 0x10], 3
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10052530
jmp 0x10050b0c
mov ecx, dword [ebp - 0xd8]
call fcn.1004fb20
mov edx, dword [ebp - 0x44]
mov ecx, eax
mov eax, dword [ebp - 0xa0]
mov edx, dword [edx]
xor esi, esi
sub esp, 0x14
mov dword [esp], edx
mov dword [esp + 4], 2
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
cmp eax, 0
jne 0x10050cc5
mov ecx, dword [0x1027effc]
mov edx, dword [0x1027f000]
mov eax, ecx
xor eax, 0xffffffff
xor ecx, 0xffffffff
or eax, ecx
mov ecx, edx
xor ecx, 0xffffffff
xor edx, 0xffffffff
or ecx, edx
xor eax, 0xffffffff
xor ecx, 0xffffffff
or eax, ecx
sub eax, 0xfa070ec1
sub eax, 0x9a3a199d
and eax, 0xc5d084bd
cmp eax, 0x130faf80
jbe 0x100511e8
mov eax, dword [0x1027f004]
xor edx, edx
div dword [0x1027f008]
mov edx, eax
mov eax, dword [ebp - 0x44]
mov ecx, edx
xor ecx, 0x92dbf540
xor ecx, 0xffffffff
and ecx, 0x92dbf540
shl ecx, 1
sub ecx, 0x92dbf540
sub edx, ecx
and edx, 0x46c30815
mov ecx, edx
xor ecx, 0xbf783c6a
and ecx, edx
mov dword [ebp - 0x134], ecx
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, dword [ebp - 0x134]
cmp eax, 0xf081b62
jae 0x100511e8
mov ecx, dword [ebp - 0x94]
lea eax, str.Failed_to_get_hash_value.
sub esp, 4
mov dword [esp], eax
call fcn.1004f7c0
mov eax, dword [0x1027f00c]
xor edx, edx
div dword [0x1027f010]
xor eax, 0x3ca176e0
sub eax, 0x8948006c
mov ecx, eax
and ecx, 0xc2f6af0b
shl ecx, 1
xor eax, 0xc2f6af0b
add eax, ecx
cmp eax, 0x69883239
jbe 0x10051219
mov ecx, dword [0x1027f014]
mov edx, dword [0x1027f018]
mov eax, ecx
xor eax, 0xffffffff
and eax, edx
xor edx, 0xffffffff
and ecx, edx
sub ecx, eax
mov eax, ecx
xor eax, 0xffffffff
and eax, 0x830729b8
and ecx, 0x7cf8d647
or eax, ecx
xor eax, 0x4003c559
sub eax, 0x1fed2a70
cmp eax, 0x79078638
jae 0x10051219
mov ecx, dword [ebp - 0x94]
mov dword [ebp - 0x10], 3
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0x1026a94c
call fcn.101ee0b1
add esp, 8
jmp 0x10050fc4
mov edi, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x88]
mov ebx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x44]
mov ecx, dword [eax]
sub esp, 4
mov eax, esp
mov dword [eax], ecx
mov eax, dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call eax
mov ecx, dword [ebp - 0xd8]
mov edx, dword [ebp - 0x90]
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10051d80
mov ecx, dword [ebp - 0xd8]
sub esp, 4
mov eax, esp
mov dword [eax], edi
call fcn.10052b20
mov ecx, dword [ebp - 0xdc]
sub esp, 4
mov eax, esp
mov dword [eax], ebx
call fcn.10051d80
mov eax, dword [ebp - 0x90]
mov edx, dword [ebp - 0x80]
mov ecx, dword [ebp - 0xdc]
mov ebx, dword [ebx]
mov dword [esi], ebx
mov esi, dword [esi]
mov edi, dword [edi]
mov ebx, dword [eax]
sub esp, 0x10
mov eax, esp
mov dword [eax + 0xc], ebx
mov dword [eax + 8], edi
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.100526f0
jmp 0x10050d59
mov eax, dword [0x1027f01c]
imul eax, dword [0x1027f020]
xor eax, 0x9d8e6a7f
mov ecx, 0xd8d9152a
xor edx, edx
div ecx
mov edx, eax
and edx, 0xfd467c1a
mov ecx, eax
or ecx, 0xfd467c1a
xor ecx, 0xffffffff
imul ecx, edx
mov edx, eax
and edx, 0x2b983e5
or eax, 0x2b983e5
imul eax, edx
add eax, ecx
cmp eax, 0x9af78e69
ja 0x1005121e
jmp 0x10050125
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov dword [eax + 4], 0
mov eax, dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
call eax
mov edx, dword [ebp - 0x78]
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xec]
mov eax, dword [eax]
mov dword [ebp - 0x138], eax
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10052b20
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x78]
mov edx, dword [ebp - 0x7c]
mov esi, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10052fc0
mov ecx, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x74]
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10052b20
mov edx, dword [ebp - 0x74]
mov eax, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x138]
mov edx, dword [edx]
mov esi, dword [eax]
mov dword [ebp - 0x10], 3
sub esp, 8
mov eax, esp
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10052cf0
jmp 0x10050e42
mov eax, dword [0x1027f02c]
mov esi, dword [0x1027f030]
mov ecx, eax
xor ecx, 0xffffffff
mov edx, esi
and edx, ecx
mov edi, esi
xor edi, 0xffffffff
mov ecx, eax
and ecx, edi
imul ecx, edx
mov edx, eax
and edx, esi
or eax, esi
imul eax, edx
add eax, ecx
sub eax, 0x5028c889
add eax, 0x17fecda5
add eax, 0xb73d13e
cmp eax, 0x87f0f0e5
ja 0x10051223
mov ecx, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x68]
mov eax, dword [ebp - 0x54]
mov eax, dword [eax]
mov dword [ebp - 0x13c], eax
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10052b20
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x58]
mov esi, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10052fc0
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x70]
mov esi, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10052fc0
mov ecx, dword [ebp - 0xdc]
mov edx, dword [ebp - 0x60]
sub esp, 4
mov eax, esp
mov dword [eax], edx
call fcn.10052b20
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x64]
mov esi, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10052fc0
mov edx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x13c]
mov edx, dword [edx]
mov esi, dword [eax]
sub esp, 8
mov eax, esp
mov dword [eax + 4], esi
mov dword [eax], edx
call fcn.10052cf0
jmp 0x10050f2e
mov eax, dword [str.CebDkA]
or eax, dword [0x1027f040]
xor eax, 0x8c940168
sub eax, 0x5a6cff78
sub eax, 0x838cc172
cmp eax, 0xe2d4bf0
je 0x1005129e
mov ecx, dword [ebp - 0xd8]
mov eax, dword [0x1027f044]
and eax, dword [0x1027f048]
xor eax, 0xffffffff
or eax, 0xd5a32b04
xor eax, 0xffffffff
or eax, 0x22897f10
add eax, 0x5a6d3bbd
add eax, 1
mov dword [ebp - 0x140], eax
call fcn.1004fcd0
mov ecx, dword [ebp - 0xdc]
call fcn.1004fcd0
mov ecx, dword [ebp - 0x48]
call fcn.1004fcd0
mov ecx, dword [ebp - 0x50]
call fcn.1004fcd0
mov eax, dword [ebp - 0x140]
cmp eax, 0xa4c57d8c
ja 0x1005129e
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
jmp 0x1004ffad
mov dword [ebp - 0x10], 1
jmp 0x10050025
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0xe0]
mov esi, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x58]
mov edx, dword [edx]
mov edi, dword [esi]
xor esi, esi
sub esi, edx
xor edx, edx
sub edx, edi
add esi, edx
xor edx, edx
sub edx, esi
mov dword [eax], edx
call fcn.10051350
mov ecx, dword [ebp - 0xd8]
call fcn.10051350
jmp 0x1005009f
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x40]
mov ecx, dword [ecx]
xor edx, edx
sub esp, 0x14
mov dword [esp], ecx
mov dword [esp + 4], 0x8003
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], eax
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
jmp 0x100501e5
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x100502a7
mov ecx, dword [ebp - 0xd8]
call fcn.100514f0
jmp 0x1005041d
mov ecx, dword [ebp - 0xd8]
call fcn.10051390
mov ecx, dword [ebp - 0xd8]
mov dword [ebp - 0x144], eax
call fcn.1004fb20
mov edx, dword [ebp - 0x44]
mov ecx, eax
mov eax, dword [ebp - 0x144]
mov edx, dword [edx]
xor esi, esi
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
jmp 0x1005045a
mov eax, dword [ebp - 0x44]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov dword [ebp - 0x10], 3
jmp 0x10050534
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0xb8]
mov ecx, dword [ecx]
sub esp, 4
mov dword [esp], eax
call fcn.10052360
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0xb4]
mov ecx, dword [ecx]
sub esp, 4
mov dword [esp], eax
call fcn.100524f0
mov ecx, dword [ebp - 0x50]
mov eax, dword [ebp - 0xac]
sub esp, 4
mov dword [esp], eax
call fcn.10051d80
mov ecx, dword [ebp - 0xac]
mov eax, dword [ebp - 0xb0]
mov ecx, dword [ecx]
mov dword [eax], ecx
jmp 0x10050695
jmp 0x10050818
mov ecx, dword [ebp - 0x50]
call fcn.10051390
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x148], eax
call fcn.1004fb20
mov edx, dword [ebp - 0x44]
mov ecx, eax
mov eax, dword [ebp - 0x148]
mov edx, dword [edx]
xor esi, esi
sub esp, 0x10
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
jmp 0x100508a8
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0xa0]
mov edx, dword [ebp - 0x44]
mov dword [ecx], 0
mov dword [eax], 4
mov edx, dword [edx]
xor esi, esi
sub esp, 0x14
mov dword [esp], edx
mov dword [esp + 4], 4
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 0
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
jmp 0x10050956
jmp 0x10050a85
mov eax, dword [ebp - 0x44]
mov eax, dword [eax]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x40]
mov eax, dword [eax]
xor ecx, ecx
sub esp, 8
mov dword [esp], eax
mov dword [esp + 4], 0
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x10050b95
jmp 0x10050c5c
jmp 0x10050da6
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0x68]
sub esp, 4
mov dword [esp], eax
call fcn.10052b20
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x58]
mov eax, dword [eax]
sub esp, 8
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.10052fc0
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x70]
mov eax, dword [eax]
sub esp, 8
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.10052fc0
mov ecx, dword [ebp - 0xdc]
mov eax, dword [ebp - 0x60]
sub esp, 4
mov dword [esp], eax
call fcn.10052b20
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x64]
mov eax, dword [eax]
sub esp, 8
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.10052fc0
jmp 0x10050e87
mov ecx, dword [ebp - 0xd8]
call fcn.1004fcd0
mov ecx, dword [ebp - 0xdc]
call fcn.1004fcd0
mov ecx, dword [ebp - 0x48]
call fcn.1004fcd0
mov ecx, dword [ebp - 0x50]
call fcn.1004fcd0
jmp 0x10050f53