Function at 0x4503a6
Capabilities:
Encode data using xor

Disassembly:
add cl, byte [eax - 1]
mov al, 1
clc
call fcn.0040446a
mov byte [ebp - 5], dl
push ebp
cld
call 0x8c414946
xor byte [eax + 2], 1
jne 0x4503a9
cdq
cmp al, 0xfb
dec dword [edx - 0x1d7f04ab]
cld
mov eax, dword [eax]
cld
call fcn.00476a02
cmp byte [ebp - 5], 0
jle 0x4503e1
mov eax, dword [ebp - 4]
call fcn.00404412
mov ebx, dword [ebp + 0xc]
adc byte [eax - 0x74ffbf19], 0xec
out 0x40, eax
add byte [ebx - 0x76a90714], cl
push ebp
clc
mov dword [ebp - 4], eax
mov edx, dword [ebp - 8]
mov eax, dword [eax]
cld
call fcn.0044f7c2
mov eax, dword [eax]
cld
mov si, 0xffc7
call fcn.0040425a
and eax, 0x7f
lea eax, [eax + eax*2]
lea eax, [eax*4 + 0x68a8ec]
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x75010274]
mov eax, dword [eax + edx*4]
mov edx, dword [ebp - 8]
mov edx, dword [edx + 4]
mov ecx, dword [ebp - 4]
movzx ecx, byte [ecx + 0x276]
mov ecx, dword [ecx*4 + 0x68a914]
not ecx
and edx, ecx
or edx, 4
or eax, edx
mov edx, dword [ebp - 4]
movzx edx, byte [edx + 0x275]
or eax, dword [edx*4 + 0x68a904]
mov edx, dword [ebp - 8]
mov dword [edx + 4], eax
pop esi
mov ebx, dword [ebp + 0xc]
or byte [ebx - 0xb7fd40], 0xb0
add eax, edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [0x695434]
cmp byte [eax + 0xc], 0
je 0x3245031b
mov eax, dword [0x695428]
cmp dword [eax], 2
je 0x45051b
mov eax, dword [eax]
clc
test byte [eax + 5], 8
je 0x45051b
mov eax, dword [eax]
clc
mov eax, dword [eax + 4]
and eax, 0xfffff7ff
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x14]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x18]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x1c]
push eax
push 0
mov eax, dword [0x6987f8]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x20]
push eax
mov ecx, 0x45030c
mov edx, dword [ebp - 8]
add edx, 0x4c
mov eax, dword [eax]
clc
mov eax, dword [eax + 8]
call fcn.00408cf2
mov edx, dword [ebp - 4]
mov dword [edx + 0x1b4], eax
mov eax, dword [ebp - 4]
cmp dword [eax + 0x750101b4], 0x77
je 0x450573
push 0
push 1
push 0xcf
mov eax, dword [eax]
cld
mov eax, dword [eax + 0x750101b4]
push eax
call fcn.00408a16
jmp 0x450573
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x10]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x14]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x18]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x1c]
push eax
push 0
mov eax, dword [0x6987f8]
push eax
mov eax, dword [eax]
clc
mov eax, dword [eax + 0x20]
push eax
mov ecx, 0x45030c
mov edx, dword [ebp - 8]
add edx, 0x4c
mov eax, dword [eax]
clc
mov eax, dword [eax + 8]
call fcn.00408cf2
mov edx, dword [ebp - 4]
mov dword [edx + 0x1b4], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
push eax
push 0
push 0xc
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x750101b4]
push eax
call fcn.00408a16
pop ecx
pop ecx
add al, ch
add byte [eax], al
add byte [eax], al
add byte [eax], al
out 0x40, eax
add byte [ebx + 0x5589f8ec], cl
clc
mov dword [ebp - 4], eax
push 0
push 0
push 0xb0
mov eax, dword [eax]
cld
call fcn.0047ca9e
push eax
call fcn.00408a16
shr eax, 0x10
movzx eax, ax
mov edx, dword [ebp - 8]
mov dword [edx], eax
push 0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
push eax
push 0xc9
mov eax, dword [eax]
cld
call fcn.0047ca9e
push eax
call fcn.00408a16
mov edx, dword [ebp - 8]
mov dword [edx + 4], eax
push 0
push 0xffffffffffffffff
push 0xbb
mov eax, dword [eax]
cld
call fcn.0047ca9e
push eax
call fcn.00408a16
mov edx, dword [ebp - 8]
sub dword [edx], eax
pop ecx
pop ecx
add al, ch
nop
out 0x40, eax
add byte [ebx + 0x5589f4ec], cl
clc
mov dword [ebp - 4], eax
push 0
mov eax, dword [ebp - 8]
mov eax, dword [eax + 4]
push eax
push 0xbb
mov eax, dword [eax]
cld
call fcn.0047ca9e
push eax
call fcn.00408a16
mov edx, dword [ebp - 8]
add eax, dword [edx]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [eax]
hlt