Function at 0x40c667
Capabilities:
Hash data with md5

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x7c
mov eax, dword [0x419074]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
and dword [ebp - 0x58], 0
push ebx
push esi
push edi
mov esi, 0x419114
mov dword [ebp - 0x10], eax
mov eax, dword [0x41ae88]
lea edi, [ebp - 0x30]
mov dword [ebp - 0x4c], eax
mov ebx, edx
lea eax, [ebp - 0x64]
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp + 0x14]
lea edx, [ebp - 0x68]
movsd dword es:[edi], dword [esi]
push eax
lea eax, [ebp - 0x5c]
mov dword [ebp - 0xc], ecx
push eax
movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x20], 0x67452301
mov dword [ebp - 0x1c], 0xefcdab89
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x18], 0x98badcfe
mov dword [ebp - 0x14], 0x10325476
movsd dword es:[edi], dword [esi]
call fcn.004134ac
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x50], eax
mov eax, dword [0x41912c]
lea edi, [edx + 0x3f]
lea esi, [edx - 1]
and edi, 0xffffffc0
add esi, eax
dec eax
not eax
and esi, eax
mov dword [ebp - 0x60], esi
cmp esi, edx
jb 0x40c948
mov eax, dword [ebp - 0x5c]
mov ecx, esi
mov dword [ebp - 0x54], eax
sub ecx, edx
sub eax, edx
cmp eax, ecx
jb 0x40c70e
mov eax, ecx
mov ebx, dword [ebp - 0x68]
push eax
push 0
lea eax, [ebx + edx]
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp dword [0x41aeec], 0
je 0x40c737
mov ecx, dword [ebp - 0x4c]
mov edx, ebx
push esi
call fcn.00417077
mov dword [ebp - 0x4c], eax
cmp dword [0x41af00], 0
je 0x40c74b
push esi
mov edx, ebx
lea ecx, [ebp - 0x30]
call fcn.00417847
cmp dword [0x41aeb8], 0
je 0x40c766
cmp dword [ebx], 0x4643534d
jne 0x40c766
mov eax, dword [ebx + 0x36]
and dword [ebx + 0x36], 0
mov dword [ebp - 0x58], eax
push edi
mov edx, ebx
lea ecx, [ebp - 0x20]
call fcn.00417847
cmp dword [0x41aeb8], 0
lea esi, [ebp - 0x20]
push 6
pop ecx
lea edi, [ebp - 0x48]
rep movsd dword es:[edi], dword [esi]
je 0x40c793
cmp dword [ebx], 0x4643534d
jne 0x40c793
mov eax, dword [ebp - 0x58]
mov dword [ebx + 0x36], eax
lea eax, [ebp - 0x58]
mov ecx, 0x419574
push eax
push dword [ebp - 0x6c]
lea edx, [ebp - 0x20]
call fcn.00412d8b
mov ecx, dword [ebp - 0x5c]
mov edx, eax
mov eax, dword [ebp - 0x60]
mov dword [ebp - 0x70], edx
cmp ecx, eax
jb 0x40c7bb
mov ecx, eax
mov dword [ebp - 0x54], ecx
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
test edx, edx
je 0x40c7dd
mov eax, dword [ebp - 0x58]
sub esp, 0xc
mov edx, ebx
mov eax, dword [eax + 0x20]
push ecx
push esi
push edi
mov dword [ebp - 0x60], eax
call fcn.00416a80
jmp 0x40c7ec
and dword [ebp - 0x60], 0
mov edx, ecx
push esi
push edi
mov ecx, ebx
call fcn.00411d52
add edi, dword [ebp - 0x54]
adc esi, 0
push esi
push edi
call fcn.0040ca52
cmp dword [ebp - 0x50], 0
jne 0x40c8dc
mov ecx, dword [ebp - 0x74]
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x5c]
push eax
lea edx, [ebp - 0x68]
call fcn.004134ac
mov edx, dword [ebp - 0x64]
mov dword [ebp - 0x7c], eax
mov eax, dword [0x41912c]
lea ecx, [edx - 1]
add ecx, eax
dec eax
not eax
and ecx, eax
lea eax, [edx + 0x3f]
and eax, 0xffffffc0
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x78], eax
sub ecx, edx
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x50], eax
sub eax, edx
cmp eax, ecx
jb 0x40c847
mov eax, ecx
mov ebx, dword [ebp - 0x68]
push eax
push 0
lea eax, [ebx + edx]
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x48]
mov edx, ebx
push dword [ebp - 0x78]
call fcn.00417847
cmp dword [0x41aeec], 0
je 0x40c87f
push dword [ebp - 0x54]
mov ecx, dword [ebp - 0x4c]
mov edx, ebx
call fcn.00417077
mov dword [ebp - 0x4c], eax
cmp dword [0x41af00], 0
je 0x40c895
push dword [ebp - 0x54]
mov edx, ebx
lea ecx, [ebp - 0x30]
call fcn.00417847
mov eax, dword [ebp - 0x54]
cmp dword [ebp - 0x50], eax
jae 0x40c8a2
mov eax, dword [ebp - 0x50]
jmp 0x40c8a5
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x70], 0
je 0x40c8ba
sub esp, 0xc
mov edx, ebx
push eax
push esi
push edi
call fcn.00416a80
jmp 0x40c8c5
push esi
push edi
mov edx, eax
mov ecx, ebx
call fcn.00411d52
add edi, dword [ebp - 0x50]
adc esi, 0
push esi
push edi
call fcn.0040ca52
cmp dword [ebp - 0x7c], 0
je 0x40c803
mov ebx, dword [ebp - 0x6c]
lea eax, [ebp - 0x58]
push eax
push ebx
lea edx, [ebp - 0x48]
mov ecx, 0x41acc8
call fcn.00412d8b
cmp dword [ebp - 0x70], 0
je 0x40c920
test eax, eax
je 0x40c911
call fcn.00416bc2
mov edx, dword [ebp - 0x58]
mov ecx, ebx
mov edx, dword [edx + 0x20]
call fcn.0040c95e
xor eax, eax
jmp 0x40c937
mov ecx, dword [ebp - 0x60]
mov edx, ebx
call fcn.0040a671
call fcn.00416b5c
mov eax, dword [ebp - 0x4c]
lea esi, [ebp - 0x30]
mov edi, 0x419114
mov dword [0x41ae88], eax
xor eax, eax
inc eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00417b60
leave
ret 0x10
push 0x402644
push 0x216
call fcn.004129be
int3