Function at 0x403f50
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x475488
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x495278]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x40]
mov eax, dword [ebp + 4]
push eax
lea edi, [ebp + 0x3f4]
call fcn.00407640
mov eax, dword [ebp + 4]
push 0x3f8
push eax
mov dword [ebp + 0x450], eax
call dword [0x4793cc]
mov ecx, dword [ebp + 4]
xor ebx, ebx
cmp eax, ebx
lea esi, [ebp + 0x2c]
je 0x403fed
push 0xfffffffffffffff0
push eax
mov dword [esi + 0x40], ecx
mov dword [esi + 0x44], ebx
mov dword [esi + 0x50], ebx
mov dword [esi + 4], eax
call dword [0x479478]
mov ecx, dword [esi + 4]
mov edi, dword [0x479474]
or eax, 0xb
push eax
push 0xfffffffffffffff0
push ecx
call edi
mov edx, dword [esi + 4]
push esi
push 0xffffffffffffffeb
push edx
call edi
mov eax, dword [esi + 4]
push 0x420c60
push 0xfffffffffffffffc
push eax
call edi
mov dword [esi + 0x3c], eax
jmp 0x403ff3
mov edi, dword [0x479474]
push 0xc7
push 0xc8
push 0xe00000c9
add eax, 0xc11294
add al, dh
add eax, 0x2e383631
sub ch, byte [esi]
sub al, byte [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
sldt word [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [edi], cl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ebx - 0x30], ch
add al, byte [eax]
add byte [esi + ebp], dh
xor dh, byte [ecx]
cmp byte [esi], ch
sub ch, byte [esi]
sub al, byte [eax]
or al, byte [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [edi], cl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [esi], cl
fiadd dword [edx - 0x40]
add byte [ecx], dh
xor eax, 0x3130322e
sub ch, byte cs:[esi]
sub al, byte [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
sldt word [eax]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
xor dword [esi + ebp], esi
cmp byte [ecx], bh
sub ch, byte cs:[esi]
sub al, byte [eax]
in al, 0x20
xor ah, byte [eax]
xor al, byte [eax]
add byte [eax], al
add byte [edi], cl
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add bh, dl
add esi, dword [ebp - 0x31d9e582]
jne 0x40413a
xchg esi, eax
dec ebx
dec edx
clc
stosb byte es:[edi], al
push ebx
ficomp dword [esi + 0x13cb0ab4]
add byte [esi - 0x4f55793b], ah
scasd eax, dword es:[edi]
pop ebx
dec esi
test dword [edx + 0x25], edx
jmp 0x4040eb
invalid