Function at 0x40c172
Capabilities:
Hash data with md5

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x74
mov eax, dword [0x419074]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
push ebx
push esi
push edi
mov esi, 0x419114
mov dword [ebp - 0x20], eax
mov eax, dword [0x41ae88]
lea edi, [ebp - 0x14]
mov dword [ebp - 0x3c], eax
mov ebx, edx
lea eax, [ebp - 0x48]
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp + 0x14]
lea edx, [ebp - 0x34]
movsd dword es:[edi], dword [esi]
push eax
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x1c], ecx
push eax
movsd dword es:[edi], dword [esi]
mov ecx, ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x30], 0x67452301
mov dword [ebp - 0x2c], 0xefcdab89
movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x28], 0x98badcfe
mov dword [ebp - 0x24], 0x10325476
movsd dword es:[edi], dword [esi]
xor esi, esi
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x40], esi
call fcn.004134ac
mov edx, dword [ebp - 0x48]
mov ecx, dword [0x41912c]
mov dword [ebp - 0x50], eax
lea eax, [edx + 0x3f]
and eax, 0xffffffc0
lea edi, [edx - 1]
add edi, ecx
mov dword [ebp - 0x58], eax
dec ecx
not ecx
and edi, ecx
cmp edi, edx
jb 0x40c651
mov ebx, dword [ebp - 0x5c]
mov ecx, edi
mov eax, ebx
mov dword [ebp - 0x4c], ebx
sub ecx, edx
sub eax, edx
cmp eax, ecx
jb 0x40c220
mov eax, ecx
push eax
push esi
mov esi, dword [ebp - 0x34]
lea eax, [esi + edx]
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp dword [0x41aeec], 0
je 0x40c248
mov ecx, dword [ebp - 0x3c]
mov edx, esi
push edi
call fcn.00417077
mov dword [ebp - 0x3c], eax
cmp dword [0x41af00], 0
je 0x40c25c
push edi
mov edx, esi
lea ecx, [ebp - 0x14]
call fcn.00417847
cmp dword [0x41aeb8], 0
je 0x40c277
cmp dword [esi], 0x4643534d
jne 0x40c277
mov eax, dword [esi + 0x36]
and dword [esi + 0x36], 0
mov dword [ebp - 0x40], eax
push dword [ebp - 0x58]
mov edx, esi
lea ecx, [ebp - 0x30]
call fcn.00417847
cmp dword [0x41aeb8], 0
je 0x40c29b
cmp dword [esi], 0x4643534d
jne 0x40c29b
mov eax, dword [ebp - 0x40]
mov dword [esi + 0x36], eax
lea eax, [ebp - 0x58]
mov ecx, 0x419574
push eax
push dword [ebp - 0x60]
lea edx, [ebp - 0x30]
call fcn.00412d8b
mov dword [ebp - 0x38], eax
test eax, eax
je 0x40c552
mov eax, dword [ebp - 0x58]
mov eax, dword [eax + 0x20]
mov ecx, eax
mov dword [ebp - 0x64], eax
cmp dword [eax + 4], 0
je 0x40c2d7
call fcn.0040a5e9
mov dword [ebp - 0x68], eax
xor ecx, ecx
jmp 0x40c2e2
call fcn.0040a50c
and dword [ebp - 0x68], 0
mov ecx, eax
mov eax, dword [ebp - 0x64]
mov edx, ecx
mov dword [ebp - 0x58], ecx
push dword [eax + 0xc]
push dword [eax + 8]
push ecx
push ecx
push 0
push 2
push ecx
push dword [0x419544]
mov ecx, dword [ebp - 0x68]
push 0
call fcn.004132b0
lea ecx, [ebp - 0x6c]
mov dword [ebp - 0x54], eax
push ecx
lea ecx, [ebp - 0x38]
push ecx
lea edx, [ebp - 0x44]
mov ecx, eax
call fcn.004134ac
cmp dword [0x41aeb8], 0
mov eax, dword [ebp - 0x44]
je 0x40c336
cmp dword [eax], 0x4643534d
jne 0x40c336
mov ecx, dword [ebp - 0x40]
mov dword [eax + 0x36], ecx
push dword [ebp - 0x48]
push eax
push esi
call sub.msvcrt.dll_memcmp
xor ecx, ecx
add esp, 0xc
test eax, eax
sete cl
mov dword [ebp - 0x38], ecx
test ecx, ecx
jne 0x40c35b
mov eax, dword [ebp - 0x54]
mov dword [eax + 0x48], 1
mov ecx, dword [ebp - 0x44]
call fcn.0041275a
cmp ebx, edi
jb 0x40c36c
mov ebx, edi
mov dword [ebp - 0x4c], edi
cmp dword [ebp - 0x38], 0
jne 0x40c391
mov ecx, dword [ebp - 0x54]
xor edx, edx
inc edx
call fcn.00413585
mov edi, dword [ebp + 0xc]
mov ecx, esi
mov ebx, dword [ebp + 8]
mov edx, dword [ebp - 0x4c]
push edi
push ebx
call fcn.00411d52
jmp 0x40c3a4
mov edi, dword [ebp + 0xc]
sub esp, 0xc
mov edx, esi
push ebx
mov ebx, dword [ebp + 8]
push edi
push ebx
call fcn.00416a80
add ebx, dword [ebp - 0x4c]
adc edi, 0
push edi
push ebx
call fcn.0040ca52
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x50], 0
jne 0x40c4d8
mov ecx, dword [ebp - 0x70]
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x5c]
push eax
lea edx, [ebp - 0x34]
call fcn.004134ac
mov dword [ebp - 0x50], eax
test esi, esi
je 0x40c42f
mov ecx, dword [ebp - 0x54]
lea eax, [ebp - 0x6c]
push eax
lea eax, [ebp - 0x38]
push eax
lea edx, [ebp - 0x44]
call fcn.004134ac
push dword [ebp - 0x48]
push dword [ebp - 0x44]
push dword [ebp - 0x34]
call sub.msvcrt.dll_memcmp
xor ecx, ecx
add esp, 0xc
test eax, eax
sete cl
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x44]
call fcn.0041275a
mov esi, dword [ebp - 0x38]
test esi, esi
jne 0x40c42f
mov eax, dword [ebp - 0x54]
mov dword [eax + 0x48], 1
call fcn.00416b5c
mov ecx, dword [ebp - 0x54]
xor edx, edx
inc edx
call fcn.00413585
mov edx, dword [ebp - 0x48]
mov eax, dword [0x41912c]
lea ecx, [edx - 1]
add ecx, eax
dec eax
not eax
and ecx, eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x4c], ecx
sub ecx, edx
mov dword [ebp - 0x40], eax
sub eax, edx
cmp eax, ecx
jb 0x40c454
mov eax, ecx
push eax
mov eax, dword [ebp - 0x34]
add eax, edx
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp dword [0x41aeec], 0
je 0x40c47f
push dword [ebp - 0x4c]
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x3c]
call fcn.00417077
mov dword [ebp - 0x3c], eax
cmp dword [0x41af00], 0
je 0x40c496
push dword [ebp - 0x4c]
mov edx, dword [ebp - 0x34]
lea ecx, [ebp - 0x14]
call fcn.00417847
mov eax, dword [ebp - 0x4c]
cmp dword [ebp - 0x40], eax
jae 0x40c4a3
mov eax, dword [ebp - 0x40]
jmp 0x40c4a6
mov dword [ebp - 0x40], eax
test esi, esi
je 0x40c4ba
mov edx, dword [ebp - 0x34]
sub esp, 0xc
push eax
push edi
push ebx
call fcn.00416a80
jmp 0x40c4c6
mov ecx, dword [ebp - 0x34]
mov edx, eax
push edi
push ebx
call fcn.00411d52
add ebx, dword [ebp - 0x40]
adc edi, 0
push edi
push ebx
call fcn.0040ca52
jmp 0x40c3b4
test esi, esi
je 0x40c4f9
mov ecx, dword [ebp - 0x54]
xor edx, edx
inc edx
call fcn.00413585
call fcn.00416bc2
mov edx, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x60]
call fcn.0040c95e
jmp 0x40c51d
mov edx, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x64]
call fcn.0040a671
call fcn.00416b5c
mov eax, dword [ebp - 0x3c]
lea esi, [ebp - 0x14]
mov edi, 0x419114
mov dword [0x41ae88], 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 eax, dword [ebp - 0x68]
test eax, eax
je 0x40c533
push eax
push 0
push dword [0x419de0]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x40c638
push eax
push 0
push dword [0x419de0]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x40c638
cmp ebx, edi
jb 0x40c558
mov ebx, edi
mov edi, dword [ebp + 0xc]
mov edx, ebx
push edi
push dword [ebp + 8]
mov ecx, esi
call fcn.00411d52
mov esi, dword [ebp + 8]
add esi, ebx
adc edi, 0
push edi
push esi
call fcn.0040ca52
cmp dword [ebp - 0x50], 0
jne 0x40c624
mov ecx, dword [ebp - 0x70]
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x5c]
push eax
lea edx, [ebp - 0x34]
call fcn.004134ac
mov edx, dword [ebp - 0x48]
mov ecx, dword [0x41912c]
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x5c]
lea ebx, [edx - 1]
mov dword [ebp - 0x50], eax
add ebx, ecx
sub eax, edx
dec ecx
not ecx
and ebx, ecx
mov ecx, ebx
sub ecx, edx
cmp eax, ecx
jb 0x40c5bc
mov eax, ecx
push eax
mov eax, dword [ebp - 0x34]
add eax, edx
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
cmp dword [0x41aeec], 0
je 0x40c5e5
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x3c]
push ebx
call fcn.00417077
mov dword [ebp - 0x3c], eax
cmp dword [0x41af00], 0
je 0x40c5fa
mov edx, dword [ebp - 0x34]
lea ecx, [ebp - 0x14]
push ebx
call fcn.00417847
cmp dword [ebp - 0x50], ebx
jae 0x40c602
mov ebx, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x34]
mov edx, ebx
push edi
push esi
call fcn.00411d52
add esi, ebx
adc edi, 0
push edi
push esi
call fcn.0040ca52
cmp dword [ebp - 0x6c], 0
je 0x40c581
mov eax, dword [ebp - 0x3c]
lea esi, [ebp - 0x14]
mov edi, 0x419114
mov dword [0x41ae88], 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]
xor eax, eax
cmp dword [ebp - 0x38], eax
pop edi
sete al
xor ecx, ebp
pop esi
pop ebx
call fcn.00417b60
leave
ret 0x10
push 0x402644
push 0x216
call fcn.004129be
int3