Function at 0x40e323
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
lea eax, [esp + 0x20]
mov esi, 0x58b014
xor ebx, ebx
mov dword [esp + 0x50], edx
mov dword [esp + 0x4c], ecx
and dword [eax], 0
mov dword [eax + 4], 1
and dword [eax + 8], 0
cmp dword [esp + 0x50], ebx
je 0x40e78d
mov dword [esp + 0xc], ebx
mov dword [esp + 0x54], ebx
and dword [esp + 0x3c], 0
xor ebx, ebx
lea ecx, [esp + 0x58]
mov edx, 0x51459c
inc ebx
mov dword [esp + 0x40], ebx
and dword [esp + 0x44], 0
push 6
mov ebx, esi
call fcn.004127c2
pop eax
mov edi, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
lea esi, [esp + 0x3c]
mov ecx, esi
add edx, edi
push edi
call fcn.00419104
pop eax
mov ecx, dword [esp + 0x58]
mov edx, edi
call fcn.0043e31d
lea ecx, [esp + 0x58]
lea edx, [esp + 0x54]
call fcn.004019b8
mov edi, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov ecx, esi
add edx, edi
push edi
call fcn.00419104
pop eax
mov ecx, dword [esp + 0x58]
mov edx, edi
call fcn.0043e31d
mov eax, 0x551f1f
mov ecx, esi
lea edx, [0x551f20]
push eax
call fcn.00419104
pop eax
mov eax, dword [ebx + 4]
mov edx, dword [ebx + 8]
mov ecx, esi
add edx, eax
push eax
call fcn.00419104
pop eax
xor eax, eax
push 0x13
pop ecx
lea edi, [esp + 0x68]
lea ebx, [esp + 0x58]
rep stosd dword es:[edi], eax
mov dword [esp + 0x58], 0x67452301
mov dword [esp + 0x5c], 0xefcdab89
mov dword [esp + 0x60], 0x98badcfe
mov dword [esp + 0x64], 0x10325476
mov byte [esp + 0xb4], 0
mov ecx, ebx
mov edi, dword [esp + 0x40]
mov edx, edi
push dword [esp + 0x44]
call fcn.004212e9
pop eax
lea esi, [esp + 0x10]
mov edx, ebx
mov ecx, esi
call fcn.00403a79
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
call fcn.0043e31d
movsd xmm0, qword [esp + 0x10]
mov eax, dword [esp + 0x18]
mov ecx, ebx
mov edx, esi
movsd qword [esp + 0x20], xmm0
xorps xmm0, xmm0
mov dword [esp + 0x28], eax
movaps xmmword [esp + 0x10], xmm0
push 0x10
call fcn.00421440
pop eax
and dword [esp + 0x30], 0
xor eax, eax
mov cl, 3
inc eax
mov dword [esp + 0x34], eax
movzx eax, byte [esp + 0x10]
and dword [esp + 0x38], 0
div cl
movzx eax, ah
cmp al, 1
je 0x40e552
test eax, eax
jne 0x40e63f
mov edx, dword [0x58b034]
movzx eax, byte [esp + 0x11]
mov ecx, dword [0x58b030]
push 0x51457c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, esp
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov ebx, edi
lea edi, [esp + 0x30]
mov ecx, edi
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, dword [0x58b028]
movzx eax, byte [esp + 0x12]
mov ecx, dword [0x58b024]
push 0x51458c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, esp
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov ecx, edi
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, edi
mov edi, ebx
jmp 0x40e76b
mov edx, dword [0x58b034]
movzx eax, byte [esp + 0x11]
mov ecx, dword [0x58b030]
push 0x51454c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ebx, esp
mov ecx, ebx
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov dword [esp + 0x48], edi
lea edi, [esp + 0x30]
mov ecx, edi
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, dword [0x58b034]
movzx eax, byte [esp + 0x12]
mov ecx, dword [0x58b030]
push 0x51455c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, ebx
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov ecx, edi
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, dword [0x58b028]
movzx eax, byte [esp + 0x13]
mov ecx, dword [0x58b024]
push 0x51456c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, ebx
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov ecx, edi
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, edi
mov edi, dword [esp + 0x48]
jmp 0x40e76b
mov edx, dword [0x58b034]
movzx eax, byte [esp + 0x11]
mov ecx, dword [0x58b030]
push 0x51450c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, esp
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
lea ecx, [esp + 0x30]
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, dword [0x58b028]
movzx eax, byte [esp + 0x12]
mov ecx, dword [0x58b024]
push 0x51451c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ebx, esp
mov ecx, ebx
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
lea ecx, [esp + 0x30]
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, dword [0x58b034]
movzx eax, byte [esp + 0x13]
mov ecx, dword [0x58b030]
push 0x51452c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, ebx
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
lea ecx, [esp + 0x30]
mov ebx, ecx
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, dword [0x58b028]
movzx eax, byte [esp + 0x14]
mov ecx, dword [0x58b024]
push 0x51453c
push eax
call fcn.004042f5
pop ecx
pop edx
mov edx, dword [eax]
mov ecx, esp
push dword [eax + 4]
call fcn.004127c2
pop eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
mov ecx, ebx
add edx, esi
push esi
call fcn.00419104
pop eax
mov ecx, dword [esp]
mov edx, esi
call fcn.0043e31d
mov edx, ebx
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 0xc]
call fcn.00403669
mov ecx, dword [esp + 0x3c]
mov edx, edi
call fcn.0043e31d
inc ebx
lea esi, [esp + 0x20]
jmp 0x40e353
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x24]
call fcn.0043e31d
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret