Function at 0x407040
Capabilities:
Encode data using xor

Disassembly:
mov dword [esp + 0x14], edi
xor eax, dword [edi]
xor ebx, dword [edi + 4]
xor ecx, dword [edi + 8]
xor edx, dword [edi + 0xc]
mov esi, dword [edi + 0xf0]
lea esi, [esi + esi - 2]
lea esi, [edi + esi*8]
mov dword [esp + 0x18], esi
mov edi, dword [ebp - 0x80]
mov esi, dword [ebp - 0x60]
mov edi, dword [ebp - 0x40]
mov esi, dword [ebp - 0x20]
mov edi, dword [ebp]
mov esi, dword [ebp + 0x20]
mov edi, dword [ebp + 0x40]
mov esi, dword [ebp + 0x60]
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0xff
movzx esi, byte [ebp + esi - 0x80]
movzx edi, bh
movzx edi, byte [ebp + edi - 0x80]
shl edi, 8
xor esi, edi
mov edi, ecx
shr edi, 0x10
and edi, 0xff
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x10
xor esi, edi
mov edi, edx
shr edi, 0x18
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x18
xor esi, edi
mov dword [esp + 4], esi
mov esi, ebx
and esi, 0xff
shr ebx, 0x10
movzx esi, byte [ebp + esi - 0x80]
movzx edi, ch
movzx edi, byte [ebp + edi - 0x80]
shl edi, 8
xor esi, edi
mov edi, edx
shr edi, 0x10
and edi, 0xff
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x10
xor esi, edi
mov edi, eax
shr edi, 0x18
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x18
xor esi, edi
mov dword [esp + 8], esi
mov esi, ecx
and esi, 0xff
shr ecx, 0x18
movzx esi, byte [ebp + esi - 0x80]
movzx edi, dh
movzx edi, byte [ebp + edi - 0x80]
shl edi, 8
xor esi, edi
mov edi, eax
shr edi, 0x10
and edx, 0xff
and edi, 0xff
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x10
xor esi, edi
movzx edi, bh
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x18
xor esi, edi
and edx, 0xff
movzx edx, byte [ebp + edx - 0x80]
movzx eax, ah
movzx eax, byte [ebp + eax - 0x80]
shl eax, 8
xor edx, eax
mov eax, dword [esp + 4]
and ebx, 0xff
movzx ebx, byte [ebp + ebx - 0x80]
shl ebx, 0x10
xor edx, ebx
mov ebx, dword [esp + 8]
movzx ecx, byte [ebp + ecx - 0x80]
shl ecx, 0x18
xor edx, ecx
mov ecx, esi
mov esi, ecx
and esi, 0x80808080
mov ebp, esi
shr ebp, 7
lea edi, [ecx + ecx]
sub esi, ebp
and edi, 0xfefefefe
and esi, 0x1b1b1b1b
mov ebp, ecx
xor esi, edi
xor ecx, esi
rol ecx, 0x18
xor ecx, esi
ror ebp, 0x10
xor ecx, ebp
ror ebp, 8
xor ecx, ebp
mov esi, edx
and esi, 0x80808080
mov ebp, esi
shr ebp, 7
lea edi, [edx + edx]
sub esi, ebp
and edi, 0xfefefefe
and esi, 0x1b1b1b1b
mov ebp, edx
xor esi, edi
xor edx, esi
rol edx, 0x18
xor edx, esi
ror ebp, 0x10
xor edx, ebp
ror ebp, 8
xor edx, ebp
mov esi, eax
and esi, 0x80808080
mov ebp, esi
shr ebp, 7
lea edi, [eax + eax]
sub esi, ebp
and edi, 0xfefefefe
and esi, 0x1b1b1b1b
mov ebp, eax
xor esi, edi
xor eax, esi
rol eax, 0x18
xor eax, esi
ror ebp, 0x10
xor eax, ebp
ror ebp, 8
xor eax, ebp
mov esi, ebx
and esi, 0x80808080
mov ebp, esi
shr ebp, 7
lea edi, [ebx + ebx]
sub esi, ebp
and edi, 0xfefefefe
and esi, 0x1b1b1b1b
mov ebp, ebx
xor esi, edi
xor ebx, esi
rol ebx, 0x18
xor ebx, esi
ror ebp, 0x10
xor ebx, ebp
ror ebp, 8
xor ebx, ebp
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x1c]
add edi, 0x10
xor eax, dword [edi]
xor ebx, dword [edi + 4]
xor ecx, dword [edi + 8]
xor edx, dword [edi + 0xc]
cmp edi, dword [esp + 0x18]
mov dword [esp + 0x14], edi
jb 0x407080
mov esi, eax
and esi, 0xff
movzx esi, byte [ebp + esi - 0x80]
movzx edi, bh
movzx edi, byte [ebp + edi - 0x80]
shl edi, 8
xor esi, edi
mov edi, ecx
shr edi, 0x10
and edi, 0xff
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x10
xor esi, edi
mov edi, edx
shr edi, 0x18
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x18
xor esi, edi
mov dword [esp + 4], esi
mov esi, ebx
and esi, 0xff
shr ebx, 0x10
movzx esi, byte [ebp + esi - 0x80]
movzx edi, ch
movzx edi, byte [ebp + edi - 0x80]
shl edi, 8
xor esi, edi
mov edi, edx
shr edi, 0x10
and edi, 0xff
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x10
xor esi, edi
mov edi, eax
shr edi, 0x18
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x18
xor esi, edi
mov dword [esp + 8], esi
mov esi, ecx
and esi, 0xff
shr ecx, 0x18
movzx esi, byte [ebp + esi - 0x80]
movzx edi, dh
movzx edi, byte [ebp + edi - 0x80]
shl edi, 8
xor esi, edi
mov edi, eax
shr edi, 0x10
and edx, 0xff
and edi, 0xff
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x10
xor esi, edi
movzx edi, bh
movzx edi, byte [ebp + edi - 0x80]
shl edi, 0x18
xor esi, edi
mov edi, dword [esp + 0x14]
and edx, 0xff
movzx edx, byte [ebp + edx - 0x80]
movzx eax, ah
movzx eax, byte [ebp + eax - 0x80]
shl eax, 8
xor edx, eax
mov eax, dword [esp + 4]
and ebx, 0xff
movzx ebx, byte [ebp + ebx - 0x80]
shl ebx, 0x10
xor edx, ebx
mov ebx, dword [esp + 8]
movzx ecx, byte [ebp + ecx - 0x80]
shl ecx, 0x18
xor edx, ecx
mov ecx, esi
xor eax, dword [edi + 0x10]
xor ebx, dword [edi + 0x14]
xor ecx, dword [edi + 0x18]
xor edx, dword [edi + 0x1c]
ret