Function at 0x101ae750
Capabilities:
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
sub esp, 0x3c
mov eax, dword [0x106499c8]
xor eax, esp
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x48]
push ebx
mov ebx, dword [esp + 0x44]
push esi
mov esi, dword [esp + 0x4c]
push 0xf0000000
push 1
push 0
mov dword [esp + 0x30], eax
push 0
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x3c], 0x243124
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
jne 0x101ae7ad
pop esi
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x38]
xor ecx, esp
call fcn.10311bec
add esp, 0x3c
ret
push ebp
push edi
mov edi, ebx
lea ecx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x101ae7b4
push 3
push 0x104badf0
push esi
sub edi, ecx
call dword [sym.imp.MSVCR110.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x101ae7d9
add esi, 3
mov dword [esp + 0x1c], esi
mov al, byte [esi]
mov ebp, esi
test al, al
je 0x101ae7f4
cmp al, 0x24
je 0x101ae7f4
lea eax, [esi + 8]
cmp ebp, eax
jae 0x101ae7f4
mov al, byte [ebp + 1]
inc ebp
test al, al
jne 0x101ae7e1
lea eax, [esp + 0x14]
push eax
push 0
push 0
push 0x8003
push dword [esp + 0x34]
sub ebp, esi
mov dword [esp + 0x2c], ebp
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x101aece8
mov esi, dword [sym.imp.ADVAPI32.dll_CryptHashData]
push 0
push edi
push ebx
push dword [esp + 0x20]
call esi
test eax, eax
je 0x101aecde
push 0
push 3
lea eax, [esp + 0x38]
push eax
push dword [esp + 0x20]
call esi
test eax, eax
je 0x101aecde
push 0
push ebp
push dword [esp + 0x24]
push dword [esp + 0x20]
call esi
test eax, eax
je 0x101aecde
lea eax, [esp + 0x10]
push eax
push 0
push 0
push 0x8003
push dword [esp + 0x34]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x101aecde
push 0
push edi
push ebx
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
push 0
push ebp
push dword [esp + 0x24]
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
push 0
push edi
push ebx
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
push 0
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x40]
push eax
push 2
push dword [esp + 0x20]
mov dword [esp + 0x34], 0x10
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
mov ebx, edi
test edi, edi
jle 0x101ae901
mov ebp, 0x10
push 0
mov eax, ebx
cmp ebx, ebp
cmovg eax, ebp
push eax
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x20]
call esi
sub ebx, ebp
test ebx, ebx
jg 0x101ae8e2
mov ebp, dword [esp + 0x18]
xorps xmm0, xmm0
mov eax, edi
movq qword [esp + 0x38], xmm0
movq qword [esp + 0x40], xmm0
mov dword [esp + 0x18], eax
test edi, edi
je 0x101ae942
mov ebx, dword [esp + 0x28]
mov edi, edi
push 0
push 1
test al, 1
je 0x101ae92f
lea eax, [esp + 0x40]
push eax
jmp 0x101ae930
push ebx
push dword [esp + 0x20]
call esi
mov eax, dword [esp + 0x18]
shr eax, 1
mov dword [esp + 0x18], eax
jne 0x101ae920
mov ax, word [0x104badf0]
mov ebx, dword [esp + 0x2c]
mov word [ebx], ax
mov al, byte [0x104badf2]
mov byte [ebx + 2], al
lea eax, [ebp + 1]
push eax
push dword [esp + 0x20]
lea eax, [ebx + 3]
push 0x75
push eax
call dword [sym.imp.MSVCR110.dll_strncpy_s]
add esp, 0x10
test eax, eax
jne 0x101aeccf
push 0x104badf4
lea eax, [ebx + ebp]
push 0x78
push ebx
mov dword [esp + 0x40], eax
mov byte [eax + 3], 0
call dword [sym.imp.MSVCR110.dll_strcat_s]
add esp, 0xc
lea eax, [esp + 0x20]
push 0
push eax
lea eax, [esp + 0x40]
push eax
push 2
push dword [esp + 0x24]
mov dword [esp + 0x34], 0x10
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
xor ebx, ebx
lea eax, [esp + 0x10]
push eax
push 0
push 0
push 0x8003
push dword [esp + 0x34]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x101aeccf
mov eax, ebx
and eax, 1
mov dword [esp + 0x18], eax
push 0
je 0x101ae9e8
push edi
push dword [esp + 0x30]
jmp 0x101ae9ef
push 0x10
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
mov ecx, ebx
lea eax, [edx + edx*2]
sub ecx, eax
je 0x101aea24
push 0
push ebp
push dword [esp + 0x24]
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
mov eax, 0x24924925
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 2
lea ecx, [eax*8]
sub ecx, eax
mov eax, ebx
sub eax, ecx
je 0x101aea5a
push 0
push edi
push dword [esp + 0x30]
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
cmp dword [esp + 0x18], 0
push 0
je 0x101aea6c
push 0x10
lea eax, [esp + 0x40]
push eax
jmp 0x101aea71
push edi
push dword [esp + 0x30]
push dword [esp + 0x1c]
call esi
test eax, eax
je 0x101aeccf
push 0
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x40]
push eax
push 2
push dword [esp + 0x20]
mov dword [esp + 0x34], 0x10
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
push dword [esp + 0x10]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
je 0x101aecde
inc ebx
cmp ebx, 0x3e8
jb 0x101ae9b4
movzx ecx, byte [esp + 0x38]
movzx eax, byte [esp + 0x3e]
mov edx, dword [esp + 0x34]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x44]
shl ecx, 8
or ecx, eax
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 4], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 5], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 6], al
and ecx, 0x3f
mov dword [esp + 0x10], 0
movzx eax, byte [ecx + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
movzx ecx, byte [esp + 0x39]
mov byte [edx + 7], al
movzx eax, byte [esp + 0x3f]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x45]
shl ecx, 8
or ecx, eax
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 8], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 9], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0xa], al
and ecx, 0x3f
movzx eax, byte [ecx + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
movzx ecx, byte [esp + 0x3a]
mov byte [edx + 0xb], al
movzx eax, byte [esp + 0x40]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x46]
shl ecx, 8
or ecx, eax
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0xc], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0xd], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
and ecx, 0x3f
mov byte [edx + 0xe], al
movzx eax, byte [ecx + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
movzx ecx, byte [esp + 0x3b]
mov byte [edx + 0xf], al
movzx eax, byte [esp + 0x41]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x47]
shl ecx, 8
or ecx, eax
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x10], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x11], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x12], al
and ecx, 0x3f
xorps xmm0, xmm0
movzx eax, byte [ecx + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
movzx ecx, byte [esp + 0x3c]
mov byte [edx + 0x13], al
movzx eax, byte [esp + 0x42]
shl ecx, 8
or ecx, eax
movzx eax, byte [esp + 0x3d]
shl ecx, 8
or ecx, eax
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x14], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x15], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x16], al
and ecx, 0x3f
movq qword [esp + 0x38], xmm0
movzx eax, byte [ecx + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
movzx ecx, byte [esp + 0x43]
mov byte [edx + 0x17], al
mov eax, ecx
and eax, 0x3f
sar ecx, 6
movzx eax, byte [eax + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
and ecx, 0x3f
mov byte [edx + 0x18], al
movzx eax, byte [ecx + str.._0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
mov byte [edx + 0x19], al
mov byte [edx + 0x1a], 0
movq qword [esp + 0x40], xmm0
jmp 0x101aecde
mov eax, dword [esp + 0x10]
test eax, eax
je 0x101aecde
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push dword [esp + 0x14]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [esp + 0x24]
pop edi
pop ebp
test eax, eax
je 0x101aed03
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test eax, eax
je 0x101ae79a
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
pop esi
pop ebx
xor ecx, esp
call fcn.10311bec
add esp, 0x3c
ret