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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x2c
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
mov eax, dword [eax]
mov dword [edx], 0
mov dword [ebp - 0x28], eax
cmp byte [eax + 0x2e8], 0
je 0x41c814
cmp byte [eax + 0xf9], 0
jne 0x41c814
push ebx
push dword [ebp + 0xc]
push 1
push dword [ebp + 8]
call fcn.0040e2ef
add esp, 0x10
test eax, eax
je 0x41c814
jmp 0x41c842
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x20], 7
ja case.default.0x41c4a8
mov eax, dword [ecx + 0x20]
jmp dword [eax*4 + 0x4220f8]
mov ebx, dword [ebp + 0xc]
mov dl, byte [ebx]
lea eax, [edx - 0x30]
cmp al, 9
jbe 0x41c4cd
lea eax, [edx - 0x41]
cmp al, 5
jbe 0x41c4cd
lea eax, [edx - 0x61]
cmp al, 5
ja 0x41c857
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x1c]
cmp eax, 0xf
jle 0x41c4e2
mov eax, 1
jmp 0x41c867
mov ebx, dword [ebp + 8]
mov byte [ebx + eax + 8], dl
inc dword [ebp + 0xc]
add esi, 0xffffffff
adc edi, 0xffffffff
inc dword [ebx + 0x1c]
jmp case.default.0x41c4a8
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x14]
mov byte [edx + eax + 8], 0
push ebx
push 0x10
push ecx
push dword [ebp - 0x30]
call fcn.0041d570
mov ebx, dword [ebp + 8]
add esp, 0x10
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x2c], edx
cmp edx, 0x7fffffff
jne 0x41c536
inc eax
jne 0x41c536
call sub.msvcrt.dll__errno
cmp dword [eax], 0x22
je 0x41c849
mov eax, dword [ebp + 8]
mov dword [eax + 0x20], 1
jmp 0x41c82d
mov edx, dword [ebp + 0xc]
cmp byte [edx], 0xa
jne 0x41c79a
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x28]
or eax, dword [ecx + 0x2c]
jne 0x41c572
mov dword [ecx + 0x20], 5
mov dword [ecx + 0x38c], 0
jmp 0x41c79a
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x20], 2
jmp 0x41c79a
push ecx
push ecx
mov ecx, dword [ebp + 8]
mov ebx, edi
mov edx, dword [ecx + 0x2c]
mov eax, dword [ecx + 0x28]
cmp edi, edx
mov ecx, esi
jl 0x41c59e
jg 0x41c59a
cmp esi, eax
jbe 0x41c59e
mov ecx, eax
mov ebx, edx
push ebx
push ecx
call fcn.00415e73
mov ebx, dword [ebp - 0x28]
add esp, 0x10
mov dword [ebp - 0x24], eax
cmp byte [ebx + 0xf9], 0
jne 0x41c5db
mov dword [ebp - 0x2c], 0
cmp byte [ebx + 0x2e8], 0
jne 0x41c5e5
push eax
push dword [ebp + 0xc]
push 1
push dword [ebp + 8]
call fcn.0040e2ef
add esp, 0x10
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jne 0x41c842
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x24]
add dword [eax], edx
mov dword [ebp - 0x38], ebx
mov eax, dword [ecx + 0x28]
mov edx, dword [ecx + 0x2c]
sub eax, dword [ebp - 0x38]
mov dword [ebp - 0x34], 0
sbb edx, dword [ebp - 0x34]
add dword [ebp + 0xc], ebx
sub esi, dword [ebp - 0x38]
mov dword [ecx + 0x28], eax
sbb edi, dword [ebp - 0x34]
mov dword [ecx + 0x2c], edx
mov ecx, edx
or ecx, eax
jne case.default.0x41c4a8
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x20], 3
jmp case.default.0x41c4a8
mov edx, dword [ebp + 0xc]
mov al, byte [edx]
cmp al, 0xa
jne 0x41c657
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x1c], 0
mov dword [ecx + 0x30], 0
mov dword [ecx + 0x20], 0
jmp 0x41c79a
cmp al, 0xd
jne 0x41c850
jmp 0x41c79a
mov ebx, dword [ebp + 0xc]
mov al, byte [ebx]
cmp al, 0xd
je 0x41c675
cmp al, 0xa
jne 0x41c716
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x38c]
test edx, edx
je 0x41c707
mov ecx, eax
mov eax, dword [eax + 0x384]
mov byte [eax + edx], 0xd
mov eax, dword [ecx + 0x384]
mov byte [edx + eax + 1], 0xa
add edx, 2
mov eax, dword [ecx + 0x384]
mov dword [ecx + 0x38c], edx
mov byte [eax + edx], 0
mov ebx, dword [ebp - 0x28]
cmp byte [ebx + 0x2e8], 0
jne 0x41c6db
push dword [ecx + 0x38c]
push dword [ecx + 0x384]
push 2
push ecx
call fcn.0040e2ef
add esp, 0x10
test eax, eax
jne 0x41c842
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x2c], 0
mov dword [eax + 0x38c], 0
mov dword [eax + 0x20], 6
cmp byte [edx], 0xa
jne 0x41c79a
jmp 0x41c82d
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x20], 7
jmp case.default.0x41c4a8
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x388]
cmp dword [ebx + 0x38c], eax
jl 0x41c779
test eax, eax
je 0x41c747
add eax, eax
mov dword [ebx + 0x388], eax
add eax, 3
push edx
push edx
push eax
push dword [ebx + 0x384]
call dword [0x41e010]
jmp 0x41c762
mov eax, dword [ebp + 8]
sub esp, 0xc
mov dword [eax + 0x388], pe_nt_image_headers32
push 0x83
call dword [0x41e008]
add esp, 0x10
test eax, eax
jne 0x41c770
mov al, 6
jmp 0x41c867
mov edx, dword [ebp + 8]
mov dword [edx + 0x384], eax
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x38c]
mov ecx, dword [ecx + 0x384]
mov dl, byte [ebx]
mov byte [ecx + eax], dl
inc eax
mov edx, dword [ebp + 8]
mov dword [edx + 0x38c], eax
inc dword [ebp + 0xc]
jmp 0x41c7b9
mov ecx, dword [ebp + 0xc]
cmp byte [ecx], 0xa
jne 0x41c850
mov ebx, dword [ebp + 8]
inc ecx
mov dword [ebp + 0xc], ecx
mov dword [ebx + 0x20], 7
add esi, 0xffffffff
adc edi, 0xffffffff
jmp case.default.0x41c4a8
mov edx, dword [ebp + 0xc]
mov al, byte [edx]
cmp al, 0xd
je 0x41c7da
cmp al, 0xa
je 0x41c7e3
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x20], 5
jmp case.default.0x41c4a8
inc dword [ebp + 0xc]
add esi, 0xffffffff
adc edi, 0xffffffff
mov ebx, dword [ebp + 8]
mov dword [ebx + 0x20], 4
jmp case.default.0x41c4a8
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0xa
jne 0x41c850
add esi, 0xffffffff
push eax
adc edi, 0xffffffff
push eax
push edi
push esi
call fcn.00415e73
mov edx, dword [ebp + 8]
add esp, 0x10
mov dword [edx + 0x30], eax
or eax, 0xffffffff
jmp 0x41c867
mov edi, ebx
mov ecx, dword [ebp + 8]
add ecx, 8
mov esi, ebx
sar edi, 0x1f
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x30], ecx
jmp case.default.0x41c4a8
mov dword [ebp - 0x2c], 0
mov ebx, edi
or ebx, esi
jne 0x41c498
xor eax, eax
jmp 0x41c867
mov eax, 4
jmp 0x41c867
mov eax, 2
jmp 0x41c867
mov eax, 3
jmp 0x41c867
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x1c]
test eax, eax
jne 0x41c4fa
jmp 0x41c849
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret