Function at 0x403960
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [0x40e441]
sbb eax, eax
je 0x403983
jmp eax
inc ebp
js 0x4039af
je 0x4039cb
outsd dx, dword [esi]
jne 0x4039dc
jb 0x4039fd
arpl word [ebp + 0x73], sp
jae 0x403994
add byte [esi + 0x52], dl
push esi
push edx
push edx
push ebp
dec esi
add byte [eax], al
add byte [eax + edi + 0x39800040], al
inc eax
add byte [eax], al
add byte [eax + eax + 0x44], al
in al, 0x40
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax + eax], al
insb byte es:[edi], dx
add byte gs:[eax + edi + 0x31d40040], al
inc eax
add byte [eax], al
add byte [eax + eax], al
shl ah, 1
inc eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
or byte [eax], al
add cl, ah
loope 0x403a52
in al, 0x40
add byte [ebx], cl
sal byte [edx + eax - 1], 0xe0
or eax, eax
je 0x403a03
jmp eax
push 0x4039e0
mov eax, 0x401a70
call eax
fnstsw ax
add al, byte [eax]
add byte [eax], ah
add byte [eax + eax], ah
add byte [eax], al
add eax, 0
add byte [eax + eax], al
add dword [eax], eax
or byte [eax], al
add dword [eax], eax
adc byte [eax], al
add dword [eax], eax
sbb byte [eax], al
add dword [eax], esp
sbb al, 0
add dword [eax], eax
add al, 0
add byte [eax], al
and eax, 0x3100
add byte [eax], al
add byte [ecx], bl
dec edi
lodsd eax, dword [esi]
xor ebx, dword [ecx - 0x48fa301a]
or al, 0
stosb byte es:[edi], al
add byte [eax - 0x2d], ah
xchg ebx, eax
and eax, 0xfafc7b3d
mov al, byte [0x38a71068]
or byte [eax], al
and esi, dword [ebx]
jno 0x403a15
or al, 0
inc eax
add byte [eax], al
add byte [eax], al
add byte [ecx], al
add al, 4
push cs
add byte [eax], al
add byte [edx + 0x74], dl
insb byte es:[edi], dx
dec ebp
outsd dx, dword [esi]
jbe 0x403adc
dec ebp
insd dword es:[edi], dx
dec edi
jb 0x403af6
add byte [eax], al
add byte [eax + edi + 0x3a700041], al
rol byte [eax], 0
add byte [eax + eax], al
pop ebp
in al, 0x40
add al, byte [eax]
inc eax
add byte [eax], al
add byte [eax], al
inc eax
add byte [ecx + 0x40e464], ch
test eax, 0x40e464
or eax, eax
jl 0x403aa3
jmp eax
push 0x403a80
cmp al, byte [eax]
mov eax, 0x401a70
call eax
jmp eax
leave
or eax, 0x3d2a4bca
sti
cld
cli
mov al, byte [0x38871068]
or byte [eax], al
sub esi, dword [ebx]
jno 0x403aa5
mov ah, 0x91
xchg esi, eax
nop
adc dword [0xc39511d2], edi
add byte [eax + 0x5bcf0dc9], ah
and dword [0xa0fafcfb], edi
push 0x838a710
add byte [ebx], ch
xor edx, dword [ecx - 0x4b]
inc ebx
insb byte es:[edi], dx
popal
jae 0x403b88
rcl byte [ecx], cl
xchg ebp, eax
ret
add byte [eax], al
add byte [ecx], ah
dec edx
push esp
ljmp 0xe4a3
add byte [eax], al
add byte [eax], al
push es
add byte [edx], al
add al, 0x14
add byte [eax + edx], ch
add byte [eax], al
add al, byte [eax]
sub al, 0
add al, 0x2c
sbb al, 0
add dword [eax], eax
and byte [eax], al
add dword [eax], eax
or eax, 0xc00
add byte [eax], al
add byte [eax], cl
add byte [0x38000c04], al
add byte [eax], al
add byte [eax], al
add byte [eax], bh
add byte [eax], al
add al, 0xc
inc eax
add al, 0
add byte [eax], al
add byte [eax], al
and al, 0
add al, byte [esi + edx]
or byte [eax], al
add byte [eax], al
add dword [eax + 8], ecx
add byte [esp + ecx], al
add byte [eax], al
add eax, 0x1002001
add byte [eax], al
add byte [eax], al
and byte [eax], cl
add al, byte [eax]
add byte [ecx], al
add byte [eax], al
add al, byte [eax]
add dword [esp + ecx], eax
add byte [eax + eax], ah
add byte [eax], al
add byte [eax], al
add eax, 0xc040120
add byte [eax + eax], al
add byte [eax], dl
inc eax
add ah, byte [eax + eax]
add al, 4
push es
add byte [eax], al
add byte [edi + 0x64], ah
in eax, dx
xor esi, dword [edx]
add byte [eax], al
add byte [edx], cl
add byte [eax], al
add byte [ebx + 0x72], al
in eax, 0x61
je 0x403c7f
inc esp
inc ebx
inc ecx
add byte [eax], al
add byte [eax], ch
cmp al, 0x40
add byte [esp + edi], dl
inc eax
add byte [eax], dh
add byte [eax], al
add dword [esp + 0x40], ebp
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ecx + 0x40e474], ah
mov eax, dword [0x40e474]
or eax, eax
je 0x403c43
jmp eax
push 0x403c20
mov eax, 0x401a70
call eax
jmp eax
add byte [eax], al
add byte [ecx], al
add byte [ecx + 0x40e480], ah
mov eax, dword [0x40e480]
or eax, eax
je 0x403c8f
push eax
push 0x403c6c
mov eax, 0x429a70
call eax
jmp eax