Function at 0x407c60
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
mov esi, dword [esp + 0x24]
push edi
mov dword [esp + 0x1c], 0x10
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov esi, dword [esi + 0x10]
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x24], esi
mov edi, ecx
mov ebp, ecx
sar edi, 0x1b
and edi, 0x1f
shl ebp, 5
or edi, ebp
mov ebp, edx
xor ebp, ebx
and ebp, eax
xor ebp, edx
add edi, ebp
mov ebp, dword [esp + 0x24]
add edi, dword [ebp]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x14], edx
mov edx, ebx
mov ebx, eax
sar ebx, 2
and ebx, 0x3fffffff
lea edi, [edi + ebp + 0x5a827999]
mov ebp, dword [esp + 0x24]
shl eax, 0x1e
or ebx, eax
mov eax, ecx
mov ecx, edi
mov edi, dword [esp + 0x1c]
add ebp, 4
dec edi
mov dword [esp + 0x24], ebp
mov dword [esp + 0x1c], edi
jne 0x407c8d
mov edi, 0x10
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], edi
lea ebp, [edi - 3]
and edi, 0xf
mov dword [esp + 0x1c], ebp
lea edi, [esi + edi*4]
mov dword [esp + 0x24], edi
lea edi, [ebp - 5]
and edi, 0xf
add ebp, 5
and ebp, 0xf
mov edi, dword [esi + edi*4]
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x1c]
and ebp, 0xf
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x24]
xor edi, dword [ebp]
mov ebp, edi
add edi, edi
sar ebp, 0x1f
and ebp, 1
or ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], ebp
mov dword [edi], ebp
mov edi, ecx
sar edi, 0x1b
mov ebp, ecx
and edi, 0x1f
shl ebp, 5
or edi, ebp
mov ebp, edx
xor ebp, ebx
mov ebx, dword [esp + 0x14]
and ebp, eax
add ebx, edi
mov edi, dword [esp + 0x1c]
xor ebp, edx
add ebp, ebx
mov ebx, eax
sar ebx, 2
and ebx, 0x3fffffff
lea edi, [edi + ebp + 0x5a827999]
shl eax, 0x1e
or ebx, eax
mov eax, ecx
mov ecx, edi
mov edi, dword [esp + 0x10]
inc edi
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
cmp edi, 0x14
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], edi
jl 0x407cf5
mov edi, 0x14
mov dword [esp + 0x10], edi
lea ebp, [edi - 3]
and edi, 0xf
mov dword [esp + 0x1c], ebp
lea edi, [esi + edi*4]
mov dword [esp + 0x24], edi
lea edi, [ebp - 5]
and edi, 0xf
add ebp, 5
and ebp, 0xf
mov edi, dword [esi + edi*4]
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x1c]
and ebp, 0xf
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x24]
xor edi, dword [ebp]
mov ebp, edi
add edi, edi
sar ebp, 0x1f
and ebp, 1
or ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], ebp
mov dword [edi], ebp
mov edi, ecx
sar edi, 0x1b
mov ebp, ecx
and edi, 0x1f
shl ebp, 5
or edi, ebp
mov ebp, edx
xor ebp, ebx
mov ebx, dword [esp + 0x14]
xor ebp, eax
add ebx, edi
mov edi, dword [esp + 0x1c]
add ebp, ebx
mov ebx, eax
mov dword [esp + 0x14], edx
sar ebx, 2
and ebx, 0x3fffffff
mov edx, dword [esp + 0x18]
shl eax, 0x1e
lea edi, [edi + ebp + 0x6ed9eba1]
or ebx, eax
mov eax, ecx
mov ecx, edi
mov edi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
inc edi
cmp edi, 0x28
mov dword [esp + 0x10], edi
jl 0x407da4
mov edi, 0x28
mov dword [esp + 0x10], edi
lea ebp, [edi - 3]
and edi, 0xf
mov dword [esp + 0x1c], ebp
lea edi, [esi + edi*4]
mov dword [esp + 0x24], edi
lea edi, [ebp - 5]
and edi, 0xf
add ebp, 5
and ebp, 0xf
mov edi, dword [esi + edi*4]
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x1c]
and ebp, 0xf
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x24]
xor edi, dword [ebp]
mov ebp, edi
add edi, edi
sar ebp, 0x1f
and ebp, 1
or ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], ebp
mov dword [edi], ebp
mov edi, ebx
or edi, eax
and ebx, eax
and edi, edx
mov ebp, ecx
or edi, ebx
mov ebx, ecx
sar ebx, 0x1b
and ebx, 0x1f
shl ebp, 5
or ebx, ebp
mov ebp, dword [esp + 0x14]
add ebp, edi
mov edi, dword [esp + 0x1c]
add ebx, ebp
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
lea edi, [edi + ebx - 0x70e44324]
mov ebx, eax
sar ebx, 2
and ebx, 0x3fffffff
shl eax, 0x1e
or ebx, eax
mov eax, ecx
mov ecx, edi
mov edi, dword [esp + 0x10]
inc edi
mov dword [esp + 0x18], ebx
cmp edi, 0x3c
mov dword [esp + 0x10], edi
jl 0x407e51
mov edi, 0x3c
mov dword [esp + 0x10], edi
lea ebp, [edi - 3]
and edi, 0xf
mov dword [esp + 0x1c], ebp
lea edi, [esi + edi*4]
mov dword [esp + 0x24], edi
lea edi, [ebp - 5]
and edi, 0xf
add ebp, 5
and ebp, 0xf
mov edi, dword [esi + edi*4]
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x1c]
and ebp, 0xf
xor edi, dword [esi + ebp*4]
mov ebp, dword [esp + 0x24]
xor edi, dword [ebp]
mov ebp, edi
add edi, edi
sar ebp, 0x1f
and ebp, 1
or ebp, edi
mov edi, dword [esp + 0x24]
mov dword [esp + 0x1c], ebp
mov dword [edi], ebp
mov edi, ecx
sar edi, 0x1b
mov ebp, ecx
and edi, 0x1f
shl ebp, 5
or edi, ebp
mov ebp, edx
xor ebp, ebx
mov ebx, dword [esp + 0x14]
xor ebp, eax
add ebx, edi
mov edi, dword [esp + 0x1c]
add ebp, ebx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x18]
lea ebp, [edi + ebp - 0x359d3e2a]
mov edi, eax
sar edi, 2
and edi, 0x3fffffff
shl eax, 0x1e
or edi, eax
mov eax, ecx
mov ebx, edi
mov edi, dword [esp + 0x10]
inc edi
mov dword [esp + 0x18], ebx
cmp edi, 0x50
mov ecx, ebp
mov dword [esp + 0x10], edi
jl 0x407f02
mov ecx, dword [esp + 0x28]
mov esi, dword [ecx]
mov edi, dword [ecx + 8]
add esi, ebp
mov ebp, dword [ecx + 4]
mov dword [ecx], esi
mov esi, dword [ecx + 0xc]
add edi, ebx
add ebp, eax
mov eax, dword [esp + 0x14]
add esi, edx
mov edx, dword [ecx + 0x10]
mov dword [ecx + 8], edi
mov dword [ecx + 0xc], esi
pop edi
mov dword [ecx + 4], ebp
add edx, eax
pop esi
pop ebp
mov dword [ecx + 0x10], edx
xor eax, eax
pop ebx
add esp, 0x10
ret