Function at 0x4040c0
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 ebp, 0x80808080
and ebp, ecx
lea edi, [ecx + ecx]
mov esi, ebp
shr ebp, 7
and edi, 0xfefefefe
sub esi, ebp
mov ebp, ecx
and esi, 0x1b1b1b1b
ror ebp, 0x10
xor esi, edi
mov edi, ecx
xor ecx, esi
ror edi, 0x18
xor esi, ebp
rol ecx, 0x18
xor esi, edi
mov ebp, 0x80808080
xor ecx, esi
and ebp, edx
lea edi, [edx + edx]
mov esi, ebp
shr ebp, 7
and edi, 0xfefefefe
sub esi, ebp
mov ebp, edx
and esi, 0x1b1b1b1b
ror ebp, 0x10
xor esi, edi
mov edi, edx
xor edx, esi
ror edi, 0x18
xor esi, ebp
rol edx, 0x18
xor esi, edi
mov ebp, 0x80808080
xor edx, esi
and ebp, eax
lea edi, [eax + eax]
mov esi, ebp
shr ebp, 7
and edi, 0xfefefefe
sub esi, ebp
mov ebp, eax
and esi, 0x1b1b1b1b
ror ebp, 0x10
xor esi, edi
mov edi, eax
xor eax, esi
ror edi, 0x18
xor esi, ebp
rol eax, 0x18
xor esi, edi
mov ebp, 0x80808080
xor eax, esi
and ebp, ebx
lea edi, [ebx + ebx]
mov esi, ebp
shr ebp, 7
and edi, 0xfefefefe
sub esi, ebp
mov ebp, ebx
and esi, 0x1b1b1b1b
ror ebp, 0x10
xor esi, edi
mov edi, ebx
xor ebx, esi
ror edi, 0x18
xor esi, ebp
rol ebx, 0x18
xor esi, edi
xor ebx, esi
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 0x404100
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