Function at 0x404150
Capabilities:
Hash data with md5
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x64
mov eax, dword [esp + 0x6c]
add eax, 0x48
cdq
push ebx
and edx, 0x3f
add eax, edx
push ebp
mov ebp, eax
push esi
sar ebp, 6
xor eax, eax
xor esi, esi
test ebp, ebp
mov ecx, 0x98badcfe
push edi
mov edi, dword [esp + 0x80]
mov dword [esp + 0x20], ebp
mov ebx, 0x67452301
mov edx, 0xefcdab89
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], 0x10325476
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], esi
jle 0x404c84
jmp 0x4041b0
mov eax, dword [esp + 0x10]
lea esp, [esp]
xor edi, edi
mov dword [esp + 0x10], edi
mov ebp, dword [esp + 0x7c]
add ebp, 0xfffffffd
cmp eax, ebp
jge 0x4042ef
mov edi, dword [esp + 0x78]
movzx ebp, byte [edi + eax + 3]
movzx edi, byte [edi + eax + 2]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [edi + eax + 1]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [eax + edi]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x10]
mov dword [esp + edi*4 + 0x34], ebp
mov ebp, dword [esp + 0x7c]
add eax, 4
add ebp, 0xfffffffd
cmp eax, ebp
jge 0x4042e4
mov edi, dword [esp + 0x78]
movzx ebp, byte [edi + eax + 3]
movzx edi, byte [edi + eax + 2]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [edi + eax + 1]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [eax + edi]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x10]
mov dword [esp + edi*4 + 0x38], ebp
mov ebp, dword [esp + 0x7c]
add eax, 4
add ebp, 0xfffffffd
cmp eax, ebp
jge 0x4042e7
mov edi, dword [esp + 0x78]
movzx ebp, byte [edi + eax + 3]
movzx edi, byte [edi + eax + 2]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [edi + eax + 1]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [eax + edi]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x10]
mov dword [esp + edi*4 + 0x3c], ebp
mov ebp, dword [esp + 0x7c]
add eax, 4
add ebp, 0xfffffffd
cmp eax, ebp
jge 0x4042ec
mov edi, dword [esp + 0x78]
movzx ebp, byte [edi + eax + 3]
movzx edi, byte [edi + eax + 2]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [edi + eax + 1]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x78]
movzx edi, byte [eax + edi]
shl ebp, 8
add ebp, edi
mov edi, dword [esp + 0x10]
mov dword [esp + edi*4 + 0x40], ebp
add edi, 4
add eax, 4
cmp edi, 0x10
mov dword [esp + 0x10], edi
jl 0x4041b6
jmp 0x4042ef
inc edi
jmp 0x4042ef
add edi, 2
jmp 0x4042ef
add edi, 3
mov ebp, dword [esp + 0x20]
dec ebp
cmp esi, ebp
mov dword [esp + 0x10], eax
jne 0x4043ac
mov esi, dword [esp + 0x7c]
lea ebp, [esi - 3]
cmp eax, ebp
jne 0x40433b
mov esi, dword [esp + 0x78]
movzx ebp, byte [eax + esi + 2]
movzx esi, byte [eax + esi + 1]
add ebp, 0x8000
shl ebp, 8
add ebp, esi
mov esi, dword [esp + 0x78]
movzx eax, byte [eax + esi]
mov esi, dword [esp + 0x7c]
shl ebp, 8
add ebp, eax
mov dword [esp + edi*4 + 0x34], ebp
jmp 0x404386
lea ebp, [esi - 2]
cmp eax, ebp
jne 0x404364
mov esi, dword [esp + 0x78]
movzx ebp, byte [eax + esi + 1]
movzx eax, byte [eax + esi]
mov esi, dword [esp + 0x7c]
add ebp, 0x8000
shl ebp, 8
add ebp, eax
mov dword [esp + edi*4 + 0x34], ebp
jmp 0x404386
lea ebp, [esi - 1]
cmp eax, ebp
jne 0x40437e
mov ebp, dword [esp + 0x78]
movzx eax, byte [eax + ebp]
add eax, 0x8000
mov dword [esp + edi*4 + 0x34], eax
jmp 0x404386
mov dword [esp + edi*4 + 0x34], 0x80
inc edi
cmp edi, 0x10
jge 0x4043a1
lea ebp, [esp + edi*4 + 0x34]
mov ecx, 0x10
sub ecx, edi
xor eax, eax
mov edi, ebp
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x14]
lea eax, [esi*8]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x30], eax
mov eax, edx
not eax
and eax, esi
mov esi, ecx
and esi, edx
or eax, esi
add eax, ebp
mov dword [esp + 0x24], ebx
lea ebx, [eax + ebx - 0x28955b88]
mov eax, ebx
shr eax, 0x19
shl ebx, 7
or eax, ebx
add eax, edx
mov esi, eax
not esi
and esi, ecx
mov dword [esp + 0x2c], ecx
mov ebp, dword [esp + 0x3c]
mov ecx, edx
and ecx, eax
or esi, ecx
add esi, dword [esp + 0x38]
mov ecx, dword [esp + 0x18]
lea esi, [esi + ecx - 0x173848aa]
mov ecx, esi
shl esi, 0xc
shr ecx, 0x14
or ecx, esi
add ecx, eax
mov esi, ecx
not esi
and esi, edx
mov edi, ecx
and edi, eax
or esi, edi
mov edi, dword [esp + 0x14]
add esi, ebp
lea edi, [esi + edi + 0x242070db]
mov ebp, dword [esp + 0x40]
mov esi, edi
shl edi, 0x11
shr esi, 0xf
or esi, edi
add esi, ecx
mov edi, esi
not edi
and edi, eax
mov ebx, ecx
and ebx, esi
or edi, ebx
add edi, ebp
mov ebp, dword [esp + 0x44]
lea edi, [edi + edx - 0x3e423112]
mov dword [esp + 0x28], edx
mov edx, edi
shr edi, 0xa
shl edx, 0x16
or edx, edi
add edx, esi
mov edi, edx
not edi
and edi, ecx
mov ebx, esi
and ebx, edx
or edi, ebx
add edi, ebp
lea edi, [edi + eax - 0xa83f051]
mov eax, edi
shl edi, 7
shr eax, 0x19
or eax, edi
add eax, edx
mov edi, eax
not edi
and edi, esi
mov ebp, dword [esp + 0x48]
mov ebx, edx
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edi + ecx + 0x4787c62a]
mov ecx, edi
shl edi, 0xc
mov ebp, dword [esp + 0x4c]
shr ecx, 0x14
or ecx, edi
add ecx, eax
mov edi, ecx
not edi
and edi, edx
mov ebx, ecx
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edi + esi - 0x57cfb9ed]
mov esi, edi
shl edi, 0x11
mov ebp, dword [esp + 0x50]
shr esi, 0xf
or esi, edi
add esi, ecx
mov edi, esi
not edi
and edi, eax
mov ebx, ecx
and ebx, esi
or edi, ebx
add edi, ebp
lea edi, [edi + edx - 0x2b96aff]
mov edx, edi
shr edi, 0xa
mov ebp, dword [esp + 0x54]
shl edx, 0x16
or edx, edi
add edx, esi
mov ebx, esi
and ebx, edx
mov edi, edx
not edi
and edi, ecx
or edi, ebx
add edi, ebp
lea edi, [edi + eax + 0x698098d8]
mov ebp, dword [esp + 0x58]
mov eax, edi
shl edi, 7
shr eax, 0x19
or eax, edi
add eax, edx
mov edi, eax
not edi
and edi, esi
mov ebx, edx
and ebx, eax
or edi, ebx
add edi, ebp
mov ebp, dword [esp + 0x5c]
lea edi, [edi + ecx - 0x74bb0851]
mov ecx, edi
shl edi, 0xc
shr ecx, 0x14
or ecx, edi
add ecx, eax
mov edi, ecx
not edi
and edi, edx
mov ebx, ecx
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edi + esi - 0xa44f]
mov esi, edi
shr esi, 0xf
shl edi, 0x11
or esi, edi
add esi, ecx
mov ebp, dword [esp + 0x60]
mov edi, esi
not edi
and edi, eax
mov ebx, ecx
and ebx, esi
or edi, ebx
add edi, ebp
lea edi, [edi + edx - 0x76a32842]
mov edx, edi
shr edi, 0xa
mov ebp, dword [esp + 0x64]
shl edx, 0x16
or edx, edi
add edx, esi
mov edi, edx
not edi
and edi, ecx
mov ebx, esi
and ebx, edx
or edi, ebx
add edi, ebp
lea edi, [edi + eax + 0x6b901122]
mov ebp, dword [esp + 0x68]
mov eax, edi
shl edi, 7
shr eax, 0x19
or eax, edi
add eax, edx
mov edi, eax
not edi
and edi, esi
mov ebx, edx
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edi + ecx - 0x2678e6d]
mov ecx, edi
shl edi, 0xc
shr ecx, 0x14
or ecx, edi
add ecx, eax
mov edi, ecx
not edi
mov ebx, edi
and ebx, edx
mov ebp, ecx
and ebp, eax
or ebx, ebp
add ebx, dword [esp + 0x6c]
lea ebx, [ebx + esi - 0x5986bc72]
mov esi, ebx
shl ebx, 0x11
shr esi, 0xf
or esi, ebx
add esi, ecx
mov ebx, esi
not ebx
mov dword [esp + 0x18], ebx
and ebx, eax
mov ebp, ecx
and ebp, esi
or ebx, ebp
add ebx, dword [esp + 0x70]
mov ebp, dword [esp + 0x38]
lea ebx, [ebx + edx + 0x49b40821]
mov edx, ebx
shr ebx, 0xa
shl edx, 0x16
or edx, ebx
add edx, esi
and edi, esi
mov ebx, ecx
and ebx, edx
or edi, ebx
add edi, ebp
lea edi, [edi + eax - 0x9e1da9e]
mov eax, edi
shr eax, 0x1b
shl edi, 5
or eax, edi
mov edi, dword [esp + 0x18]
and edi, edx
mov ebp, dword [esp + 0x4c]
add eax, edx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edi + ecx - 0x3fbf4cc0]
mov ecx, edi
shl edi, 9
mov ebp, dword [esp + 0x60]
shr ecx, 0x17
or ecx, edi
add ecx, eax
mov edi, edx
not edi
and edi, eax
mov ebx, ecx
and ebx, edx
or edi, ebx
add edi, ebp
lea edi, [edi + esi + 0x265e5a51]
mov esi, edi
shl edi, 0xe
mov ebp, dword [esp + 0x34]
shr esi, 0x12
or esi, edi
add esi, ecx
mov edi, eax
not edi
and edi, ecx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, ebp
lea edi, [edi + edx - 0x16493856]
mov ebp, dword [esp + 0x48]
mov edx, edi
shr edi, 0xc
shl edx, 0x14
or edx, edi
mov edi, ecx
not edi
and edi, esi
add edx, esi
mov ebx, ecx
and ebx, edx
or edi, ebx
add edi, ebp
mov ebp, dword [esp + 0x5c]
lea edi, [edi + eax - 0x29d0efa3]
mov eax, edi
shl edi, 5
shr eax, 0x1b
or eax, edi
add eax, edx
mov edi, esi
not edi
and edi, edx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, ebp
mov ebp, dword [esp + 0x70]
lea edi, [edi + ecx + 0x2441453]
mov ecx, edi
shl edi, 9
shr ecx, 0x17
or ecx, edi
add ecx, eax
mov edi, edx
not edi
and edi, eax
mov ebx, ecx
and ebx, edx
or edi, ebx
add edi, ebp
lea edi, [edi + esi - 0x275e197f]
mov esi, edi
shl edi, 0xe
shr esi, 0x12
or esi, edi
add esi, ecx
mov edi, eax
not edi
and edi, ecx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, dword [esp + 0x44]
lea edi, [edi + edx - 0x182c0438]
mov edx, edi
shr edi, 0xc
shl edx, 0x14
or edx, edi
add edx, esi
mov edi, ecx
not edi
and edi, esi
mov ebx, ecx
and ebx, edx
or edi, ebx
add edi, dword [esp + 0x58]
lea edi, [edi + eax + 0x21e1cde6]
mov eax, edi
shl edi, 5
shr eax, 0x1b
or eax, edi
add eax, edx
mov edi, esi
not edi
and edi, edx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, dword [esp + 0x6c]
lea edi, [edi + ecx - 0x3cc8f82a]
mov ecx, edi
shl edi, 9
shr ecx, 0x17
or ecx, edi
add ecx, eax
mov edi, edx
not edi
and edi, eax
mov ebx, ecx
and ebx, edx
or edi, ebx
add edi, dword [esp + 0x40]
lea edi, [edi + esi - 0xb2af279]
mov esi, edi
shl edi, 0xe
shr esi, 0x12
or esi, edi
add esi, ecx
mov edi, eax
not edi
and edi, ecx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, dword [esp + 0x54]
lea edi, [edi + edx + 0x455a14ed]
mov edx, edi
shr edi, 0xc
shl edx, 0x14
or edx, edi
mov edi, ecx
add edx, esi
not edi
mov ebx, ecx
and edi, esi
and ebx, edx
or edi, ebx
add edi, dword [esp + 0x68]
lea edi, [edi + eax - 0x561c16fb]
mov eax, edi
shl edi, 5
shr eax, 0x1b
or eax, edi
add eax, edx
mov edi, esi
not edi
and edi, edx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, dword [esp + 0x3c]
lea edi, [edi + ecx - 0x3105c08]
mov ecx, edi
shl edi, 9
shr ecx, 0x17
or ecx, edi
add ecx, eax
mov ebx, ecx
and ebx, edx
mov edi, edx
not edi
and edi, eax
or edi, ebx
add edi, dword [esp + 0x50]
lea edi, [edi + esi + 0x676f02d9]
mov esi, edi
shl edi, 0xe
shr esi, 0x12
or esi, edi
add esi, ecx
mov edi, eax
not edi
and edi, ecx
mov ebx, esi
and ebx, eax
or edi, ebx
add edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x48]
lea edi, [edi + edx - 0x72d5b376]
mov edx, edi
shr edi, 0xc
shl edx, 0x14
or edx, edi
mov edi, ecx
xor edi, esi
add edx, esi
xor edi, edx
add edi, ebx
mov ebx, dword [esp + 0x54]
lea edi, [edi + eax - 0x5c6be]
mov eax, edi
shl edi, 4
shr eax, 0x1c
or eax, edi
mov edi, esi
xor edi, edx
add eax, edx
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x60]
lea ecx, [edi + ecx - 0x788e097f]
mov edi, ecx
shl ecx, 0xb
shr edi, 0x15
or edi, ecx
add edi, eax
mov ecx, edi
xor ecx, edx
xor ecx, eax
add ecx, ebx
lea ecx, [ecx + esi + 0x6d9d6122]
mov esi, ecx
shr esi, 0x10
shl ecx, 0x10
mov ebx, edi
or esi, ecx
add esi, edi
xor ebx, esi
mov ecx, ebx
xor ecx, eax
add ecx, dword [esp + 0x6c]
lea edx, [ecx + edx - 0x21ac7f4]
mov ecx, edx
shr edx, 9
shl ecx, 0x17
or ecx, edx
mov edx, dword [esp + 0x38]
add ecx, esi
xor ebx, ecx
add ebx, edx
lea ebx, [ebx + eax - 0x5b4115bc]
mov eax, ebx
shl ebx, 4
shr eax, 0x1c
or eax, ebx
mov ebx, dword [esp + 0x44]
add eax, ecx
mov edx, esi
xor edx, ecx
xor edx, eax
add edx, ebx
lea edi, [edx + edi + 0x4bdecfa9]
mov edx, edi
shl edi, 0xb
mov ebx, dword [esp + 0x50]
shr edx, 0x15
or edx, edi
add edx, eax
mov edi, edx
xor edi, ecx
xor edi, eax
add edi, ebx
lea edi, [edi + esi - 0x944b4a0]
mov esi, edi
shl edi, 0x10
shr esi, 0x10
or esi, edi
add esi, edx
mov edi, edx
xor edi, esi
mov ebx, edi
xor ebx, eax
add ebx, dword [esp + 0x5c]
lea ebx, [ebx + ecx - 0x41404390]
mov ecx, ebx
shr ebx, 9
shl ecx, 0x17
or ecx, ebx
mov ebx, dword [esp + 0x68]
add ecx, esi
xor edi, ecx
add edi, ebx
mov ebx, dword [esp + 0x34]
lea edi, [edi + eax + 0x289b7ec6]
mov eax, edi
shl edi, 4
shr eax, 0x1c
or eax, edi
add eax, ecx
mov edi, esi
xor edi, ecx
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x40]
lea edi, [edi + edx - 0x155ed806]
mov edx, edi
shl edi, 0xb
shr edx, 0x15
or edx, edi
add edx, eax
mov edi, edx
xor edi, ecx
xor edi, eax
add edi, ebx
lea edi, [edi + esi - 0x2b10cf7b]
mov esi, edi
shl edi, 0x10
shr esi, 0x10
or esi, edi
add esi, edx
mov edi, edx
xor edi, esi
mov ebx, edi
xor ebx, eax
add ebx, dword [esp + 0x4c]
lea ebx, [ebx + ecx + 0x4881d05]
mov ecx, ebx
shl ecx, 0x17
shr ebx, 9
or ecx, ebx
mov ebx, dword [esp + 0x58]
add ecx, esi
xor edi, ecx
add edi, ebx
lea edi, [edi + eax - 0x262b2fc7]
mov eax, edi
shl edi, 4
mov ebx, dword [esp + 0x64]
shr eax, 0x1c
or eax, edi
add eax, ecx
mov edi, esi
xor edi, ecx
xor edi, eax
add edi, ebx
lea edi, [edi + edx - 0x1924661b]
mov edx, edi
shl edi, 0xb
mov ebx, dword [esp + 0x3c]
shr edx, 0x15
or edx, edi
add edx, eax
mov edi, edx
xor edi, ecx
xor edi, eax
add edi, ebp
lea edi, [edi + esi + 0x1fa27cf8]
mov esi, edi
shl edi, 0x10
shr esi, 0x10
or esi, edi
add esi, edx
mov edi, edx
xor edi, esi
xor edi, eax
add edi, ebx
mov ebx, dword [esp + 0x34]
lea edi, [edi + ecx - 0x3b53a99b]
mov ecx, edi
shr edi, 9
shl ecx, 0x17
or ecx, edi
mov edi, edx
not edi
add ecx, esi
or edi, ecx
xor edi, esi
add edi, ebx
mov ebx, dword [esp + 0x50]
lea edi, [edi + eax - 0xbd6ddbc]
mov eax, edi
shl edi, 6
shr eax, 0x1a
or eax, edi
mov edi, esi
not edi
add eax, ecx
or edi, eax
xor edi, ecx
add edi, ebx
lea edi, [edi + edx + 0x432aff97]
mov edx, edi
shr edx, 0x16
shl edi, 0xa
or edx, edi
add edx, eax
mov ebx, dword [esp + 0x6c]
mov edi, ecx
not edi
or edi, edx
xor edi, eax
add edi, ebx
lea edi, [edi + esi - 0x546bdc59]
mov esi, edi
shl edi, 0xf
mov ebx, dword [esp + 0x48]
shr esi, 0x11
or esi, edi
add esi, edx
mov edi, eax
not edi
or edi, esi
xor edi, edx
add edi, ebx
lea edi, [edi + ecx - 0x36c5fc7]
mov ecx, edi
shr edi, 0xb
mov ebx, dword [esp + 0x64]
shl ecx, 0x15
or ecx, edi
add ecx, esi
mov edi, edx
not edi
or edi, ecx
xor edi, esi
add edi, ebx
lea edi, [edi + eax + 0x655b59c3]
mov eax, edi
shl edi, 6
mov ebx, dword [esp + 0x40]
shr eax, 0x1a
or eax, edi
add eax, ecx
mov edi, esi
not edi
or edi, eax
xor edi, ecx
add edi, ebx
lea edi, [edi + edx - 0x70f3336e]
mov ebx, dword [esp + 0x5c]
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, ebx
mov ebx, dword [esp + 0x38]
lea edi, [edi + esi - 0x100b83]
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 + 0x54]
lea edi, [edi + ecx - 0x7a7ba22f]
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
lea edi, [edi + eax + 0x6fa87e4f]
mov eax, edi
shr eax, 0x1a
shl edi, 6
or eax, edi
add eax, ecx
mov edi, esi
not edi
or edi, eax
xor edi, ecx
add edi, ebp
lea edi, [edi + edx - 0x1d31920]
mov edx, edi
shl edi, 0xa
mov ebp, dword [esp + 0x4c]
shr edx, 0x16
or edx, edi
add edx, eax
mov edi, ecx
not edi
or edi, edx
xor edi, eax
add edi, ebp
lea edi, [edi + esi - 0x5cfebcec]
mov ebp, dword [esp + 0x68]
mov esi, edi
shl edi, 0xf
mov ebx, dword [esp + 0x44]
shr esi, 0x11
or esi, edi
add esi, edx
mov edi, eax
not edi
or edi, esi
xor edi, edx
add edi, ebp
lea edi, [edi + ecx + 0x4e0811a1]
mov ecx, edi
shr edi, 0xb
mov ebp, dword [esp + 0x60]
shl ecx, 0x15
or ecx, edi
mov edi, edx
add ecx, esi
not edi
or edi, ecx
xor edi, esi
add edi, ebx
lea eax, [edi + eax - 0x8ac817e]
mov edi, eax
shl eax, 6
shr edi, 0x1a
or edi, eax
mov eax, esi
not eax
add edi, ecx
mov ebx, edi
or eax, ebx
xor eax, ecx
add eax, ebp
mov ebp, dword [esp + 0x3c]
lea edx, [eax + edx - 0x42c50dcb]
mov eax, edx
shl edx, 0xa
shr eax, 0x16
or eax, edx
mov edi, dword [esp + 0x58]
add eax, ebx
mov edx, ecx
not edx
or edx, eax
xor edx, ebx
add edx, ebp
lea esi, [edx + esi + 0x2ad7d2bb]
mov edx, esi
shr edx, 0x11
shl esi, 0xf
or edx, esi
add edx, eax
mov esi, edx
mov edx, ebx
not edx
or edx, esi
xor edx, eax
mov ebp, dword [esp + 0x24]
add edx, edi
mov edi, dword [esp + 0x2c]
lea ecx, [edx + ecx - 0x14792c6f]
mov edx, ecx
shl edx, 0x15
shr ecx, 0xb
or edx, ecx
add edx, dword [esp + 0x28]
add edx, esi
add esi, edi
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
add eax, esi
mov esi, dword [esp + 0x1c]
add ebx, ebp
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
inc esi
cmp esi, eax
mov dword [esp + 0x1c], esi
jl 0x4041a5
mov edi, dword [esp + 0x80]
mov eax, dword [esp + 0x18]
mov byte [edi], bl
shr ebx, 8
mov byte [edi + 4], dl
mov byte [edi + 8], cl
shr edx, 8
shr ecx, 8
mov byte [edi + 0xc], al
mov byte [edi + 1], bl
shr eax, 8
shr ebx, 8
mov byte [edi + 5], dl
mov byte [edi + 9], cl
shr edx, 8
shr ecx, 8
mov byte [edi + 0xd], al
mov byte [edi + 2], bl
shr eax, 8
shr ebx, 8
mov byte [edi + 6], dl
mov byte [edi + 0xa], cl
shr edx, 8
shr ecx, 8
mov byte [edi + 0xe], al
shr eax, 8
mov byte [edi + 3], bl
mov byte [edi + 7], dl
mov byte [edi + 0xb], cl
mov byte [edi + 0xf], al
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret