Function at 0x10001820
Capabilities:
Create new key via cryptacquirecontext
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov eax, dword [0x101c6270]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x1c]
mov edx, dword [ebp + 0x28]
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x2c], 0
push ebx
mov ebx, dword [ebp + 0x24]
mov dword [ebp - 0x28], ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x44], edi
test eax, eax
je 0x10001881
mov esi, eax
lea edx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x10001876
sub esi, edx
jmp 0x10001883
xor esi, esi
test edi, edi
jne 0x1000189b
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
lea edx, [edi + 1]
nop
mov al, byte [edi]
inc edi
test al, al
jne 0x100018a0
sub edi, edx
jne 0x100018bf
lea eax, [edi - 2]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
test ecx, ecx
jne 0x100018d7
pop edi
pop esi
lea eax, [ecx - 3]
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100018e0
sub ecx, edx
jne 0x100018ff
pop edi
pop esi
lea eax, [ecx - 4]
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0xc]
mov eax, ecx
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp + 0x10]
or eax, ecx
mov dword [ebp - 0x34], ecx
jne 0x10001920
push eax
call fcn.10131bfb
add esp, 4
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
test ebx, ebx
jne 0x10001952
push 8
call fcn.10131c42
mov ebx, eax
add esp, 4
mov dword [ebp - 0x28], ebx
test ebx, ebx
jne 0x1000194b
pop edi
pop esi
lea eax, [ebx - 5]
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x2c], 1
mov eax, dword [ebp - 0x30]
cmp dword [eax], 0
jne 0x1000199c
push 0x21
call fcn.10131c42
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x10001990
cmp dword [ebp - 0x2c], eax
je 0x1000197a
push dword [ebp - 0x28]
call fcn.10131c3d
add esp, 4
pop edi
pop esi
mov eax, 0xfffffffa
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x3c], 1
jmp 0x1000199f
mov ebx, dword [ebp - 0x40]
mov edx, dword [ebp - 0x28]
xorps xmm0, xmm0
mov ecx, dword [ebp - 0x34]
mov dword [eax], ebx
mov eax, dword [ebp - 0x38]
add eax, dword [ebp + 0x14]
movups xmmword [ebx], xmm0
adc ecx, dword [ebp + 0x18]
movups xmmword [ebx + 0x10], xmm0
mov byte [ebx + 0x20], 0
mov dword [edx], eax
mov dword [edx + 4], ecx
mov byte [ebp - 0x24], al
mov ecx, dword [edx]
mov eax, dword [edx + 4]
shrd ecx, eax, 8
push 0
sar eax, 8
mov byte [ebp - 0x23], cl
mov ecx, dword [edx]
mov eax, dword [edx + 4]
shrd ecx, eax, 0x10
push 1
sar eax, 0x10
mov byte [ebp - 0x22], cl
mov ecx, dword [edx]
mov eax, dword [edx + 4]
shrd ecx, eax, 0x18
push 0
sar eax, 0x18
push 0
lea eax, [ebp - 0x20]
mov byte [ebp - 0x21], cl
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x10001a34
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x80090016
jne 0x10001a34
push 8
push 1
push 0
push 0
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x10001a34
lea esi, [eax - 7]
jmp 0x10001b9e
lea eax, [ebp - 0x18]
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10001a56
lea esi, [eax - 8]
jmp 0x10001b9e
push 0
push 4
lea eax, [ebp - 0x24]
mov dword [ebp - 0x1c], 4
push eax
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x10001a7a
lea esi, [eax - 9]
jmp 0x10001b9e
push 0
push edi
push dword [ebp - 0x44]
mov dword [ebp - 0x1c], edi
push dword [ebp - 0x18]
mov edi, dword [sym.imp.ADVAPI32.dll_CryptHashData]
call edi
test eax, eax
jne 0x10001a9a
lea esi, [eax - 0xa]
jmp 0x10001b9e
mov eax, dword [ebp - 0x48]
test eax, eax
je 0x10001ab9
push 0
push esi
push eax
push dword [ebp - 0x18]
mov dword [ebp - 0x1c], esi
call edi
test eax, eax
jne 0x10001ab9
lea esi, [eax - 0xb]
jmp 0x10001b9e
mov esi, dword [ebp - 0x40]
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10001ac1
push 0
sub ecx, edx
push ecx
push esi
push dword [ebp - 0x18]
mov dword [ebp - 0x1c], ecx
call edi
test eax, eax
jne 0x10001ae2
lea esi, [eax - 0xc]
jmp 0x10001b9e
push 0
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0x10
push eax
lea eax, [ebp - 0x14]
push eax
push 2
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x10001b0a
lea esi, [eax - 0xd]
jmp 0x10001b9e
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 0
push eax
push 0
push 0
push 0x8003
push dword [ebp - 0x20]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10001b39
lea esi, [eax - 0xe]
jmp 0x10001b9e
mov ecx, esi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10001b40
push 0
sub ecx, edx
push ecx
push esi
push dword [ebp - 0x18]
mov dword [ebp - 0x1c], ecx
call edi
test eax, eax
jne 0x10001b5e
lea esi, [eax - 0xf]
jmp 0x10001b9e
push 0
push 0x10
lea eax, [ebp - 0x14]
mov dword [ebp - 0x1c], 0x10
push eax
push dword [ebp - 0x18]
call edi
test eax, eax
jne 0x10001b7b
lea esi, [eax - 0x10]
jmp 0x10001b9e
push 0
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0x10
push eax
lea eax, [ebp - 0x14]
push eax
push 2
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x10001bf8
lea esi, [eax - 0x11]
cmp dword [ebp - 0x2c], 0
je 0x10001baf
push dword [ebp - 0x28]
call fcn.10131c3d
add esp, 4
cmp dword [ebp - 0x3c], 0
je 0x10001bc7
push ebx
call fcn.10131c3d
mov eax, dword [ebp - 0x30]
add esp, 4
mov dword [eax], 0
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x10001bd5
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x10001be5
push 0
push eax
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
pop edi
mov eax, esi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1010f54f
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push 0
push dword [ebp - 0x20]
mov dword [ebp - 0x18], 0
call dword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
push ebx
lea ecx, [ebp - 0x14]
call fcn.100017c0
mov ecx, dword [ebp - 4]
add esp, 4
mov byte [ebx + 0x20], 0
xor ecx, ebp
xor eax, eax
pop edi
pop esi
pop ebx
call fcn.1010f54f
mov esp, ebp
pop ebp
ret