Function at 0x40c2c1
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x459407
mov eax, dword fs:[0]
push eax
sub esp, 0x1b8
mov eax, dword [0x4758c0]
xor eax, esp
mov dword [esp + 0x1b0], eax
push ebx
push esi
push edi
mov eax, dword [0x4758c0]
xor eax, esp
push eax
lea eax, [esp + 0x1c8]
mov dword fs:[0], eax
call fcn.00413f6a
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c31b
push 0x80004005
call fcn.00401271
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x10]
mov dword [esp + 0x1d0], 0
call fcn.0040c011
test eax, eax
je 0x40c67f
call fcn.00413f6a
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c361
push 0x80004005
call fcn.00401271
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0x1d0], 1
mov esi, dword [esp + 0x10]
push esi
lea ecx, [esp + 0x24]
call fcn.004083f1
call fcn.00413f6a
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c3a1
push 0x80004005
call fcn.00401271
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
lea edi, [esp + 0x1c]
lea ebx, [esp + 0x20]
mov byte [esp + 0x1d0], 2
call fcn.0040c781
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x1d4], 3
call fcn.00409571
mov byte [esp + 0x1d0], 2
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c400
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x18]
lea ecx, [esp + 0x14]
push ecx
push 0x46aa18
xor edi, edi
push ebx
mov dword [esp + 0x20], edi
call fcn.0042c1c6
add esp, 0xc
cmp dword [esp + 0x14], 0xc8
jb 0x40c486
lea eax, [ebx - 0x10]
mov byte [esp + 0x1d0], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40c44b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x1d0], 0
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c473
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1d0], 0xffffffff
lea eax, [esi - 0x10]
jmp 0x40c691
mov ecx, dword [esp + 0x20]
xor esi, esi
add ecx, 0xfffffff0
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], ecx
jmp 0x40c4a7
mov esi, dword [esp + 0x28]
xor edi, edi
mov edx, dword [esp + 0x24]
push edx
call fcn.00409681
lea ebx, [eax + 0x10]
add esp, 4
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x1d0], 4
cmp esi, edi
jbe 0x40c4ea
cmp dword [ebx - 4], 1
jle 0x40c4de
mov eax, dword [ebx - 0xc]
push eax
lea ecx, [esp + 0x20]
call fcn.00402921
mov ebx, dword [esp + 0x1c]
mov ecx, ebx
call fcn.0040bf81
sub esi, 1
jne 0x40c4c7
mov eax, ebx
lea esi, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40c4f1
sub eax, esi
push eax
mov dword [esp + 0x34], edi
mov dword [esp + 0x30], edi
push ebx
lea edi, [esp + 0x34]
mov dword [esp + 0x3c], 0x67452301
mov dword [esp + 0x40], 0xefcdab89
mov dword [esp + 0x44], 0x98badcfe
mov dword [esp + 0x48], 0x10325476
call fcn.00409751
mov eax, edi
call fcn.004098a1
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x1bc], edx
mov dword [esp + 0x1b8], ecx
mov ecx, dword [esp + 0x48]
lea edx, [esp + 0x1b8]
mov dword [esp + 0x1c0], eax
push edx
lea eax, [esp + 0xa0]
mov dword [esp + 0x1c8], ecx
call fcn.0040bce1
mov eax, dword [esp + 0x20]
lea eax, [eax + eax*2]
shl eax, 4
add eax, 0x47ac54
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x1ac], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x1b0], edx
mov edx, dword [eax + 0xc]
lea eax, [esp + 0x1ac]
add esp, 0xc
push eax
lea eax, [esp + 0x98]
mov dword [esp + 0x1ac], ecx
mov dword [esp + 0x1b0], edx
call fcn.0040bd61
mov edx, dword [esp + 0x18]
lea eax, [edx + edx*2]
shl eax, 4
lea eax, [eax + 0x47ac64]
lea ecx, [esp + 0x1a4]
add esp, 4
mov edi, 0x10
sub ecx, eax
cmp edi, 4
jb 0x40c6d1
mov esi, dword [ecx + eax]
cmp esi, dword [eax]
jne 0x40c5fa
sub edi, 4
add eax, 4
jmp 0x40c5e2
lea eax, [ebx - 0x10]
mov byte [esp + 0x1d0], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c61e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
inc eax
mov dword [esp + 0x28], eax
cmp eax, 0x1f4
jb 0x40c4a1
mov byte [esp + 0x1d0], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c65a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x1d0], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c67f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1d0], 0xffffffff
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c6aa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
or eax, 0xffffffff
mov ecx, dword [esp + 0x1c8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1b0]
xor ecx, esp
call fcn.0042aeae
mov esp, ebp
pop ebp
ret
add ebx, 0xfffffff0
mov esi, edx
mov byte [esp + 0x1d0], 2
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c6f7
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov byte [esp + 0x1d0], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c71f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
mov byte [esp + 0x1d0], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c744
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x1d0], 0xffffffff
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c76f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
jmp 0x40c6ad