Function at 0x10008531
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov eax, dword [ebp + 0xc]
test eax, eax
jl 0x10008f00
push ebx
add eax, 0x48
push 0x40
mov ebx, 0xefcdab89
cdq
pop ecx
mov dword [ebp - 0xc], 0x10325476
idiv ecx
xor ecx, ecx
mov edx, 0x67452301
and dword [ebp - 0x10], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], eax
mov eax, 0x98badcfe
cmp dword [ebp - 0x14], ecx
mov dword [ebp - 8], eax
jle 0x10008ea6
push esi
push edi
jmp 0x10008580
mov ecx, dword [ebp - 0x18]
and dword [ebp - 4], 0
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
add esi, 0xfffffffd
cmp ecx, esi
jge 0x100085d2
movzx esi, byte [ecx + edi + 3]
movzx edi, byte [ecx + edi + 2]
shl esi, 8
add esi, edi
mov edi, dword [ebp + 8]
shl esi, 8
movzx edi, byte [ecx + edi + 1]
add esi, edi
mov edi, dword [ebp + 8]
shl esi, 8
movzx edi, byte [ecx + edi]
add esi, edi
mov edi, dword [ebp - 4]
inc dword [ebp - 4]
add ecx, 4
cmp dword [ebp - 4], 0x10
mov dword [ebp + edi*4 - 0x68], esi
mov dword [ebp - 0x18], ecx
jl 0x10008584
mov edi, dword [ebp + 8]
mov esi, dword [ebp - 0x14]
dec esi
cmp dword [ebp - 0x10], esi
jne 0x1000867a
mov esi, dword [ebp + 0xc]
add esi, 0xfffffffd
cmp ecx, esi
jne 0x10008618
movzx esi, byte [ecx + edi + 2]
movzx edi, byte [ecx + edi + 1]
sub esi, 0x8000
shl esi, 8
add esi, edi
mov edi, dword [ebp + 8]
shl esi, 8
movzx ecx, byte [ecx + edi]
add esi, ecx
mov dword [ebp - 0x1c], esi
mov ecx, esi
mov esi, dword [ebp - 4]
mov dword [ebp + esi*4 - 0x68], ecx
jmp 0x1000865c
mov esi, dword [ebp + 0xc]
add esi, 0xfffffffe
cmp ecx, esi
jne 0x1000863d
movzx esi, byte [ecx + edi + 1]
movzx ecx, byte [ecx + edi]
add esi, 0x8000
shl esi, 8
add esi, ecx
mov dword [ebp - 0x1c], esi
mov ecx, esi
jmp 0x1000860f
mov esi, dword [ebp + 0xc]
dec esi
cmp ecx, esi
mov esi, dword [ebp - 4]
jne 0x10008654
movzx ecx, byte [ecx + edi]
add ecx, 0x8000
jmp 0x10008612
mov dword [ebp + esi*4 - 0x68], 0x80
push 0x10
inc esi
pop ecx
cmp esi, ecx
jge 0x10008671
sub ecx, esi
lea edi, [ebp + esi*4 - 0x68]
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0xc]
shl ecx, 3
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], ecx
mov ecx, ebx
not ecx
and ecx, dword [ebp - 0xc]
and eax, ebx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], ebx
or ecx, eax
add ecx, dword [ebp - 0x68]
lea ecx, [ecx + edx - 0x28955b88]
mov edx, ebx
mov eax, ecx
shr eax, 0x19
shl ecx, 7
or eax, ecx
add eax, ebx
mov ecx, eax
and edx, eax
not ecx
and ecx, dword [ebp - 8]
or ecx, edx
mov edx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x64]
lea edx, [ecx + edx - 0x173848aa]
mov ecx, edx
shr ecx, 0x14
shl edx, 0xc
or ecx, edx
add ecx, eax
mov edx, ecx
mov esi, ecx
not edx
and edx, ebx
and esi, eax
or edx, esi
mov esi, dword [ebp - 8]
add edx, dword [ebp - 0x60]
mov edi, ecx
lea edx, [edx + esi + 0x242070db]
mov esi, edx
shr esi, 0xf
shl edx, 0x11
or esi, edx
add esi, ecx
mov edx, esi
and edi, esi
not edx
and edx, eax
or edx, edi
add edx, dword [ebp - 0x5c]
lea edx, [edx + ebx - 0x3e423112]
mov edi, edx
shl edi, 0x16
shr edx, 0xa
or edi, edx
mov edx, esi
add edi, esi
mov dword [ebp - 4], edi
and edx, dword [ebp - 4]
not edi
and edi, ecx
or edi, edx
add edi, dword [ebp - 0x58]
lea eax, [edi + eax - 0xa83f051]
mov edi, dword [ebp - 4]
mov edx, eax
mov ebx, edi
shr edx, 0x19
shl eax, 7
or edx, eax
add edx, edi
mov eax, edx
and ebx, edx
not eax
and eax, esi
or eax, ebx
add eax, dword [ebp - 0x54]
lea ecx, [eax + ecx + 0x4787c62a]
mov eax, ecx
shr eax, 0x14
shl ecx, 0xc
or eax, ecx
add eax, edx
mov ecx, eax
mov ebx, eax
not ecx
and ecx, edi
and ebx, edx
or ecx, ebx
mov ebx, eax
add ecx, dword [ebp - 0x50]
lea esi, [ecx + esi - 0x57cfb9ed]
mov ecx, esi
shr ecx, 0xf
shl esi, 0x11
or ecx, esi
add ecx, eax
mov esi, ecx
and ebx, ecx
not esi
and esi, edx
or esi, ebx
add esi, dword [ebp - 0x4c]
lea esi, [esi + edi - 0x2b96aff]
mov edi, esi
shl edi, 0x16
shr esi, 0xa
or edi, esi
mov esi, ecx
add edi, ecx
mov dword [ebp - 4], edi
and esi, dword [ebp - 4]
not edi
and edi, eax
or edi, esi
add edi, dword [ebp - 0x48]
lea edx, [edi + edx + 0x698098d8]
mov edi, dword [ebp - 4]
mov esi, edx
mov ebx, edi
shr esi, 0x19
shl edx, 7
or esi, edx
add esi, edi
mov edx, esi
and ebx, esi
not edx
and edx, ecx
or edx, ebx
add edx, dword [ebp - 0x44]
lea eax, [edx + eax - 0x74bb0851]
mov edx, eax
shr edx, 0x14
shl eax, 0xc
or edx, eax
add edx, esi
mov eax, edx
mov ebx, edx
not eax
and eax, edi
and ebx, esi
or eax, ebx
mov ebx, edx
add eax, dword [ebp - 0x40]
lea ecx, [eax + ecx - 0xa44f]
mov eax, ecx
shr eax, 0xf
shl ecx, 0x11
or eax, ecx
add eax, edx
mov ecx, eax
and ebx, eax
not ecx
and ecx, esi
or ecx, ebx
add ecx, dword [ebp - 0x3c]
lea ecx, [ecx + edi - 0x76a32842]
mov edi, ecx
shl edi, 0x16
shr ecx, 0xa
or edi, ecx
mov ecx, eax
add edi, eax
mov dword [ebp - 4], edi
and ecx, dword [ebp - 4]
not edi
and edi, edx
or edi, ecx
add edi, dword [ebp - 0x38]
lea esi, [edi + esi + 0x6b901122]
mov edi, dword [ebp - 4]
mov ecx, esi
shr ecx, 0x19
shl esi, 7
or ecx, esi
add ecx, dword [ebp - 4]
mov esi, ecx
and edi, ecx
not esi
and esi, eax
or esi, edi
add esi, dword [ebp - 0x34]
lea edx, [esi + edx - 0x2678e6d]
mov esi, edx
shr esi, 0x14
shl edx, 0xc
or esi, edx
add esi, ecx
mov edi, esi
mov ebx, esi
not edi
mov edx, edi
and ebx, ecx
and edx, dword [ebp - 4]
or edx, ebx
mov ebx, esi
add edx, dword [ebp - 0x30]
lea eax, [edx + eax - 0x5986bc72]
mov edx, eax
shr edx, 0xf
shl eax, 0x11
or edx, eax
add edx, esi
mov dword [ebp - 0xc], edx
and ebx, edx
not dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
and edi, edx
and eax, ecx
or eax, ebx
mov ebx, dword [ebp - 4]
add eax, dword [ebp - 0x2c]
lea ebx, [eax + ebx + 0x49b40821]
mov eax, ebx
shl eax, 0x16
shr ebx, 0xa
or eax, ebx
mov ebx, esi
add eax, edx
and ebx, eax
or edi, ebx
mov ebx, edx
add edi, dword [ebp - 0x64]
lea ecx, [edi + ecx - 0x9e1da9e]
mov edi, ecx
shr edi, 0x1b
shl ecx, 5
or edi, ecx
mov ecx, dword [ebp - 0xc]
add edi, eax
and ecx, eax
and ebx, edi
or ecx, ebx
add ecx, dword [ebp - 0x50]
lea esi, [ecx + esi - 0x3fbf4cc0]
mov ecx, esi
shr ecx, 0x17
shl esi, 9
or ecx, esi
mov esi, eax
add ecx, edi
not esi
mov ebx, ecx
and esi, edi
and ebx, eax
or esi, ebx
add esi, dword [ebp - 0x3c]
lea edx, [esi + edx + 0x265e5a51]
mov esi, edx
shr esi, 0x12
shl edx, 0xe
or esi, edx
mov edx, edi
add esi, ecx
not edx
mov ebx, esi
and edx, ecx
and ebx, edi
or edx, ebx
mov ebx, ecx
add edx, dword [ebp - 0x68]
lea eax, [edx + eax - 0x16493856]
mov edx, eax
shl edx, 0x14
shr eax, 0xc
or edx, eax
mov eax, ecx
add edx, esi
not eax
and eax, esi
and ebx, edx
or eax, ebx
mov ebx, esi
add eax, dword [ebp - 0x54]
lea edi, [eax + edi - 0x29d0efa3]
mov eax, edi
shr eax, 0x1b
shl edi, 5
or eax, edi
mov edi, esi
add eax, edx
not edi
and edi, edx
and ebx, eax
or edi, ebx
add edi, dword [ebp - 0x40]
lea ecx, [edi + ecx + 0x2441453]
mov edi, ecx
shr edi, 0x17
shl ecx, 9
or edi, ecx
mov ecx, edx
add edi, eax
not ecx
mov ebx, edi
and ecx, eax
and ebx, edx
or ecx, ebx
add ecx, dword [ebp - 0x2c]
lea esi, [ecx + esi - 0x275e197f]
mov ecx, esi
shr ecx, 0x12
shl esi, 0xe
or ecx, esi
mov esi, eax
add ecx, edi
not esi
mov ebx, ecx
and esi, edi
and ebx, eax
or esi, ebx
mov ebx, edi
add esi, dword [ebp - 0x58]
lea edx, [esi + edx - 0x182c0438]
mov esi, edx
shl esi, 0x14
shr edx, 0xc
or esi, edx
mov edx, edi
not edx
add esi, ecx
and edx, ecx
and ebx, esi
or edx, ebx
mov ebx, ecx
add edx, dword [ebp - 0x44]
lea eax, [edx + eax + 0x21e1cde6]
mov edx, eax
shr edx, 0x1b
shl eax, 5
or edx, eax
mov eax, ecx
add edx, esi
not eax
and eax, esi
and ebx, edx
or eax, ebx
add eax, dword [ebp - 0x30]
lea edi, [eax + edi - 0x3cc8f82a]
mov eax, edi
shr eax, 0x17
shl edi, 9
or eax, edi
mov edi, esi
add eax, edx
not edi
mov ebx, eax
and edi, edx
and ebx, esi
or edi, ebx
add edi, dword [ebp - 0x5c]
lea ecx, [edi + ecx - 0xb2af279]
mov edi, ecx
shr edi, 0x12
shl ecx, 0xe
or edi, ecx
mov ecx, edx
add edi, eax
not ecx
mov ebx, edi
and ecx, eax
and ebx, edx
or ecx, ebx
mov ebx, eax
add ecx, dword [ebp - 0x48]
lea esi, [ecx + esi + 0x455a14ed]
mov ecx, esi
shl ecx, 0x14
shr esi, 0xc
or ecx, esi
mov esi, eax
add ecx, edi
not esi
and esi, edi
and ebx, ecx
or esi, ebx
mov ebx, edi
add esi, dword [ebp - 0x34]
lea edx, [esi + edx - 0x561c16fb]
mov esi, edx
shr esi, 0x1b
shl edx, 5
or esi, edx
mov edx, edi
add esi, ecx
not edx
and edx, ecx
and ebx, esi
or edx, ebx
add edx, dword [ebp - 0x60]
lea eax, [edx + eax - 0x3105c08]
mov edx, eax
shr edx, 0x17
shl eax, 9
or edx, eax
mov eax, ecx
add edx, esi
not eax
mov ebx, edx
and eax, esi
and ebx, ecx
or eax, ebx
add eax, dword [ebp - 0x4c]
lea edi, [eax + edi + 0x676f02d9]
mov eax, edi
shr eax, 0x12
shl edi, 0xe
or eax, edi
mov edi, esi
add eax, edx
not edi
mov ebx, eax
and edi, edx
and ebx, esi
or edi, ebx
add edi, dword [ebp - 0x38]
lea ecx, [edi + ecx - 0x72d5b376]
mov edi, ecx
shl edi, 0x14
shr ecx, 0xc
or edi, ecx
mov ecx, edx
add edi, eax
xor ecx, eax
xor ecx, edi
add ecx, dword [ebp - 0x54]
lea esi, [ecx + esi - 0x5c6be]
mov ecx, esi
shr ecx, 0x1c
shl esi, 4
or ecx, esi
mov esi, eax
add ecx, edi
xor esi, edi
xor esi, ecx
add esi, dword [ebp - 0x48]
lea edx, [esi + edx - 0x788e097f]
mov esi, edx
shr esi, 0x15
shl edx, 0xb
or esi, edx
add esi, ecx
mov edx, esi
xor edx, edi
xor edx, ecx
add edx, dword [ebp - 0x3c]
lea eax, [edx + eax + 0x6d9d6122]
mov edx, esi
mov ebx, eax
shr ebx, 0x10
shl eax, 0x10
or ebx, eax
add ebx, esi
xor edx, ebx
mov eax, edx
xor eax, ecx
add eax, dword [ebp - 0x30]
lea edi, [eax + edi - 0x21ac7f4]
mov eax, edi
shl eax, 0x17
shr edi, 9
or eax, edi
add eax, ebx
xor edx, eax
add edx, dword [ebp - 0x64]
lea ecx, [edx + ecx - 0x5b4115bc]
mov edx, ecx
shr edx, 0x1c
shl ecx, 4
or edx, ecx
mov ecx, ebx
add edx, eax
xor ecx, eax
xor ecx, edx
add ecx, dword [ebp - 0x58]
lea ecx, [ecx + esi + 0x4bdecfa9]
mov esi, ecx
shr esi, 0x15
shl ecx, 0xb
or esi, ecx
add esi, edx
mov ecx, esi
xor ecx, eax
xor ecx, edx
add ecx, dword [ebp - 0x4c]
lea ebx, [ecx + ebx - 0x944b4a0]
mov ecx, esi
mov edi, ebx
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
add edi, esi
xor ecx, edi
mov ebx, ecx
xor ebx, edx
add ebx, dword [ebp - 0x40]
lea ebx, [ebx + eax - 0x41404390]
mov eax, ebx
shl eax, 0x17
shr ebx, 9
or eax, ebx
add eax, edi
xor ecx, eax
add ecx, dword [ebp - 0x34]
lea edx, [ecx + edx + 0x289b7ec6]
mov ecx, edx
shr ecx, 0x1c
shl edx, 4
or ecx, edx
mov edx, edi
add ecx, eax
xor edx, eax
xor edx, ecx
add edx, dword [ebp - 0x68]
lea esi, [edx + esi - 0x155ed806]
mov edx, esi
shr edx, 0x15
shl esi, 0xb
or edx, esi
add edx, ecx
mov esi, edx
xor esi, eax
xor esi, ecx
add esi, dword [ebp - 0x5c]
lea edi, [esi + edi - 0x2b10cf7b]
mov esi, edi
shr esi, 0x10
shl edi, 0x10
or esi, edi
mov edi, edx
add esi, edx
xor edi, esi
mov ebx, edi
xor ebx, ecx
add ebx, dword [ebp - 0x50]
lea ebx, [ebx + eax + 0x4881d05]
mov eax, ebx
shl eax, 0x17
shr ebx, 9
or eax, ebx
add eax, esi
xor edi, eax
add edi, dword [ebp - 0x44]
lea edi, [edi + ecx - 0x262b2fc7]
mov ecx, edi
shr ecx, 0x1c
shl edi, 4
or ecx, edi
mov edi, esi
add ecx, eax
xor edi, eax
xor edi, ecx
add edi, dword [ebp - 0x38]
lea edi, [edi + edx - 0x1924661b]
mov edx, edi
shr edx, 0x15
shl edi, 0xb
or edx, edi
add edx, ecx
mov edi, edx
xor edi, eax
xor edi, ecx
add edi, dword [ebp - 0x2c]
lea edi, [edi + esi + 0x1fa27cf8]
mov esi, edi
shr esi, 0x10
shl edi, 0x10
or esi, edi
mov edi, edx
add esi, edx
xor edi, esi
xor edi, ecx
add edi, dword [ebp - 0x60]
lea eax, [edi + eax - 0x3b53a99b]
mov edi, eax
shl edi, 0x17
shr eax, 9
or edi, eax
mov eax, edx
add edi, esi
not eax
or eax, edi
xor eax, esi
add eax, dword [ebp - 0x68]
lea ecx, [eax + ecx - 0xbd6ddbc]
mov eax, ecx
shr eax, 0x1a
shl ecx, 6
or eax, ecx
mov ecx, esi
add eax, edi
not ecx
or ecx, eax
xor ecx, edi
add ecx, dword [ebp - 0x4c]
lea edx, [ecx + edx + 0x432aff97]
mov ecx, edx
shr ecx, 0x16
shl edx, 0xa
or ecx, edx
mov edx, edi
add ecx, eax
not edx
or edx, ecx
xor edx, eax
add edx, dword [ebp - 0x30]
lea esi, [edx + esi - 0x546bdc59]
mov edx, esi
shr edx, 0x11
shl esi, 0xf
or edx, esi
mov esi, eax
add edx, ecx
not esi
or esi, edx
xor esi, ecx
add esi, dword [ebp - 0x54]
lea edi, [esi + edi - 0x36c5fc7]
mov esi, edi
shl esi, 0x15
shr edi, 0xb
or esi, edi
mov edi, ecx
add esi, edx
not edi
or edi, esi
xor edi, edx
add edi, dword [ebp - 0x38]
lea edi, [edi + eax + 0x655b59c3]
mov eax, edi
shr eax, 0x1a
shl edi, 6
or eax, edi
mov edi, edx
add eax, esi
not edi
or edi, eax
xor edi, esi
add edi, dword [ebp - 0x5c]
lea ecx, [edi + ecx - 0x70f3336e]
mov edi, ecx
shr edi, 0x16
shl ecx, 0xa
or edi, ecx
mov ecx, esi
add edi, eax
not ecx
or ecx, edi
xor ecx, eax
add ecx, dword [ebp - 0x40]
lea edx, [ecx + edx - 0x100b83]
mov ecx, edx
shr ecx, 0x11
shl edx, 0xf
or ecx, edx
mov edx, eax
add ecx, edi
not edx
or edx, ecx
xor edx, edi
add edx, dword [ebp - 0x64]
lea esi, [edx + esi - 0x7a7ba22f]
mov edx, esi
shl edx, 0x15
shr esi, 0xb
or edx, esi
mov esi, edi
add edx, ecx
not esi
or esi, edx
xor esi, ecx
add esi, dword [ebp - 0x48]
lea eax, [esi + eax + 0x6fa87e4f]
mov esi, eax
shr esi, 0x1a
shl eax, 6
or esi, eax
mov eax, ecx
add esi, edx
not eax
or eax, esi
xor eax, edx
add eax, dword [ebp - 0x2c]
lea edi, [eax + edi - 0x1d31920]
mov eax, edi
shr eax, 0x16
shl edi, 0xa
or eax, edi
mov edi, edx
add eax, esi
not edi
or edi, eax
xor edi, esi
add edi, dword [ebp - 0x50]
lea ecx, [edi + ecx - 0x5cfebcec]
mov edi, ecx
shr edi, 0x11
shl ecx, 0xf
or edi, ecx
mov ecx, esi
add edi, eax
not ecx
or ecx, edi
xor ecx, eax
add ecx, dword [ebp - 0x34]
lea edx, [ecx + edx + 0x4e0811a1]
mov ecx, edx
shl ecx, 0x15
shr edx, 0xb
or ecx, edx
mov edx, eax
add ecx, edi
not edx
or edx, ecx
xor edx, edi
add edx, dword [ebp - 0x58]
lea esi, [edx + esi - 0x8ac817e]
mov edx, esi
shr edx, 0x1a
shl esi, 6
or edx, esi
mov esi, edi
add edx, ecx
not esi
or esi, edx
xor esi, ecx
add esi, dword [ebp - 0x3c]
lea eax, [esi + eax - 0x42c50dcb]
mov esi, eax
shr esi, 0x16
shl eax, 0xa
or esi, eax
add esi, edx
mov eax, esi
mov esi, ecx
not esi
or esi, eax
xor esi, edx
add esi, dword [ebp - 0x60]
lea edi, [esi + edi + 0x2ad7d2bb]
mov esi, edi
shr esi, 0x11
shl edi, 0xf
or esi, edi
mov edi, edx
add esi, eax
add edx, dword [ebp - 0x1c]
not edi
or edi, esi
xor edi, eax
add eax, dword [ebp - 0x28]
add edi, dword [ebp - 0x44]
mov dword [ebp - 0xc], eax
lea ecx, [edi + ecx - 0x14792c6f]
mov edi, ecx
shl edi, 0x15
shr ecx, 0xb
or edi, ecx
add edi, dword [ebp - 0x20]
add edi, esi
add esi, dword [ebp - 0x24]
inc dword [ebp - 0x10]
mov ebx, edi
mov eax, dword [ebp - 0x10]
mov dword [ebp - 8], esi
cmp eax, dword [ebp - 0x14]
mov eax, esi
jl 0x1000857d
pop edi
pop esi
mov ecx, dword [ebp + 0x10]
mov byte [ecx + 8], al
mov byte [ecx], dl
shr eax, 8
mov byte [ecx + 9], al
mov byte [ecx + 4], bl
shr eax, 8
mov byte [ecx + 0xa], al
shr eax, 8
mov byte [ecx + 0xb], al
mov eax, dword [ebp - 0xc]
shr edx, 8
shr ebx, 8
mov byte [ecx + 0xc], al
mov byte [ecx + 1], dl
shr eax, 8
mov byte [ecx + 5], bl
mov byte [ecx + 0xd], al
shr edx, 8
shr ebx, 8
shr eax, 8
mov byte [ecx + 2], dl
mov byte [ecx + 6], bl
shr edx, 8
shr ebx, 8
mov byte [ecx + 0xe], al
mov byte [ecx + 7], bl
shr eax, 8
mov byte [ecx + 3], dl
mov byte [ecx + 0xf], al
pop ebx
leave
ret