Function at 0x41afc0
Capabilities:
Hash data with md5

Disassembly:
mov eax, dword [esp + 0xc]
sub esp, 0x48
push ebx
push ebp
push esi
xor esi, esi
sub eax, esi
push edi
je 0x41b9b1
dec eax
je 0x41b8e0
dec eax
je 0x41afec
pop edi
pop esi
pop ebp
mov eax, 0x4363e4
pop ebx
add esp, 0x48
ret
mov esi, dword [esp + 0x5c]
mov ecx, 0x10
lea edi, [esp + 0x18]
mov edx, dword [0x4363f0]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [0x4363e8]
mov edi, dword [0x4363ec]
mov ebp, dword [0x4363e4]
mov eax, esi
not eax
mov ecx, edi
and eax, edx
and ecx, esi
mov ebx, esi
or eax, ecx
mov ecx, dword [esp + 0x18]
add eax, ebp
mov ebp, dword [esp + 0x28]
lea ecx, [eax + ecx - 0x28955b88]
mov eax, ecx
shr eax, 0x19
shl ecx, 7
or eax, ecx
add eax, esi
mov ecx, eax
and ebx, eax
not ecx
and ecx, edi
or ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x1c]
lea edx, [ecx + edx - 0x173848aa]
mov ecx, edx
shr ecx, 0x14
shl edx, 0xc
or ecx, edx
add ecx, eax
mov edx, ecx
mov ebx, ecx
not edx
and edx, esi
and ebx, eax
or edx, ebx
mov ebx, ecx
add edx, edi
mov edi, dword [esp + 0x20]
lea edi, [edx + edi + 0x242070db]
mov edx, edi
shr edx, 0xf
shl edi, 0x11
or edx, edi
add edx, ecx
mov edi, edx
and ebx, edx
not edi
and edi, eax
or edi, ebx
mov ebx, edx
add edi, esi
mov esi, dword [esp + 0x24]
lea edi, [edi + esi - 0x3e423112]
mov esi, edi
shl esi, 0x16
shr edi, 0xa
or esi, edi
add esi, edx
mov edi, esi
and ebx, esi
not edi
and edi, ecx
or edi, ebx
add edi, ebp
lea edi, [eax + edi - 0xa83f051]
mov eax, edi
shr eax, 0x19
shl edi, 7
or eax, edi
add eax, esi
mov edi, eax
not edi
and edi, edx
mov ebp, dword [esp + 0x2c]
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, ebp
mov ebp, dword [esp + 0x30]
lea edi, [ecx + edi + 0x4787c62a]
mov ecx, edi
shl edi, 0xc
shr ecx, 0x14
or ecx, edi
add ecx, eax
mov edi, ecx
mov ebx, ecx
not edi
and edi, esi
and ebx, eax
or edi, ebx
mov ebx, ecx
add edi, ebp
mov ebp, dword [esp + 0x34]
lea edi, [edx + edi - 0x57cfb9ed]
mov edx, edi
shr edx, 0xf
shl edi, 0x11
or edx, edi
add edx, ecx
mov edi, edx
and ebx, edx
not edi
and edi, eax
or edi, ebx
mov ebx, edx
add edi, ebp
mov ebp, dword [esp + 0x38]
lea edi, [esi + edi - 0x2b96aff]
mov esi, edi
shl esi, 0x16
shr edi, 0xa
or esi, edi
add esi, edx
mov edi, esi
and ebx, esi
not edi
and edi, ecx
or edi, ebx
mov ebx, esi
add edi, ebp
mov ebp, dword [esp + 0x3c]
lea edi, [eax + edi + 0x698098d8]
mov eax, edi
shr eax, 0x19
shl edi, 7
or eax, edi
add eax, esi
mov edi, eax
and ebx, eax
not edi
and edi, edx
or edi, ebx
add edi, ebp
mov ebp, dword [esp + 0x40]
lea edi, [ecx + edi - 0x74bb0851]
mov ecx, edi
shr ecx, 0x14
shl edi, 0xc
or ecx, edi
add ecx, eax
mov edi, ecx
mov ebx, ecx
not edi
and edi, esi
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edx + edi - 0xa44f]
mov edx, edi
shr edx, 0xf
shl edi, 0x11
or edx, edi
add edx, ecx
mov ebp, dword [esp + 0x44]
mov edi, edx
not edi
mov ebx, ecx
and edi, eax
and ebx, edx
or edi, ebx
mov ebx, edx
add edi, ebp
mov ebp, dword [esp + 0x48]
lea edi, [esi + edi - 0x76a32842]
mov esi, edi
shl esi, 0x16
shr edi, 0xa
or esi, edi
add esi, edx
mov edi, esi
and ebx, esi
not edi
and edi, ecx
or edi, ebx
mov ebx, esi
add edi, ebp
mov ebp, dword [esp + 0x4c]
lea edi, [eax + edi + 0x6b901122]
mov eax, edi
shr eax, 0x19
shl edi, 7
or eax, edi
add eax, esi
mov edi, eax
and ebx, eax
not edi
and edi, edx
or edi, ebx
add edi, ebp
lea edi, [ecx + edi - 0x2678e6d]
mov ecx, edi
shr ecx, 0x14
shl edi, 0xc
or ecx, edi
add ecx, eax
mov edi, ecx
mov ebp, ecx
not edi
mov ebx, edi
and ebp, eax
and ebx, esi
or ebx, ebp
mov ebp, dword [esp + 0x50]
add ebx, ebp
mov ebp, ecx
lea ebx, [edx + ebx - 0x5986bc72]
mov edx, ebx
shr edx, 0xf
shl ebx, 0x11
or edx, ebx
add edx, ecx
mov ebx, edx
and ebp, edx
not ebx
mov dword [esp + 0x5c], ebx
and ebx, eax
or ebx, ebp
mov ebp, dword [esp + 0x54]
add ebx, ebp
and edi, edx
lea ebx, [esi + ebx + 0x49b40821]
mov esi, ebx
shl esi, 0x16
shr ebx, 0xa
or esi, ebx
mov ebx, ecx
add esi, edx
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x1c]
add edi, ebx
lea edi, [eax + edi - 0x9e1da9e]
mov eax, edi
shr eax, 0x1b
shl edi, 5
or eax, edi
mov edi, dword [esp + 0x5c]
add eax, esi
mov ebx, edx
and edi, esi
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x30]
add edi, ebx
lea edi, [ecx + edi - 0x3fbf4cc0]
mov ecx, edi
shl edi, 9
shr ecx, 0x17
or ecx, edi
mov edi, esi
add ecx, eax
not edi
mov ebx, ecx
and edi, eax
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x44]
add edi, ebx
lea edi, [edx + edi + 0x265e5a51]
mov edx, edi
shr edx, 0x12
shl edi, 0xe
or edx, edi
mov edi, eax
add edx, ecx
not edi
mov ebx, edx
and edi, ecx
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x18]
add edi, ebx
mov ebx, ecx
lea edi, [esi + edi - 0x16493856]
mov esi, edi
shl esi, 0x14
shr edi, 0xc
or esi, edi
mov edi, ecx
add esi, edx
not edi
and edi, edx
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x2c]
add edi, ebx
mov ebx, edx
lea edi, [eax + edi - 0x29d0efa3]
mov eax, edi
shr eax, 0x1b
shl edi, 5
or eax, edi
mov edi, edx
add eax, esi
not edi
and edi, esi
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x40]
add edi, ebx
lea edi, [ecx + edi + 0x2441453]
mov ecx, edi
shr ecx, 0x17
shl edi, 9
or ecx, edi
mov edi, esi
add ecx, eax
not edi
mov ebx, ecx
and edi, eax
and ebx, esi
or edi, ebx
add edi, ebp
lea edi, [edx + edi - 0x275e197f]
mov edx, edi
shl edi, 0xe
shr edx, 0x12
or edx, edi
mov edi, eax
add edx, ecx
not edi
mov ebx, edx
and edi, ecx
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x28]
add edi, ebx
mov ebx, ecx
lea edi, [esi + edi - 0x182c0438]
mov esi, edi
shr edi, 0xc
shl esi, 0x14
or esi, edi
mov edi, ecx
add esi, edx
not edi
and edi, edx
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x3c]
add edi, ebx
mov ebx, edx
lea edi, [eax + edi + 0x21e1cde6]
mov eax, edi
shr eax, 0x1b
shl edi, 5
or eax, edi
mov edi, edx
add eax, esi
not edi
and edi, esi
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x50]
add edi, ebx
lea edi, [ecx + edi - 0x3cc8f82a]
mov ecx, edi
shr ecx, 0x17
shl edi, 9
or ecx, edi
mov edi, esi
add ecx, eax
not edi
mov ebx, ecx
and edi, eax
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x24]
add edi, ebx
lea edi, [edx + edi - 0xb2af279]
mov edx, edi
shr edx, 0x12
shl edi, 0xe
or edx, edi
mov edi, eax
add edx, ecx
not edi
mov ebx, edx
and edi, ecx
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x38]
add edi, ebx
mov ebx, ecx
lea edi, [esi + edi + 0x455a14ed]
mov esi, edi
shl esi, 0x14
shr edi, 0xc
or esi, edi
mov edi, ecx
add esi, edx
not edi
and edi, edx
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x4c]
add edi, ebx
mov ebx, edx
lea edi, [eax + edi - 0x561c16fb]
mov eax, edi
shl edi, 5
shr eax, 0x1b
or eax, edi
mov edi, edx
not edi
add eax, esi
and edi, esi
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x20]
add edi, ebx
lea edi, [ecx + edi - 0x3105c08]
mov ecx, edi
shr ecx, 0x17
shl edi, 9
or ecx, edi
mov edi, esi
add ecx, eax
not edi
mov ebx, ecx
and edi, eax
and ebx, esi
or edi, ebx
mov ebx, dword [esp + 0x34]
add edi, ebx
lea edi, [edx + edi + 0x676f02d9]
mov edx, edi
shr edx, 0x12
shl edi, 0xe
or edx, edi
mov edi, eax
add edx, ecx
not edi
mov ebx, edx
and edi, ecx
and ebx, eax
or edi, ebx
mov ebx, dword [esp + 0x48]
add edi, ebx
mov ebx, dword [esp + 0x2c]
lea edi, [esi + edi - 0x72d5b376]
mov esi, edi
shl esi, 0x14
shr edi, 0xc
or esi, edi
mov edi, ecx
add esi, edx
xor edi, edx
xor edi, esi
add edi, ebx
mov ebx, dword [esp + 0x38]
lea edi, [eax + edi - 0x5c6be]
mov eax, edi
shr eax, 0x1c
shl edi, 4
or eax, edi
mov edi, edx
add eax, esi
xor edi, esi
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x44]
lea ecx, [ecx + edi - 0x788e097f]
mov edi, ecx
shr edi, 0x15
shl ecx, 0xb
or edi, ecx
add edi, eax
mov ecx, edi
xor ecx, esi
xor ecx, eax
add ecx, ebx
lea ecx, [edx + ecx + 0x6d9d6122]
mov edx, ecx
shr edx, 0x10
shl ecx, 0x10
or edx, ecx
add edx, edi
mov ebx, edi
xor ebx, edx
mov ecx, ebx
xor ecx, eax
add ecx, dword [esp + 0x50]
lea esi, [esi + ecx - 0x21ac7f4]
mov ecx, esi
shl ecx, 0x17
shr esi, 9
or ecx, esi
mov esi, dword [esp + 0x1c]
add ecx, edx
xor ebx, ecx
add ebx, esi
mov esi, edx
xor esi, ecx
lea ebx, [eax + ebx - 0x5b4115bc]
mov eax, ebx
shr eax, 0x1c
shl ebx, 4
or eax, ebx
mov ebx, dword [esp + 0x28]
add eax, ecx
xor esi, eax
add esi, ebx
mov ebx, dword [esp + 0x34]
lea edi, [edi + esi + 0x4bdecfa9]
mov esi, edi
shr esi, 0x15
shl edi, 0xb
or esi, edi
add esi, eax
mov edi, esi
xor edi, ecx
xor edi, eax
add edi, ebx
lea edi, [edx + edi - 0x944b4a0]
mov edx, edi
shr edx, 0x10
shl edi, 0x10
or edx, edi
mov edi, esi
add edx, esi
xor edi, edx
mov ebx, edi
xor ebx, eax
add ebx, dword [esp + 0x40]
lea ebx, [ecx + ebx - 0x41404390]
mov ecx, ebx
shl ecx, 0x17
shr ebx, 9
or ecx, ebx
mov ebx, dword [esp + 0x4c]
add ecx, edx
xor edi, ecx
add edi, ebx
mov ebx, dword [esp + 0x18]
lea edi, [eax + edi + 0x289b7ec6]
mov eax, edi
shr eax, 0x1c
shl edi, 4
or eax, edi
mov edi, edx
add eax, ecx
xor edi, ecx
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x24]
lea edi, [esi + edi - 0x155ed806]
mov esi, edi
shr esi, 0x15
shl edi, 0xb
or esi, edi
add esi, eax
mov edi, esi
xor edi, ecx
xor edi, eax
add edi, ebx
lea edx, [edx + edi - 0x2b10cf7b]
mov edi, edx
shr edi, 0x10
shl edx, 0x10
or edi, edx
mov edx, esi
add edi, esi
xor edx, edi
mov ebx, edx
xor ebx, eax
add ebx, dword [esp + 0x30]
lea ebx, [ecx + ebx + 0x4881d05]
mov ecx, ebx
shl ecx, 0x17
shr ebx, 9
or ecx, ebx
mov ebx, dword [esp + 0x3c]
add ecx, edi
xor edx, ecx
add edx, ebx
mov ebx, dword [esp + 0x48]
lea edx, [eax + edx - 0x262b2fc7]
mov eax, edx
shr eax, 0x1c
shl edx, 4
or eax, edx
mov edx, edi
add eax, ecx
xor edx, ecx
xor edx, eax
add edx, ebx
mov ebx, dword [esp + 0x20]
lea esi, [esi + edx - 0x1924661b]
mov edx, esi
shr edx, 0x15
shl esi, 0xb
or edx, esi
add edx, eax
mov esi, edx
xor esi, ecx
xor esi, eax
add esi, ebp
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, eax
add edi, ebx
mov ebx, dword [esp + 0x18]
lea edi, [ecx + edi - 0x3b53a99b]
mov ecx, edi
shl ecx, 0x17
shr edi, 9
or ecx, edi
mov edi, edx
add ecx, esi
not edi
or edi, ecx
xor edi, esi
add edi, ebx
mov ebx, dword [esp + 0x34]
lea edi, [eax + edi - 0xbd6ddbc]
mov eax, edi
shr eax, 0x1a
shl edi, 6
or eax, edi
mov edi, esi
add eax, ecx
not edi
or edi, eax
xor edi, ecx
add edi, ebx
lea edi, [edx + edi + 0x432aff97]
mov edx, edi
shr edx, 0x16
shl edi, 0xa
or edx, edi
mov edi, ecx
add edx, eax
mov ebx, dword [esp + 0x50]
not edi
or edi, edx
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x2c]
lea edi, [esi + edi - 0x546bdc59]
mov esi, edi
shl edi, 0xf
shr esi, 0x11
or esi, edi
mov edi, eax
not edi
add esi, edx
or edi, esi
xor edi, edx
add edi, ebx
mov ebx, dword [esp + 0x48]
lea edi, [ecx + edi - 0x36c5fc7]
mov ecx, edi
shr edi, 0xb
shl ecx, 0x15
or ecx, edi
mov edi, edx
not edi
add ecx, esi
or edi, ecx
xor edi, esi
add edi, ebx
mov ebx, dword [esp + 0x24]
lea edi, [eax + edi + 0x655b59c3]
mov eax, edi
shr eax, 0x1a
shl edi, 6
or eax, edi
mov edi, esi
add eax, ecx
not edi
or edi, eax
xor edi, ecx
add edi, ebx
mov ebx, dword [esp + 0x40]
lea edi, [edx + edi - 0x70f3336e]
mov edx, edi
shr edx, 0x16
shl edi, 0xa
or edx, edi
mov edi, ecx
add edx, eax
not edi
or edi, edx
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x1c]
lea edi, [esi + edi - 0x100b83]
mov esi, edi
shr esi, 0x11
shl edi, 0xf
or esi, edi
mov edi, eax
add esi, edx
not edi
or edi, esi
xor edi, edx
add edi, ebx
mov ebx, dword [esp + 0x38]
lea edi, [ecx + edi - 0x7a7ba22f]
mov ecx, edi
shl ecx, 0x15
shr edi, 0xb
or ecx, edi
mov edi, edx
add ecx, esi
not edi
or edi, ecx
xor edi, esi
add edi, ebx
lea edi, [eax + edi + 0x6fa87e4f]
mov eax, edi
shr eax, 0x1a
shl edi, 6
or eax, edi
mov edi, esi
not edi
add eax, ecx
mov ebx, dword [esp + 0x3c]
or edi, eax
xor edi, ecx
add edi, ebp
mov ebp, dword [esp + 0x30]
lea edi, [edx + edi - 0x1d31920]
mov edx, edi
shl edi, 0xa
shr edx, 0x16
or edx, edi
mov edi, ecx
not edi
add edx, eax
or edi, edx
xor edi, eax
add edi, ebp
mov ebp, dword [esp + 0x4c]
lea edi, [esi + edi - 0x5cfebcec]
mov esi, edi
shl edi, 0xf
shr esi, 0x11
or esi, edi
mov edi, eax
add esi, edx
not edi
or edi, esi
xor edi, edx
add edi, ebp
mov ebp, dword [esp + 0x28]
lea edi, [ecx + edi + 0x4e0811a1]
mov ecx, edi
shl ecx, 0x15
shr edi, 0xb
or ecx, edi
mov edi, edx
add ecx, esi
not edi
or edi, ecx
xor edi, esi
add edi, ebp
mov ebp, dword [esp + 0x44]
lea edi, [eax + edi - 0x8ac817e]
mov eax, edi
shr eax, 0x1a
shl edi, 6
or eax, edi
mov edi, esi
add eax, ecx
not edi
or edi, eax
xor edi, ecx
add edi, ebp
mov ebp, dword [esp + 0x20]
lea edi, [edx + edi - 0x42c50dcb]
mov edx, edi
shr edx, 0x16
shl edi, 0xa
or edx, edi
mov edi, ecx
add edx, eax
not edi
or edi, edx
xor edi, eax
add edi, ebp
mov ebp, dword [0x4363e4]
lea esi, [esi + edi + 0x2ad7d2bb]
mov edi, esi
shr edi, 0x11
shl esi, 0xf
or edi, esi
mov esi, eax
add edi, edx
not esi
or esi, edi
xor esi, edx
add esi, ebx
lea ecx, [ecx + esi - 0x14792c6f]
mov esi, dword [0x4363e8]
add ebp, eax
mov eax, ecx
mov dword [0x4363e4], ebp
shl eax, 0x15
shr ecx, 0xb
or eax, ecx
mov ecx, dword [0x4363ec]
add eax, edi
add ecx, edi
add esi, eax
mov eax, dword [0x4363f0]
mov dword [0x4363e8], esi
add eax, edx
pop edi
pop esi
mov dword [0x4363f0], eax
pop ebp
mov dword [0x4363ec], ecx
mov eax, 0x43643c
pop ebx
add esp, 0x48
ret
mov ecx, dword [0x4363f4]
mov ebp, dword [esp + 0x60]
mov eax, ecx
shr eax, 3
lea ecx, [ecx + ebp*8]
lea edx, [ebp*8]
and eax, 0x3f
cmp ecx, edx
mov dword [0x4363f4], ecx
jae 0x41b90c
inc dword [0x4363f8]
mov edi, dword [0x4363f8]
mov ecx, ebp
mov ebx, 0x40
shr ecx, 0x1d
sub ebx, eax
add edi, ecx
cmp ebp, ebx
mov dword [0x4363f8], edi
jb 0x41b983
mov esi, dword [esp + 0x5c]
mov ecx, ebx
mov edx, ecx
lea edi, [eax + 0x4363fc]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 2
and ecx, 3
push 0
rep movsb byte es:[edi], byte [esi]
push 0x4363fc
call fcn.0041afc0
mov edi, ebx
add ebx, 0x3f
add esp, 0xc
cmp ebx, ebp
jae 0x41b97f
mov esi, ebx
mov eax, dword [esp + 0x5c]
push 2
push 0
lea ecx, [eax + esi - 0x3f]
push ecx
call fcn.0041afc0
add esi, 0x40
add esp, 0xc
add edi, 0x40
cmp esi, ebp
jb 0x41b960
xor eax, eax
jmp 0x41b985
xor edi, edi
mov edx, dword [esp + 0x5c]
mov ecx, ebp
sub ecx, edi
lea esi, [edi + edx]
lea edi, [eax + 0x4363fc]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, 0x43643c
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret
mov ecx, 8
xor eax, eax
mov edi, 0x43643c
mov edx, dword [esp + 0x5c]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov ecx, 0x10
xor eax, eax
mov edi, 0x4363fc
push 1
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x64]
mov dword [0x4363f8], esi
push ecx
push edx
mov dword [0x4363f4], esi
mov dword [0x4363e4], 0x67452301
mov dword [0x4363e8], 0xefcdab89
mov dword [0x4363ec], 0x98badcfe
mov dword [0x4363f0], 0x10325476
call fcn.0041afc0
mov eax, dword [0x4363f4]
mov ecx, dword [0x4363f8]
mov dword [esp + 0x1c], eax
add esp, 0xc
shr eax, 3
and eax, 0x3f
mov dword [esp + 0x14], ecx
cmp eax, 0x38
mov ecx, 0x38
jb 0x41ba3e
mov ecx, 0x78
sub ecx, eax
push 1
push ecx
push 0x435ea4
call fcn.0041afc0
push 1
lea edx, [esp + 0x20]
push 8
push edx
call fcn.0041afc0
mov ebx, dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0x18
xor edi, edi
xor eax, eax
lea ecx, [edi + 0x43643c]
mov al, byte [esi + 0x4363e4]
push eax
push str._02x
push ecx
call ebx
add esp, 0xc
add edi, eax
inc esi
cmp esi, 0x10
jb 0x41ba66
pop edi
pop esi
pop ebp
mov eax, 0x43643c
pop ebx
add esp, 0x48
ret