Function at 0x40de6b
Capabilities:
Encode data using xor

Disassembly:
pop esi
hlt
add al, 0
mov dword [esi + 4], ebx
mov byte [esi + 9], 0
pop ebx
dec dword [esi]
add byte [ebx - 1], bl
push cs
pop es
add byte [ebx + 0x7500467d], al
xor esi, 0x52
invalid
push edx
inc edx
cmp eax, edi
je 0x40de73
je 0x40ded0
lea eax, [ebx + esi]
cmp edx, dword [ebx + eax*4 + 0x7e]
push esp
cmp dword [esi + 0x18], 0
je 0x40de9c
push dword [esi + 0x18]
call 0x8a40de80
push ebp
jle 0x40debb
add byte [ebp + 0x46], dh
sub byte [ebx], bh
ror dword [edi], 1
jne 0x40debd
mov edi, dword [esi + 0x14]
jle 0x40deb1
pop edi
push cs
mov ecx, edi
push 0x10
xor edx, edx
pop ecx
push edi
call 0xb328f573
or dword [ebx + 0x47044346], 0xffffffc7
inc esp
mov eax, 0x750000fc
adc dword [esi], ecx
mov dl, 0x83
mov eax, dword [esi + 0x43]
add al, 0x47
mov dword [eax + edi*4 - 4], 0x11750000
push cs
push edi
mov byte [0xec8b5516], al
mov ebp, esp
push edi
mov edi, ecx
lcall 0x5659, 0x83b2e816
call 0xb328f573
or dword [ebx - 0xe74a914], 0xffffff80
push dword [esi + 0x1c]
mov ecx, edi
push 0xffffffffffffff8e
stosb byte es:[edi], al
or dword [ebx + 0xc], 0xf845c7ae
add dword [eax], eax
seto cl
neg ecx
inc eax
pop es
add byte [eax], cl
call 0x1cc52ce5
push ecx
push ecx
fstp qword [esp]
call 0x1f424715
mov ecx, 0x5ddd0c06
clc
jne 0x40df60
push esi
ret
sal edi, 0xd9
inc eax
pop es
add byte [eax], cl
call 0x1cc52ce5
push ecx
push ecx
fstp qword [esp]
call 0x1f424845
mov ecx, 0x5ddd0c06
clc
jne 0x40dfa0
push esi
ret
add ch, bl
inc ebp
clc
fstp qword [esi]
or byte [ebx + 0x5d890308], cl
in al, 0x89
pop ebp
pop esi
push ebx
push 0x51
inc edi
mov dword [ebp - 8], 0xc1e8ce8b
add bl, byte [ebx + esi*2]
push ebx
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
mov eax, dword [edi + 4]
push esi
push 4
dec esp
and al, 0x18
add al, 0x4c
and al, 0x20
mov dword [esp + 0x24], 0x3f74040c
mov eax, dword [edi]
inc esp
and al, 0x20
add dword [edi], ecx
mov edi, 0xcb830840
and al, 0x10
jmp 0x40df3b
movsx eax, word [eax + 8]
or ebx, 0x24
adc bl, ch
xchg ecx, eax
adc byte [ebx], ch
sal dword [edx + ebp + 6], 0
mov bh, byte [ebx - 0x7cfff973]
call 0x2dc5eeee
lea eax, [esi]
add byte [edi - 0x75], dl
into
call 0x5540f125
mov ebp, esp
push esi
mov esi, ecx
dec esp
jmp 0x48889e
mov eax, dword [ebp + 0x18]
inc eax
push eax
push dword [ebp + 0x14]
mov edx, edi
push ebx
call 0x7647d90b
or al, ch
xchg byte [edx], bl
clc
invalid
adc al, 0x85
ror byte [edi], 0x85
inc edx
sbb al, 0xf8
dec dword [ebx - 0x167c07b3]
add cl, byte [ecx - 0x97a07b3]
jne 0xff489819
movzx edx, word [ecx]
jmp 0x489862
mov dword [ebp - 0x14], edx
mov eax, edx
cdq
and edx, 0x7f
add eax, edx
mov edx, dword [ebp - 0x14]
sar eax, 7
movzx eax, byte [eax + 0x4ac4a0]
shl eax, 7
and edx, 0x8000007f
jns 0x48988a
dec edx
or edx, 0xffffff80
inc edx
add eax, edx
movzx eax, word [eax*2 + 0x49e608]
movzx eax, byte [eax*8 + 0x4ab10a]
mov dword [ebp - 0x2c], eax
cmp ecx, dword [ebp - 0x38]
je 0x40a3f3
lea edx, [ecx - 2]
mov dword [ebp - 0xc], edx
test esi, esi
jne 0x4898b7
movzx ecx, word [edx]
jmp 0x4898fd
mov ax, word [edx]
mov ecx, 0xfbfc00
and ax, cx
mov ecx, 0xfbdc00
cmp ax, cx
jne 0x4898d2
sub edx, 2
mov dword [ebp - 0xc], edx
movzx ecx, word [edx]
mov eax, ecx
and eax, 0xfbfc00
cmp eax, 0xffffd800
jne 0x4898fd
movzx eax, word [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0xff010000
mov eax, ecx
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
movzx eax, byte [eax + 0x4ac4a0]
shl eax, 7
and ecx, 0x8000007f
jns 0x48991f
dec ecx
or ecx, 0xffffff80
inc ecx
add eax, ecx
mov ecx, dword [ebp - 0x2c]
movzx eax, word [eax*2 + 0x49e608]
movzx edx, byte [eax*8 + 0x4ab10a]
mov eax, 0xffff01
shl eax, cl
test dword [edx*4 + 0x49e52c], eax
je 0x489952
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 8], ecx
mov dword [ebp - 0x2c], edx
jmp 0x48989f
mov ecx, dword [ebp - 8]
jmp 0x488886