Function at 0x404cf0
Capabilities:
Encode data using xor
Hash data with md5
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
mov ebx, dword [0x6654d8]
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], ebx
push esi
push edi
test ebx, ebx
jne 0x404d24
push 0x1040
call fcn.005b89cc
mov ecx, dword [ebp - 0x10]
mov ebx, eax
add esp, 4
mov dword [ebp - 0xc], ebx
mov dword [0x6654d8], ebx
mov eax, dword [ebp + 8]
xor esi, esi
mov dword [eax], 0x67452301
mov dword [eax + 4], 0xefcdab89
mov dword [eax + 8], 0x98badcfe
mov dword [eax + 0xc], 0x10325476
push ecx
push 0x1000
push 1
push ebx
call fcn.005d5b61
add esi, eax
mov dword [ebp - 0x20], eax
add esp, 0x10
mov dword [ebp - 0x1c], esi
cmp eax, 0x1000
jne 0x404d66
jmp 0x404da2
mov byte [eax + ebx], 0x80
inc eax
mov ecx, eax
and ecx, 0x3f
cmp cl, 0x38
je 0x404d84
mov byte [eax + ebx], 0
inc eax
mov ecx, eax
and ecx, 0x3f
cmp cl, 0x38
jne 0x404d75
lea ecx, [esi*8]
mov dword [eax + ebx], ecx
add eax, 4
mov ecx, esi
shr ecx, 0x1d
mov dword [eax + ebx], ecx
add eax, 4
je 0x405796
mov edx, dword [ebp + 8]
dec eax
add ebx, 0x1c
shr eax, 6
inc eax
mov dword [ebp - 4], ebx
mov dword [ebp - 8], eax
mov edx, dword [edx]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], edx
mov esi, dword [eax + 4]
mov ecx, esi
mov ebx, dword [eax + 0xc]
not ecx
mov edi, dword [eax + 8]
and ecx, ebx
mov dword [ebp - 0x18], ebx
mov eax, edi
mov ebx, dword [ebp - 4]
and eax, esi
or ecx, eax
add ecx, edx
mov eax, dword [ebx - 0x1c]
add eax, 0xd76aa478
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 7
mov dword [eax], ecx
mov eax, dword [eax + 4]
add ecx, eax
mov eax, dword [ebp + 8]
mov edx, ecx
not edx
mov dword [eax], ecx
and edx, dword [eax + 8]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx - 0x18]
mov ecx, dword [eax + 0xc]
add ecx, 0xe8c7b756
add ecx, edx
rol ecx, 0xc
mov dword [eax + 0xc], ecx
mov eax, dword [eax]
add ecx, eax
mov eax, dword [ebp + 8]
mov edx, ecx
not edx
mov dword [eax + 0xc], ecx
and edx, dword [eax + 4]
mov eax, dword [eax]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx - 0x14]
mov ecx, dword [eax + 8]
add ecx, 0x242070db
add ecx, edx
mov edx, eax
ror ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, eax
and eax, dword [edx + 0xc]
not ecx
and ecx, dword [edx]
or ecx, eax
mov eax, dword [ebx - 0x10]
add ecx, dword [edx + 4]
add eax, 0xc1bdceee
add ecx, eax
ror ecx, 0xa
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov ecx, eax
mov dword [edx + 4], eax
and eax, dword [edx + 8]
not ecx
and ecx, dword [edx + 0xc]
or ecx, eax
mov eax, dword [ebx - 0xc]
add ecx, dword [edx]
add eax, 0xf57c0faf
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 7
mov dword [edx], ecx
add ecx, dword [edx + 4]
mov dword [edx], ecx
mov edx, ecx
not edx
and edx, dword [eax + 8]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx - 8]
mov ecx, dword [eax + 0xc]
add ecx, 0x4787c62a
add ecx, edx
rol ecx, 0xc
mov dword [eax + 0xc], ecx
mov eax, dword [eax]
add ecx, eax
mov eax, dword [ebp + 8]
mov edx, ecx
not edx
mov dword [eax + 0xc], ecx
and edx, dword [eax + 4]
mov eax, dword [eax]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx - 4]
mov ecx, dword [eax + 8]
add ecx, 0xa8304613
add ecx, edx
mov edx, eax
ror ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, eax
and eax, dword [edx + 0xc]
not ecx
and ecx, dword [edx]
or ecx, eax
mov eax, dword [ebx]
add ecx, dword [edx + 4]
add eax, 0xfd469501
add ecx, eax
ror ecx, 0xa
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, eax
and eax, dword [edx + 8]
not ecx
and ecx, dword [edx + 0xc]
or ecx, eax
mov eax, dword [ebx + 4]
add ecx, dword [edx]
add eax, 0x698098d8
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 7
mov dword [edx], ecx
add ecx, dword [edx + 4]
mov dword [edx], ecx
mov edx, ecx
not edx
and edx, dword [eax + 8]
mov eax, dword [eax + 4]
and eax, ecx
mov ecx, dword [ebx + 8]
or edx, eax
add ecx, 0x8b44f7af
mov eax, dword [ebp + 8]
add edx, dword [eax + 0xc]
add ecx, edx
mov edx, eax
rol ecx, 0xc
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, eax
and eax, dword [edx]
not ecx
and ecx, dword [edx + 4]
or ecx, eax
mov eax, dword [edx + 8]
add ecx, dword [ebx + 0xc]
add eax, 0xffff5bb1
add ecx, eax
ror ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, eax
and eax, dword [edx + 0xc]
not ecx
and ecx, dword [edx]
or ecx, eax
mov eax, dword [ebx + 0x10]
add ecx, dword [edx + 4]
add eax, 0x895cd7be
add ecx, eax
ror ecx, 0xa
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, eax
and eax, dword [edx + 8]
not ecx
and ecx, dword [edx + 0xc]
or ecx, eax
mov eax, dword [edx]
add ecx, dword [ebx + 0x14]
add eax, 0x6b901122
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 7
mov dword [edx], ecx
add ecx, dword [edx + 4]
mov dword [edx], ecx
mov edx, ecx
not edx
and edx, dword [eax + 8]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx + 0x18]
mov ecx, dword [eax + 0xc]
add ecx, 0xfd987193
add ecx, edx
rol ecx, 0xc
mov dword [eax + 0xc], ecx
mov eax, dword [eax]
add ecx, eax
mov eax, dword [ebp + 8]
mov edx, ecx
not edx
mov dword [eax + 0xc], ecx
and edx, dword [eax + 4]
mov eax, dword [eax]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx + 0x1c]
mov ecx, dword [eax + 8]
add ecx, 0xa679438e
add ecx, edx
ror ecx, 0xf
mov dword [eax + 8], ecx
mov eax, dword [eax + 0xc]
add ecx, eax
mov eax, dword [ebp + 8]
mov edx, ecx
mov dword [eax + 8], ecx
not edx
and edx, dword [eax]
mov eax, dword [eax + 0xc]
and eax, ecx
mov ecx, dword [ebx + 0x20]
or edx, eax
add ecx, 0x49b40821
mov eax, dword [ebp + 8]
add edx, dword [eax + 4]
add ecx, edx
mov edx, eax
ror ecx, 0xa
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
and eax, dword [edx + 0xc]
mov ecx, dword [edx + 0xc]
not ecx
and ecx, dword [edx + 8]
or ecx, eax
mov eax, dword [ebx - 0x18]
add ecx, dword [edx]
add eax, 0xf61e2562
add ecx, eax
rol ecx, 5
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
and eax, dword [edx + 8]
mov ecx, dword [edx + 8]
not ecx
and ecx, dword [edx + 4]
or ecx, eax
mov eax, dword [edx + 0xc]
add ecx, dword [ebx - 4]
add eax, 0xc040b340
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 9
mov dword [edx + 0xc], ecx
add ecx, dword [edx]
mov dword [edx + 0xc], ecx
mov edx, dword [edx + 4]
not edx
and edx, dword [eax]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx + 0x10]
mov ebx, dword [ebp + 8]
mov ecx, dword [eax + 8]
add ecx, 0x265e5a51
add ecx, edx
mov edx, eax
rol ecx, 0xe
mov dword [edx + 8], ecx
add ecx, dword [edx + 0xc]
mov dword [edx + 8], ecx
mov eax, dword [edx]
mov edx, eax
and eax, ecx
not edx
and edx, dword [ebx + 0xc]
or edx, eax
mov eax, ebx
mov ebx, dword [ebp - 4]
add edx, dword [eax + 4]
mov ecx, dword [ebx - 0x1c]
add ecx, 0xe9b6c7aa
add ecx, edx
mov edx, eax
ror ecx, 0xc
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
not ecx
and ecx, dword [edx + 8]
and eax, dword [edx + 0xc]
or ecx, eax
mov eax, dword [edx]
add ecx, dword [ebx - 8]
add eax, 0xd62f105d
add ecx, eax
rol ecx, 5
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
and eax, dword [edx + 8]
mov ecx, dword [edx + 8]
not ecx
and ecx, dword [edx + 4]
or ecx, eax
mov eax, dword [edx + 0xc]
add ecx, dword [ebx + 0xc]
add eax, 0x2441453
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 9
mov dword [edx + 0xc], ecx
add ecx, dword [edx]
mov dword [edx + 0xc], ecx
mov edx, dword [edx + 4]
not edx
and edx, dword [eax]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx + 0x20]
mov ebx, dword [ebp + 8]
mov ecx, dword [eax + 8]
add ecx, 0xd8a1e681
add ecx, edx
mov edx, eax
rol ecx, 0xe
mov dword [edx + 8], ecx
add ecx, dword [edx + 0xc]
mov dword [edx + 8], ecx
mov eax, dword [edx]
mov edx, eax
and eax, ecx
not edx
and edx, dword [ebx + 0xc]
or edx, eax
mov eax, ebx
mov ebx, dword [ebp - 4]
add edx, dword [eax + 4]
mov ecx, dword [ebx - 0xc]
add ecx, 0xe7d3fbc8
add ecx, edx
mov edx, eax
ror ecx, 0xc
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
and eax, dword [edx + 0xc]
mov ecx, dword [edx + 0xc]
not ecx
and ecx, dword [edx + 8]
or ecx, eax
mov eax, dword [ebx + 8]
add ecx, dword [edx]
add eax, 0x21e1cde6
add ecx, eax
rol ecx, 5
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 8]
and eax, dword [edx + 8]
not ecx
and ecx, dword [edx + 4]
or ecx, eax
add ecx, dword [ebx + 0x1c]
mov eax, dword [edx + 0xc]
add eax, 0xc33707d6
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 9
mov dword [edx + 0xc], ecx
add ecx, dword [edx]
mov dword [edx + 0xc], ecx
mov edx, dword [edx + 4]
not edx
and edx, dword [eax]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx - 0x10]
mov ebx, dword [ebp + 8]
mov ecx, dword [eax + 8]
add ecx, 0xf4d50d87
add ecx, edx
mov edx, eax
rol ecx, 0xe
mov dword [edx + 8], ecx
add ecx, dword [edx + 0xc]
mov dword [edx + 8], ecx
mov eax, dword [edx]
mov edx, eax
and eax, ecx
not edx
and edx, dword [ebx + 0xc]
or edx, eax
mov eax, ebx
mov ebx, dword [ebp - 4]
add edx, dword [eax + 4]
mov ecx, dword [ebx + 4]
add ecx, 0x455a14ed
add ecx, edx
mov edx, eax
ror ecx, 0xc
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
and eax, dword [edx + 0xc]
mov ecx, dword [edx + 0xc]
not ecx
and ecx, dword [edx + 8]
or ecx, eax
mov eax, dword [ebx + 0x18]
add ecx, dword [edx]
add eax, 0xa9e3e905
add ecx, eax
rol ecx, 5
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
and eax, dword [edx + 8]
mov ecx, dword [edx + 8]
not ecx
and ecx, dword [edx + 4]
or ecx, eax
mov eax, dword [ebx - 0x14]
add ecx, dword [edx + 0xc]
add eax, 0xfcefa3f8
add ecx, eax
mov eax, dword [ebp + 8]
rol ecx, 9
mov dword [edx + 0xc], ecx
add ecx, dword [edx]
mov dword [edx + 0xc], ecx
mov edx, dword [edx + 4]
not edx
and edx, dword [eax]
mov eax, dword [eax + 4]
and eax, ecx
or edx, eax
mov eax, dword [ebp + 8]
add edx, dword [ebx]
mov ecx, dword [eax + 8]
add ecx, 0x676f02d9
add ecx, edx
mov ebx, dword [ebp + 8]
rol ecx, 0xe
mov edx, eax
mov dword [edx + 8], ecx
add ecx, dword [edx + 0xc]
mov dword [edx + 8], ecx
mov eax, dword [edx]
mov edx, eax
and eax, ecx
not edx
and edx, dword [ebx + 0xc]
or edx, eax
mov eax, ebx
mov ebx, dword [ebp - 4]
add edx, dword [eax + 4]
mov ecx, dword [ebx + 0x14]
add ecx, 0x8d2a4c8a
add ecx, edx
mov edx, eax
ror ecx, 0xc
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
xor ecx, eax
mov eax, dword [edx]
xor ecx, dword [edx + 8]
add eax, 0xfffa3942
add ecx, dword [ebx - 8]
add ecx, eax
rol ecx, 4
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 4]
xor ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 8]
add eax, 0x8771f681
add ecx, dword [ebx + 4]
add ecx, eax
rol ecx, 0xb
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
xor ecx, dword [edx]
xor ecx, eax
mov eax, dword [edx + 8]
add ecx, dword [ebx + 0x10]
add eax, 0x6d9d6122
add ecx, eax
rol ecx, 0x10
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
xor ecx, eax
mov eax, dword [ebx + 0x1c]
xor ecx, dword [edx + 0xc]
add eax, 0xfde5380c
add ecx, dword [edx + 4]
add ecx, eax
ror ecx, 9
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
xor ecx, eax
mov eax, dword [ebx - 0x18]
xor ecx, dword [edx + 8]
add eax, 0xa4beea44
add ecx, dword [edx]
add ecx, eax
rol ecx, 4
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 4]
xor ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 8]
add eax, 0x4bdecfa9
add ecx, dword [ebx - 0xc]
add ecx, eax
rol ecx, 0xb
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
xor ecx, dword [edx]
xor ecx, eax
mov eax, dword [edx + 8]
add ecx, dword [ebx]
add eax, 0xf6bb4b60
add ecx, eax
rol ecx, 0x10
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
xor ecx, eax
mov eax, dword [ebx + 0xc]
xor ecx, dword [edx + 0xc]
add eax, 0xbebfbc70
add ecx, dword [edx + 4]
add ecx, eax
ror ecx, 9
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
xor ecx, eax
mov eax, dword [ebx + 0x18]
xor ecx, dword [edx + 8]
add eax, 0x289b7ec6
add ecx, dword [edx]
add ecx, eax
rol ecx, 4
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 4]
xor ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 8]
add eax, 0xeaa127fa
add ecx, dword [ebx - 0x1c]
add ecx, eax
rol ecx, 0xb
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
xor ecx, dword [edx]
xor ecx, eax
mov eax, dword [edx + 8]
add ecx, dword [ebx - 0x10]
add eax, 0xd4ef3085
add ecx, eax
rol ecx, 0x10
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
xor ecx, eax
mov eax, dword [ebx - 4]
xor ecx, dword [edx + 0xc]
add ecx, dword [edx + 4]
add eax, 0x4881d05
add ecx, eax
ror ecx, 9
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
xor ecx, eax
mov eax, dword [ebx + 8]
xor ecx, dword [edx + 8]
add eax, 0xd9d4d039
add ecx, dword [edx]
add ecx, eax
rol ecx, 4
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 4]
xor ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 8]
add eax, 0xe6db99e5
add ecx, dword [ebx + 0x14]
add ecx, eax
rol ecx, 0xb
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
xor ecx, dword [edx]
xor ecx, eax
mov eax, dword [edx + 8]
add ecx, dword [ebx + 0x20]
add eax, 0x1fa27cf8
add ecx, eax
rol ecx, 0x10
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
xor ecx, eax
mov eax, dword [ebx - 0x14]
xor ecx, dword [edx + 0xc]
add eax, 0xc4ac5665
add ecx, dword [edx + 4]
add ecx, eax
ror ecx, 9
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
not ecx
or ecx, eax
mov eax, dword [edx]
xor ecx, dword [edx + 8]
add eax, 0xf4292244
add ecx, dword [ebx - 0x1c]
add ecx, eax
rol ecx, 6
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 8]
not ecx
or ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 4]
add eax, 0x432aff97
add ecx, dword [ebx]
add ecx, eax
rol ecx, 0xa
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
not ecx
or ecx, eax
mov eax, dword [edx + 8]
xor ecx, dword [edx]
add eax, 0xab9423a7
add ecx, dword [ebx + 0x1c]
add ecx, eax
rol ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
not ecx
or ecx, eax
mov eax, dword [ebx - 8]
xor ecx, dword [edx + 0xc]
add eax, 0xfc93a039
add ecx, dword [edx + 4]
add ecx, eax
ror ecx, 0xb
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
not ecx
or ecx, eax
mov eax, dword [edx]
xor ecx, dword [edx + 8]
add eax, 0x655b59c3
add ecx, dword [ebx + 0x14]
add ecx, eax
rol ecx, 6
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 8]
not ecx
or ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 4]
add eax, 0x8f0ccc92
add ecx, dword [ebx - 0x10]
add ecx, eax
rol ecx, 0xa
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
not ecx
or ecx, eax
mov eax, dword [edx + 8]
xor ecx, dword [edx]
add eax, 0xffeff47d
add ecx, dword [ebx + 0xc]
add ecx, eax
rol ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
not ecx
or ecx, eax
mov eax, dword [ebx - 0x18]
xor ecx, dword [edx + 0xc]
add eax, 0x85845dd1
add ecx, dword [edx + 4]
add ecx, eax
ror ecx, 0xb
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
not ecx
or ecx, eax
xor ecx, dword [edx + 8]
add ecx, dword [edx]
mov eax, dword [ebx + 4]
add eax, 0x6fa87e4f
add ecx, eax
rol ecx, 6
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 8]
not ecx
or ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 4]
add eax, 0xfe2ce6e0
add ecx, dword [ebx + 0x20]
add ecx, eax
rol ecx, 0xa
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
not ecx
or ecx, eax
mov eax, dword [edx + 8]
xor ecx, dword [edx]
add eax, 0xa3014314
add ecx, dword [ebx - 4]
add ecx, eax
rol ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
not ecx
or ecx, eax
mov eax, dword [ebx + 0x18]
xor ecx, dword [edx + 0xc]
add eax, 0x4e0811a1
add ecx, dword [edx + 4]
add ecx, eax
ror ecx, 0xb
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov ecx, dword [edx + 0xc]
not ecx
or ecx, eax
mov eax, dword [ebx - 0xc]
xor ecx, dword [edx + 8]
add eax, 0xf7537e82
add ecx, dword [edx]
add ecx, eax
rol ecx, 6
mov dword [edx], ecx
mov eax, dword [edx + 4]
add eax, ecx
mov dword [edx], eax
mov ecx, dword [edx + 8]
not ecx
or ecx, eax
mov eax, dword [edx + 0xc]
xor ecx, dword [edx + 4]
add eax, 0xbd3af235
add ecx, dword [ebx + 0x10]
add ecx, eax
rol ecx, 0xa
mov dword [edx + 0xc], ecx
mov eax, dword [edx]
add eax, ecx
mov dword [edx + 0xc], eax
mov ecx, dword [edx + 4]
not ecx
or ecx, eax
mov eax, dword [edx + 8]
xor ecx, dword [edx]
add ecx, dword [ebx - 0x14]
add eax, 0x2ad7d2bb
add dword [ebp - 4], 0x40
add ecx, eax
rol ecx, 0xf
mov dword [edx + 8], ecx
mov eax, dword [edx + 0xc]
add eax, ecx
mov dword [edx + 8], eax
mov ecx, dword [edx]
not ecx
or ecx, eax
mov eax, dword [ebx + 8]
xor ecx, dword [edx + 0xc]
add eax, 0xeb86d391
add ecx, dword [edx + 4]
mov ebx, dword [ebp - 0x18]
add ecx, eax
ror ecx, 0xb
mov dword [edx + 4], ecx
mov eax, dword [edx + 8]
add eax, ecx
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x14]
add dword [edx], eax
add dword [edx + 4], esi
add dword [edx + 8], edi
add dword [edx + 0xc], ebx
sub dword [ebp - 8], 1
jne 0x404db3
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 0x1c]
jmp 0x405799
mov edx, dword [ebp + 8]
cmp dword [ebp - 0x20], 0x1000
mov ecx, dword [ebp - 0x10]
je 0x404d44
pop edi
pop esi
mov eax, edx
pop ebx
mov esp, ebp
pop ebp
ret