Function at 0x401000
Capabilities:
Hash data with md5

Disassembly:
pushal
mov esi, dword [esp + 0x24]
mov dword [esi], 0x67452301
mov dword [esi + 4], 0xefcdab89
mov dword [esi + 8], 0x98badcfe
mov dword [esi + 0xc], 0x10325476
mov eax, dword [esp + 0x2c]
push eax
xor edx, edx
mov ecx, 0x40
div ecx
inc eax
pop edx
sub esp, 0x40
mov ebx, esp
mov esi, dword [esp + 0x68]
xchg edx, eax
mov edi, ebx
dec edx
jne 0x401080
test eax, eax
js 0x401049
mov byte [eax + ebx], 0x80
jmp 0x40104c
xor eax, eax
dec eax
mov ecx, 0x40
sub ecx, eax
add edi, eax
push eax
xor eax, eax
inc edi
dec ecx
rep stosb byte es:[edi], al
pop eax
test eax, eax
js 0x401066
cmp eax, 0x38
jae 0x40107f
push eax
mov eax, dword [esp + 0x70]
push edx
xor edx, edx
mov ecx, 8
mul ecx
mov dword [ebx + 0x38], eax
mov dword [ebx + 0x3c], edx
pop edx
pop eax
jmp 0x401080
inc edx
test eax, eax
js 0x40108b
cmp eax, 0x40
jae 0x401091
jmp 0x40108d
xor eax, eax
mov ecx, eax
jmp 0x401096
mov ecx, 0x40
mov edi, ebx
rep movsb byte es:[edi], byte [esi]
push eax
push edx
push ebx
push esi
lea esi, [esp + 0x10]
mov edi, dword [esp + 0x74]
push edi
mov eax, dword [edi]
mov ebx, dword [edi + 4]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 0xc]
mov edi, ebx
mov ebp, ebx
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea eax, [edi + eax - 0x28955b88]
add eax, dword [esi]
rol eax, 7
add eax, ebx
mov edi, eax
mov ebp, eax
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea edx, [edi + edx - 0x173848aa]
add edx, dword [esi + 4]
rol edx, 0xc
add edx, eax
mov edi, edx
mov ebp, edx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea ecx, [edi + ecx + 0x242070db]
add ecx, dword [esi + 8]
rol ecx, 0x11
add ecx, edx
mov edi, ecx
mov ebp, ecx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ebx, [edi + ebx - 0x3e423112]
add ebx, dword [esi + 0xc]
rol ebx, 0x16
add ebx, ecx
mov edi, ebx
mov ebp, ebx
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea eax, [edi + eax - 0xa83f051]
add eax, dword [esi + 0x10]
rol eax, 7
add eax, ebx
mov edi, eax
mov ebp, eax
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea edx, [edi + edx + 0x4787c62a]
add edx, dword [esi + 0x14]
rol edx, 0xc
add edx, eax
mov edi, edx
mov ebp, edx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea ecx, [edi + ecx - 0x57cfb9ed]
add ecx, dword [esi + 0x18]
rol ecx, 0x11
add ecx, edx
mov edi, ecx
mov ebp, ecx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ebx, [edi + ebx - 0x2b96aff]
add ebx, dword [esi + 0x1c]
rol ebx, 0x16
add ebx, ecx
mov edi, ebx
mov ebp, ebx
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea eax, [edi + eax + 0x698098d8]
add eax, dword [esi + 0x20]
rol eax, 7
add eax, ebx
mov edi, eax
mov ebp, eax
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea edx, [edi + edx - 0x74bb0851]
add edx, dword [esi + 0x24]
rol edx, 0xc
add edx, eax
mov edi, edx
mov ebp, edx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea ecx, [edi + ecx - 0xa44f]
add ecx, dword [esi + 0x28]
rol ecx, 0x11
add ecx, edx
mov edi, ecx
mov ebp, ecx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ebx, [edi + ebx - 0x76a32842]
add ebx, dword [esi + 0x2c]
rol ebx, 0x16
add ebx, ecx
mov edi, ebx
mov ebp, ebx
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea eax, [edi + eax + 0x6b901122]
add eax, dword [esi + 0x30]
rol eax, 7
add eax, ebx
mov edi, eax
mov ebp, eax
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea edx, [edi + edx - 0x2678e6d]
add edx, dword [esi + 0x34]
rol edx, 0xc
add edx, eax
mov edi, edx
mov ebp, edx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea ecx, [edi + ecx - 0x5986bc72]
add ecx, dword [esi + 0x38]
rol ecx, 0x11
add ecx, edx
mov edi, ecx
mov ebp, ecx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ebx, [edi + ebx + 0x49b40821]
add ebx, dword [esi + 0x3c]
rol ebx, 0x16
add ebx, ecx
mov edi, edx
mov ebp, edx
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea eax, [edi + eax - 0x9e1da9e]
add eax, dword [esi + 4]
rol eax, 5
add eax, ebx
mov edi, ecx
mov ebp, ecx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea edx, [edi + edx - 0x3fbf4cc0]
add edx, dword [esi + 0x18]
rol edx, 9
add edx, eax
mov edi, ebx
mov ebp, ebx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ecx, [edi + ecx + 0x265e5a51]
add ecx, dword [esi + 0x2c]
rol ecx, 0xe
add ecx, edx
mov edi, eax
mov ebp, eax
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea ebx, [edi + ebx - 0x16493856]
add ebx, dword [esi]
rol ebx, 0x14
add ebx, ecx
mov edi, edx
mov ebp, edx
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea eax, [edi + eax - 0x29d0efa3]
add eax, dword [esi + 0x14]
rol eax, 5
add eax, ebx
mov edi, ecx
mov ebp, ecx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea edx, [edi + edx + 0x2441453]
add edx, dword [esi + 0x28]
rol edx, 9
add edx, eax
mov edi, ebx
mov ebp, ebx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ecx, [edi + ecx - 0x275e197f]
add ecx, dword [esi + 0x3c]
rol ecx, 0xe
add ecx, edx
mov edi, eax
mov ebp, eax
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea ebx, [edi + ebx - 0x182c0438]
add ebx, dword [esi + 0x10]
rol ebx, 0x14
add ebx, ecx
mov edi, edx
mov ebp, edx
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea eax, [edi + eax + 0x21e1cde6]
add eax, dword [esi + 0x24]
rol eax, 5
add eax, ebx
mov edi, ecx
mov ebp, ecx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea edx, [edi + edx - 0x3cc8f82a]
add edx, dword [esi + 0x38]
rol edx, 9
add edx, eax
mov edi, ebx
mov ebp, ebx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ecx, [edi + ecx - 0xb2af279]
add ecx, dword [esi + 0xc]
rol ecx, 0xe
add ecx, edx
mov edi, eax
mov ebp, eax
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea ebx, [edi + ebx + 0x455a14ed]
add ebx, dword [esi + 0x20]
rol ebx, 0x14
add ebx, ecx
mov edi, edx
mov ebp, edx
and edi, ebx
not ebp
and ebp, ecx
or edi, ebp
lea eax, [edi + eax - 0x561c16fb]
add eax, dword [esi + 0x34]
rol eax, 5
add eax, ebx
mov edi, ecx
mov ebp, ecx
and edi, eax
not ebp
and ebp, ebx
or edi, ebp
lea edx, [edi + edx - 0x3105c08]
add edx, dword [esi + 8]
rol edx, 9
add edx, eax
mov edi, ebx
mov ebp, ebx
and edi, edx
not ebp
and ebp, eax
or edi, ebp
lea ecx, [edi + ecx + 0x676f02d9]
add ecx, dword [esi + 0x1c]
rol ecx, 0xe
add ecx, edx
mov edi, eax
mov ebp, eax
and edi, ecx
not ebp
and ebp, edx
or edi, ebp
lea ebx, [edi + ebx - 0x72d5b376]
add ebx, dword [esi + 0x30]
rol ebx, 0x14
add ebx, ecx
mov ebp, ebx
xor ebp, ecx
xor ebp, edx
lea eax, [ebp + eax - 0x5c6be]
add eax, dword [esi + 0x14]
rol eax, 4
add eax, ebx
mov ebp, eax
xor ebp, ebx
xor ebp, ecx
lea edx, [ebp + edx - 0x788e097f]
add edx, dword [esi + 0x20]
rol edx, 0xb
add edx, eax
mov ebp, edx
xor ebp, eax
xor ebp, ebx
lea ecx, [ebp + ecx + 0x6d9d6122]
add ecx, dword [esi + 0x2c]
rol ecx, 0x10
add ecx, edx
mov ebp, ecx
xor ebp, edx
xor ebp, eax
lea ebx, [ebp + ebx - 0x21ac7f4]
add ebx, dword [esi + 0x38]
rol ebx, 0x17
add ebx, ecx
mov ebp, ebx
xor ebp, ecx
xor ebp, edx
lea eax, [ebp + eax - 0x5b4115bc]
add eax, dword [esi + 4]
rol eax, 4
add eax, ebx
mov ebp, eax
xor ebp, ebx
xor ebp, ecx
lea edx, [ebp + edx + 0x4bdecfa9]
add edx, dword [esi + 0x10]
rol edx, 0xb
add edx, eax
mov ebp, edx
xor ebp, eax
xor ebp, ebx
lea ecx, [ebp + ecx - 0x944b4a0]
add ecx, dword [esi + 0x1c]
rol ecx, 0x10
add ecx, edx
mov ebp, ecx
xor ebp, edx
xor ebp, eax
lea ebx, [ebp + ebx - 0x41404390]
add ebx, dword [esi + 0x28]
rol ebx, 0x17
add ebx, ecx
mov ebp, ebx
xor ebp, ecx
xor ebp, edx
lea eax, [ebp + eax + 0x289b7ec6]
add eax, dword [esi + 0x34]
rol eax, 4
add eax, ebx
mov ebp, eax
xor ebp, ebx
xor ebp, ecx
lea edx, [ebp + edx - 0x155ed806]
add edx, dword [esi]
rol edx, 0xb
add edx, eax
mov ebp, edx
xor ebp, eax
xor ebp, ebx
lea ecx, [ebp + ecx - 0x2b10cf7b]
add ecx, dword [esi + 0xc]
rol ecx, 0x10
add ecx, edx
mov ebp, ecx
xor ebp, edx
xor ebp, eax
lea ebx, [ebp + ebx + 0x4881d05]
add ebx, dword [esi + 0x18]
rol ebx, 0x17
add ebx, ecx
mov ebp, ebx
xor ebp, ecx
xor ebp, edx
lea eax, [ebp + eax - 0x262b2fc7]
add eax, dword [esi + 0x24]
rol eax, 4
add eax, ebx
mov ebp, eax
xor ebp, ebx
xor ebp, ecx
lea edx, [ebp + edx - 0x1924661b]
add edx, dword [esi + 0x30]
rol edx, 0xb
add edx, eax
mov ebp, edx
xor ebp, eax
xor ebp, ebx
lea ecx, [ebp + ecx + 0x1fa27cf8]
add ecx, dword [esi + 0x3c]
rol ecx, 0x10
add ecx, edx
mov ebp, ecx
xor ebp, edx
xor ebp, eax
lea ebx, [ebp + ebx - 0x3b53a99b]
add ebx, dword [esi + 8]
rol ebx, 0x17
add ebx, ecx
mov ebp, edx
not ebp
or ebp, ebx
xor ebp, ecx
lea eax, [ebp + eax - 0xbd6ddbc]
add eax, dword [esi]
rol eax, 6
add eax, ebx
mov ebp, ecx
not ebp
or ebp, eax
xor ebp, ebx
lea edx, [ebp + edx + 0x432aff97]
add edx, dword [esi + 0x1c]
rol edx, 0xa
add edx, eax
mov ebp, ebx
not ebp
or ebp, edx
xor ebp, eax
lea ecx, [ebp + ecx - 0x546bdc59]
add ecx, dword [esi + 0x38]
rol ecx, 0xf
add ecx, edx
mov ebp, eax
not ebp
or ebp, ecx
xor ebp, edx
lea ebx, [ebp + ebx - 0x36c5fc7]
add ebx, dword [esi + 0x14]
rol ebx, 0x15
add ebx, ecx
mov ebp, edx
not ebp
or ebp, ebx
xor ebp, ecx
lea eax, [ebp + eax + 0x655b59c3]
add eax, dword [esi + 0x30]
rol eax, 6
add eax, ebx
mov ebp, ecx
not ebp
or ebp, eax
xor ebp, ebx
lea edx, [ebp + edx - 0x70f3336e]
add edx, dword [esi + 0xc]
rol edx, 0xa
add edx, eax
mov ebp, ebx
not ebp
or ebp, edx
xor ebp, eax
lea ecx, [ebp + ecx - 0x100b83]
add ecx, dword [esi + 0x28]
rol ecx, 0xf
add ecx, edx
mov ebp, eax
not ebp
or ebp, ecx
xor ebp, edx
lea ebx, [ebp + ebx - 0x7a7ba22f]
add ebx, dword [esi + 4]
rol ebx, 0x15
add ebx, ecx
mov ebp, edx
not ebp
or ebp, ebx
xor ebp, ecx
lea eax, [ebp + eax + 0x6fa87e4f]
add eax, dword [esi + 0x20]
rol eax, 6
add eax, ebx
mov ebp, ecx
not ebp
or ebp, eax
xor ebp, ebx
lea edx, [ebp + edx - 0x1d31920]
add edx, dword [esi + 0x3c]
rol edx, 0xa
add edx, eax
mov ebp, ebx
not ebp
or ebp, edx
xor ebp, eax
lea ecx, [ebp + ecx - 0x5cfebcec]
add ecx, dword [esi + 0x18]
rol ecx, 0xf
add ecx, edx
mov ebp, eax
not ebp
or ebp, ecx
xor ebp, edx
lea ebx, [ebp + ebx + 0x4e0811a1]
add ebx, dword [esi + 0x34]
rol ebx, 0x15
add ebx, ecx
mov ebp, edx
not ebp
or ebp, ebx
xor ebp, ecx
lea eax, [ebp + eax - 0x8ac817e]
add eax, dword [esi + 0x10]
rol eax, 6
add eax, ebx
mov ebp, ecx
not ebp
or ebp, eax
xor ebp, ebx
lea edx, [ebp + edx - 0x42c50dcb]
add edx, dword [esi + 0x2c]
rol edx, 0xa
add edx, eax
mov ebp, ebx
not ebp
or ebp, edx
xor ebp, eax
lea ecx, [ebp + ecx + 0x2ad7d2bb]
add ecx, dword [esi + 8]
rol ecx, 0xf
add ecx, edx
mov ebp, eax
not ebp
or ebp, ecx
xor ebp, edx
lea ebx, [ebp + ebx - 0x14792c6f]
add ebx, dword [esi + 0x24]
rol ebx, 0x15
add ebx, ecx
pop edi
add dword [edi], eax
add dword [edi + 4], ebx
add dword [edi + 8], ecx
add dword [edi + 0xc], edx
pop esi
pop ebx
pop edx
pop eax
sub eax, 0x40
test edx, edx
jne 0x40103a
add esp, 0x40
popal
ret 0xc